|
@@ -8,12 +8,8 @@
|
|
|
package org.elasticsearch.xpack.profiling;
|
|
|
|
|
|
import org.elasticsearch.common.ParsingException;
|
|
|
-import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
|
|
-import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
|
|
|
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
-import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
|
-import org.elasticsearch.index.query.QueryBuilder;
|
|
|
import org.elasticsearch.index.query.RangeQueryBuilder;
|
|
|
import org.elasticsearch.search.SearchModule;
|
|
|
import org.elasticsearch.test.ESTestCase;
|
|
@@ -28,47 +24,6 @@ import java.util.Set;
|
|
|
import static java.util.Collections.emptyList;
|
|
|
|
|
|
public class GetStackTracesRequestTests extends ESTestCase {
|
|
|
- public void testSerialization() throws IOException {
|
|
|
- Integer sampleSize = randomIntBetween(1, Integer.MAX_VALUE);
|
|
|
- Double requestedDuration = randomBoolean() ? randomDoubleBetween(0.001d, Double.MAX_VALUE, true) : null;
|
|
|
- Double awsCostFactor = randomBoolean() ? randomDoubleBetween(0.1d, 5.0d, true) : null;
|
|
|
- Double customCO2PerKWH = randomBoolean() ? randomDoubleBetween(0.000001d, 0.001d, true) : null;
|
|
|
- Double datacenterPUE = randomBoolean() ? randomDoubleBetween(1.0d, 3.0d, true) : null;
|
|
|
- Double perCoreWattX86 = randomBoolean() ? randomDoubleBetween(0.01d, 20.0d, true) : null;
|
|
|
- Double perCoreWattARM64 = randomBoolean() ? randomDoubleBetween(0.01d, 20.0d, true) : null;
|
|
|
- Double customCostPerCoreHour = randomBoolean() ? randomDoubleBetween(0.001d, 1000.0d, true) : null;
|
|
|
- QueryBuilder query = randomBoolean() ? new BoolQueryBuilder() : null;
|
|
|
-
|
|
|
- GetStackTracesRequest request = new GetStackTracesRequest(
|
|
|
- sampleSize,
|
|
|
- requestedDuration,
|
|
|
- awsCostFactor,
|
|
|
- query,
|
|
|
- null,
|
|
|
- null,
|
|
|
- customCO2PerKWH,
|
|
|
- datacenterPUE,
|
|
|
- perCoreWattX86,
|
|
|
- perCoreWattARM64,
|
|
|
- customCostPerCoreHour
|
|
|
- );
|
|
|
- try (BytesStreamOutput out = new BytesStreamOutput()) {
|
|
|
- request.writeTo(out);
|
|
|
- try (NamedWriteableAwareStreamInput in = new NamedWriteableAwareStreamInput(out.bytes().streamInput(), writableRegistry())) {
|
|
|
- GetStackTracesRequest deserialized = new GetStackTracesRequest(in);
|
|
|
- assertEquals(sampleSize, deserialized.getSampleSize());
|
|
|
- assertEquals(requestedDuration, deserialized.getRequestedDuration());
|
|
|
- assertEquals(awsCostFactor, deserialized.getAwsCostFactor());
|
|
|
- assertEquals(customCO2PerKWH, deserialized.getCustomCO2PerKWH());
|
|
|
- assertEquals(datacenterPUE, deserialized.getCustomDatacenterPUE());
|
|
|
- assertEquals(perCoreWattX86, deserialized.getCustomPerCoreWattX86());
|
|
|
- assertEquals(perCoreWattARM64, deserialized.getCustomPerCoreWattARM64());
|
|
|
- assertEquals(customCostPerCoreHour, deserialized.getCustomCostPerCoreHour());
|
|
|
- assertEquals(query, deserialized.getQuery());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
public void testParseValidXContent() throws IOException {
|
|
|
try (XContentParser content = createParser(XContentFactory.jsonBuilder()
|
|
|
//tag::noformat
|
|
@@ -93,6 +48,15 @@ public class GetStackTracesRequestTests extends ESTestCase {
|
|
|
assertEquals(Double.valueOf(100.54d), request.getRequestedDuration());
|
|
|
// a basic check suffices here
|
|
|
assertEquals("@timestamp", ((RangeQueryBuilder) request.getQuery()).fieldName());
|
|
|
+ // Expect the default values
|
|
|
+ assertNull(request.getIndices());
|
|
|
+ assertNull(request.getStackTraceIds());
|
|
|
+ assertNull(request.getAwsCostFactor());
|
|
|
+ assertNull(request.getCustomCO2PerKWH());
|
|
|
+ assertNull(request.getCustomDatacenterPUE());
|
|
|
+ assertNull(request.getCustomCostPerCoreHour());
|
|
|
+ assertNull(request.getCustomPerCoreWattX86());
|
|
|
+ assertNull(request.getCustomPerCoreWattARM64());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -124,7 +88,57 @@ public class GetStackTracesRequestTests extends ESTestCase {
|
|
|
assertEquals("@timestamp", ((RangeQueryBuilder) request.getQuery()).fieldName());
|
|
|
|
|
|
// Expect the default values
|
|
|
- assertEquals(null, request.getRequestedDuration());
|
|
|
+ assertNull(request.getRequestedDuration());
|
|
|
+ assertNull(request.getAwsCostFactor());
|
|
|
+ assertNull(request.getCustomCO2PerKWH());
|
|
|
+ assertNull(request.getCustomDatacenterPUE());
|
|
|
+ assertNull(request.getCustomCostPerCoreHour());
|
|
|
+ assertNull(request.getCustomPerCoreWattX86());
|
|
|
+ assertNull(request.getCustomPerCoreWattARM64());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void testParseValidXContentWithCustomCostAndCO2Data() throws IOException {
|
|
|
+ try (XContentParser content = createParser(XContentFactory.jsonBuilder()
|
|
|
+ //tag::noformat
|
|
|
+ .startObject()
|
|
|
+ .field("sample_size", 2000)
|
|
|
+ .field("requested_duration", 100.54d)
|
|
|
+ .field("aws_cost_factor", 7.3d)
|
|
|
+ .field("co2_per_kwh", 22.4d)
|
|
|
+ .field("datacenter_pue", 1.05d)
|
|
|
+ .field("cost_per_core_hour", 3.32d)
|
|
|
+ .field("per_core_watt_x86", 7.2d)
|
|
|
+ .field("per_core_watt_arm64", 2.82d)
|
|
|
+ .startObject("query")
|
|
|
+ .startObject("range")
|
|
|
+ .startObject("@timestamp")
|
|
|
+ .field("gte", "2022-10-05")
|
|
|
+ .endObject()
|
|
|
+ .endObject()
|
|
|
+ .endObject()
|
|
|
+ .endObject()
|
|
|
+ //end::noformat
|
|
|
+ )) {
|
|
|
+
|
|
|
+ GetStackTracesRequest request = new GetStackTracesRequest();
|
|
|
+ request.parseXContent(content);
|
|
|
+
|
|
|
+ assertEquals(Integer.valueOf(2000), request.getSampleSize());
|
|
|
+ assertEquals(Double.valueOf(100.54d), request.getRequestedDuration());
|
|
|
+ assertEquals(Double.valueOf(7.3d), request.getAwsCostFactor());
|
|
|
+ assertEquals(Double.valueOf(22.4d), request.getCustomCO2PerKWH());
|
|
|
+ assertEquals(Double.valueOf(1.05d), request.getCustomDatacenterPUE());
|
|
|
+ assertEquals(Double.valueOf(3.32d), request.getCustomCostPerCoreHour());
|
|
|
+ assertEquals(Double.valueOf(7.2d), request.getCustomPerCoreWattX86());
|
|
|
+ assertEquals(Double.valueOf(2.82d), request.getCustomPerCoreWattARM64());
|
|
|
+
|
|
|
+ // a basic check suffices here
|
|
|
+ assertEquals("@timestamp", ((RangeQueryBuilder) request.getQuery()).fieldName());
|
|
|
+
|
|
|
+ // Expect the default values
|
|
|
+ assertNull(request.getIndices());
|
|
|
+ assertNull(request.getStackTraceIds());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -246,7 +260,6 @@ public class GetStackTracesRequestTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testConsidersDefaultIndicesInRelatedIndices() {
|
|
|
- String customIndex = randomAlphaOfLength(5);
|
|
|
GetStackTracesRequest request = new GetStackTracesRequest(1, 1.0d, 1.0d, null, null, null, null, null, null, null, null);
|
|
|
String[] indices = request.indices();
|
|
|
assertEquals(15, indices.length);
|