Skip to content

Commit 47ccc0c

Browse files
committed
Fix
1 parent 2e3dbae commit 47ccc0c

File tree

2 files changed

+62
-51
lines changed

2 files changed

+62
-51
lines changed

agent/agent-profiler/agent-alerting-api/src/main/java/com/microsoft/applicationinsights/alerting/aiconfig/AlertingConfig.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public static RequestFilter fromJson(JsonReader jsonReader) throws IOException {
5151
reader -> {
5252
RequestFilter deserializedRequestFilter = new RequestFilter();
5353
while (reader.nextToken() != JsonToken.END_OBJECT) {
54+
reader.nextToken();
5455
String fieldName = reader.getFieldName();
5556
if ("type".equals(fieldName)) {
5657
deserializedRequestFilter.setType(RequestFilterType.valueOf(reader.getString()));
@@ -109,6 +110,7 @@ public static RequestAggregationConfig fromJson(JsonReader jsonReader) throws IO
109110
RequestAggregationConfig deserializedRequestAggregationConfig =
110111
new RequestAggregationConfig();
111112
while (reader.nextToken() != JsonToken.END_OBJECT) {
113+
reader.nextToken();
112114
String fieldName = reader.getFieldName();
113115
if ("thresholdMillis".equals(fieldName)) {
114116
deserializedRequestAggregationConfig.setThresholdMillis(jsonReader.getInt());
@@ -174,10 +176,11 @@ public static RequestAggregation fromJson(JsonReader jsonReader) throws IOExcept
174176
reader -> {
175177
RequestAggregation deserializedRequestAggregation = new RequestAggregation();
176178
while (reader.nextToken() != JsonToken.END_OBJECT) {
179+
reader.nextToken();
177180
String fieldName = reader.getFieldName();
178181
if ("type".equals(fieldName)) {
179182
deserializedRequestAggregation.setType(
180-
RequestAggregationType.valueOf(jsonReader.getString()));
183+
RequestAggregationType.valueOf(reader.getString()));
181184
} else if ("windowSizeMillis".equals(fieldName)) {
182185
deserializedRequestAggregation.setWindowSizeMillis(jsonReader.getLong());
183186
} else if ("configuration".equals(fieldName)) {
@@ -241,12 +244,13 @@ public static RequestTriggerThreshold fromJson(JsonReader jsonReader) throws IOE
241244
RequestTriggerThreshold deserializedRequestTriggerThreshold =
242245
new RequestTriggerThreshold();
243246
while (reader.nextToken() != JsonToken.END_OBJECT) {
247+
reader.nextToken();
244248
String fieldName = reader.getFieldName();
245249
if ("type".equals(fieldName)) {
246250
deserializedRequestTriggerThreshold.setType(
247-
RequestTriggerThresholdType.valueOf(jsonReader.getString()));
251+
RequestTriggerThresholdType.valueOf(reader.getString()));
248252
} else if ("value".equals(fieldName)) {
249-
deserializedRequestTriggerThreshold.setValue(jsonReader.getFloat());
253+
deserializedRequestTriggerThreshold.setValue(reader.getFloat());
250254
} else {
251255
reader.skipChildren();
252256
}
@@ -298,12 +302,13 @@ public static RequestTriggerThrottling fromJson(JsonReader jsonReader) throws IO
298302
RequestTriggerThrottling deserializedRequestTriggerThrottling =
299303
new RequestTriggerThrottling();
300304
while (reader.nextToken() != JsonToken.END_OBJECT) {
305+
reader.nextToken();
301306
String fieldName = reader.getFieldName();
302307
if ("type".equals(fieldName)) {
303308
deserializedRequestTriggerThrottling.setType(
304-
RequestTriggerThrottlingType.valueOf(jsonReader.getString()));
309+
RequestTriggerThrottlingType.valueOf(reader.getString()));
305310
} else if ("value".equals(fieldName)) {
306-
deserializedRequestTriggerThrottling.setValue(jsonReader.getLong());
311+
deserializedRequestTriggerThrottling.setValue(reader.getLong());
307312
} else {
308313
reader.skipChildren();
309314
}
@@ -408,24 +413,22 @@ public static RequestTrigger fromJson(JsonReader jsonReader) throws IOException
408413
reader -> {
409414
RequestTrigger deserializedRequestTrigger = new RequestTrigger();
410415
while (reader.nextToken() != JsonToken.END_OBJECT) {
416+
reader.nextToken();
411417
String fieldName = reader.getFieldName();
412418
if ("name".equals(fieldName)) {
413-
deserializedRequestTrigger.setName(jsonReader.getString());
419+
deserializedRequestTrigger.setName(reader.getString());
414420
} else if ("type".equals(fieldName)) {
415-
deserializedRequestTrigger.setType(
416-
RequestTriggerType.valueOf(jsonReader.getString()));
421+
deserializedRequestTrigger.setType(RequestTriggerType.valueOf(reader.getString()));
417422
} else if ("filter".equals(fieldName)) {
418-
deserializedRequestTrigger.setFilter(RequestFilter.fromJson(jsonReader));
423+
deserializedRequestTrigger.setFilter(RequestFilter.fromJson(reader));
419424
} else if ("aggregation".equals(fieldName)) {
420-
deserializedRequestTrigger.setAggregation(RequestAggregation.fromJson(jsonReader));
425+
deserializedRequestTrigger.setAggregation(RequestAggregation.fromJson(reader));
421426
} else if ("threshold".equals(fieldName)) {
422-
deserializedRequestTrigger.setThreshold(
423-
RequestTriggerThreshold.fromJson(jsonReader));
427+
deserializedRequestTrigger.setThreshold(RequestTriggerThreshold.fromJson(reader));
424428
} else if ("throttling".equals(fieldName)) {
425-
deserializedRequestTrigger.setThrottling(
426-
RequestTriggerThrottling.fromJson(jsonReader));
429+
deserializedRequestTrigger.setThrottling(RequestTriggerThrottling.fromJson(reader));
427430
} else if ("profileDuration".equals(fieldName)) {
428-
deserializedRequestTrigger.setProfileDuration(jsonReader.getLong());
431+
deserializedRequestTrigger.setProfileDuration(reader.getLong());
429432
} else {
430433
reader.skipChildren();
431434
}

agent/agent-tooling/src/test/java/com/microsoft/applicationinsights/agent/internal/profiler/triggers/RequestAlertPipelineBuilderTest.java

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33

44
package com.microsoft.applicationinsights.agent.internal.profiler.triggers;
55

6-
import com.fasterxml.jackson.core.JsonProcessingException;
7-
import com.fasterxml.jackson.databind.JsonNode;
8-
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import com.azure.json.JsonProviders;
7+
import com.azure.json.JsonReader;
8+
import com.azure.json.JsonWriter;
99
import com.microsoft.applicationinsights.agent.internal.configuration.Configuration;
1010
import com.microsoft.applicationinsights.agent.internal.profiler.testutil.TestTimeSource;
1111
import com.microsoft.applicationinsights.alerting.aiconfig.AlertingConfig;
12+
import java.io.ByteArrayOutputStream;
13+
import java.io.IOException;
1214
import java.time.Instant;
1315
import java.util.List;
1416
import java.util.stream.Collectors;
@@ -20,25 +22,44 @@
2022

2123
public class RequestAlertPipelineBuilderTest {
2224

25+
@SuppressWarnings("DefaultCharset")
2326
@Test
24-
public void configurationIsCorrectlyDuplicated() throws JsonProcessingException {
25-
Configuration.RequestTrigger triggerConfig = new Configuration.RequestTrigger();
26-
triggerConfig.filter.type = Configuration.RequestFilterType.NAME_REGEX;
27-
triggerConfig.filter.value = "foo.*";
28-
triggerConfig.threshold.value = 0.75f;
27+
public void configurationIsCorrectlyDuplicated() throws IOException {
28+
Configuration.RequestTrigger expectedRequesttrigger = new Configuration.RequestTrigger();
29+
expectedRequesttrigger.filter.type = Configuration.RequestFilterType.NAME_REGEX;
30+
expectedRequesttrigger.filter.value = "foo.*";
31+
expectedRequesttrigger.threshold.value = 0.75f;
2932

3033
TestTimeSource timeSource = new TestTimeSource();
3134
timeSource.setNow(Instant.EPOCH);
3235

3336
AlertingConfig.RequestTrigger config =
34-
RequestAlertPipelineBuilder.buildRequestTriggerConfiguration(triggerConfig);
37+
RequestAlertPipelineBuilder.buildRequestTriggerConfiguration(expectedRequesttrigger);
3538

36-
ObjectMapper mapper = new ObjectMapper();
37-
String configurationStr = mapper.writeValueAsString(triggerConfig);
38-
String alertingConfigStr = mapper.writeValueAsString(config);
39-
;
39+
String alertingConfigStr;
40+
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
41+
JsonWriter writer = JsonProviders.createWriter(outputStream)) {
42+
config.toJson(writer).flush();
43+
alertingConfigStr = outputStream.toString();
44+
}
45+
AlertingConfig.RequestTrigger actualAlertingConfig;
46+
try (JsonReader reader = JsonProviders.createReader(alertingConfigStr)) {
47+
actualAlertingConfig = AlertingConfig.RequestTrigger.fromJson(reader);
48+
}
4049

41-
Assertions.assertEquals(configurationStr, alertingConfigStr);
50+
Assertions.assertEquals(expectedRequesttrigger.name, actualAlertingConfig.name);
51+
Assertions.assertEquals(expectedRequesttrigger.type.name(), actualAlertingConfig.type.name());
52+
Assertions.assertEquals(
53+
expectedRequesttrigger.filter.type.name(), actualAlertingConfig.filter.type.name());
54+
Assertions.assertEquals(expectedRequesttrigger.filter.value, actualAlertingConfig.filter.value);
55+
Assertions.assertEquals(
56+
expectedRequesttrigger.aggregation.type.name(),
57+
actualAlertingConfig.aggregation.type.name());
58+
Assertions.assertEquals(
59+
expectedRequesttrigger.threshold.type.name(), actualAlertingConfig.threshold.type.name());
60+
Assertions.assertEquals(expectedRequesttrigger.throttling, actualAlertingConfig.throttling);
61+
Assertions.assertEquals(
62+
expectedRequesttrigger.profileDuration, actualAlertingConfig.profileDuration);
4263
}
4364

4465
@TestFactory
@@ -52,28 +73,15 @@ public List<DynamicTest> configExamplesCanBeParsedToAlertApiConfig() {
5273
DynamicTest.dynamicTest(
5374
file,
5475
() -> {
55-
ObjectMapper mapper = new ObjectMapper();
56-
JsonNode array =
57-
mapper
58-
.readTree(
59-
RequestAlertPipelineBuilderTest.class
60-
.getClassLoader()
61-
.getResourceAsStream(file))
62-
.get("preview")
63-
.get("profiler")
64-
.withArray("requestTriggerEndpoints");
65-
66-
array.forEach(
67-
config -> {
68-
try {
69-
AlertingConfig.RequestTrigger alertingConfig =
70-
mapper.readValue(
71-
config.toPrettyString(), AlertingConfig.RequestTrigger.class);
72-
Assertions.assertNotNull(alertingConfig);
73-
} catch (JsonProcessingException e) {
74-
Assertions.fail(e);
75-
}
76-
});
76+
try (JsonReader reader =
77+
JsonProviders.createReader(
78+
RequestAlertPipelineBuilderTest.class
79+
.getClassLoader()
80+
.getResourceAsStream(file))) {
81+
AlertingConfig.RequestTrigger alertingConfig =
82+
AlertingConfig.RequestTrigger.fromJson(reader);
83+
Assertions.assertNotNull(alertingConfig);
84+
}
7785
}))
7886
.collect(Collectors.toList());
7987
}

0 commit comments

Comments
 (0)