Skip to content

Commit 4c2377d

Browse files
harsimargithub-actions[bot]
authored andcommitted
add one test, it is currently failing
1 parent 5d55461 commit 4c2377d

File tree

6 files changed

+230
-7
lines changed

6 files changed

+230
-7
lines changed

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public class SecondEntryPoint
9090
private static final ClientLogger startupLogger =
9191
new ClientLogger("com.microsoft.applicationinsights.agent");
9292
private static File tempDir;
93-
private static final String SENT_TO_AMW = "SENT_TO_AMW";
93+
private static final String SENT_TO_AMW = "sent.to.amw";
9494

9595
@Nullable private static AzureMonitorLogFilteringProcessor logFilteringProcessor;
9696

smoke-tests/apps/OpenTelemetryMetric/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ dependencies {
77
exclude("org.springframework.boot", "spring-boot-starter-tomcat")
88
}
99
implementation("io.opentelemetry:opentelemetry-api:1.12.0")
10+
11+
smokeTestImplementation("org.mock-server:mockserver-netty:5.15.0:shaded")
12+
smokeTestImplementation("org.awaitility:awaitility:4.2.0")
13+
smokeTestImplementation("io.opentelemetry.proto:opentelemetry-proto:0.14.0-alpha")
1014
}
1115

1216
configurations.all {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
package com.microsoft.applicationinsights.smoketest;
5+
6+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11;
7+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11_OPENJ9;
8+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_17;
9+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_17_OPENJ9;
10+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_21;
11+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_21_OPENJ9;
12+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_23;
13+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_23_OPENJ9;
14+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8;
15+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9;
16+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8;
17+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9;
18+
import static java.util.concurrent.TimeUnit.SECONDS;
19+
import static org.assertj.core.api.Assertions.assertThat;
20+
import static org.mockserver.model.HttpRequest.request;
21+
import static org.testcontainers.shaded.org.awaitility.Awaitility.await;
22+
23+
import com.microsoft.applicationinsights.smoketest.schemav2.Data;
24+
import com.microsoft.applicationinsights.smoketest.schemav2.DataPoint;
25+
import com.microsoft.applicationinsights.smoketest.schemav2.Envelope;
26+
import com.microsoft.applicationinsights.smoketest.schemav2.MetricData;
27+
import com.microsoft.applicationinsights.smoketest.schemav2.RequestData;
28+
import io.opentelemetry.proto.metrics.v1.Metric;
29+
import java.util.Comparator;
30+
import java.util.List;
31+
import java.util.Map;
32+
import java.util.stream.Collectors;
33+
import org.junit.jupiter.api.Test;
34+
import org.junit.jupiter.api.extension.RegisterExtension;
35+
import org.mockserver.model.HttpRequest;
36+
37+
@UseAgent
38+
abstract class OpenTelemetryMetricTestToAmw {
39+
40+
@RegisterExtension
41+
static final SmokeTestExtension testing = SmokeTestExtension.builder()
42+
.useOtlpViaEnvVars()
43+
.build();
44+
45+
@Test
46+
@TargetUri("/trackDoubleCounterMetric")
47+
void trackDoubleCounterMetric() throws Exception {
48+
validateCounterMetric("trackDoubleCounterMetric");
49+
validateOtlpMetricsReceived("trackDoubleCounterMetric");
50+
}
51+
52+
private void validateCounterMetric(String name) throws Exception {
53+
List<Envelope> rdList = testing.mockedIngestion.waitForItems("RequestData", 1);
54+
List<Envelope> metrics = testing.mockedIngestion.waitForMetricItems(name, 3);
55+
56+
metrics.sort(
57+
Comparator.comparing(
58+
obj -> {
59+
MetricData metricData = (MetricData) ((Data<?>) obj.getData()).getBaseData();
60+
List<DataPoint> dataPointList = metricData.getMetrics();
61+
DataPoint dataPoint = dataPointList.get(0);
62+
return dataPoint.getValue();
63+
}));
64+
65+
Envelope rdEnvelope = rdList.get(0);
66+
RequestData rd = (RequestData) ((Data<?>) rdEnvelope.getData()).getBaseData();
67+
assertThat(rd.getName()).isEqualTo("GET /OpenTelemetryMetric/" + name);
68+
69+
// validate 1st metric
70+
Envelope envelope1 = metrics.get(0);
71+
Envelope envelope2 = metrics.get(1);
72+
Envelope envelope3 = metrics.get(2);
73+
74+
assertThat(rdEnvelope.getSampleRate()).isNull();
75+
assertThat(envelope1.getSampleRate()).isNull(); // metrics are never sent with sample rate
76+
assertThat(envelope2.getSampleRate()).isNull(); // metrics are never sent with sample rate
77+
assertThat(envelope3.getSampleRate()).isNull(); // metrics are never sent with sample rate
78+
79+
// validate tags
80+
Map<String, String> tags1 = envelope1.getTags();
81+
assertThat(tags1.get("ai.internal.sdkVersion")).isNotNull();
82+
assertThat(tags1).containsEntry("ai.cloud.roleInstance", "testroleinstance");
83+
assertThat(tags1).containsEntry("ai.cloud.role", "testrolename");
84+
assertThat(tags1).containsEntry("ai.application.ver", "123");
85+
86+
// validate base data
87+
MetricData md1 = (MetricData) ((Data<?>) envelope1.getData()).getBaseData();
88+
List<DataPoint> dataPointList1 = md1.getMetrics();
89+
assertThat(dataPointList1).hasSize(1);
90+
DataPoint dp1 = dataPointList1.get(0);
91+
assertThat(dp1.getValue()).isEqualTo(2.0);
92+
assertThat(dp1.getName()).isEqualTo(name);
93+
94+
// validate custom dimension
95+
Map<String, String> properties1 = md1.getProperties();
96+
assertThat(properties1).containsEntry("tag1", "abc");
97+
assertThat(properties1).containsEntry("tag2", "def");
98+
assertThat(properties1).containsEntry("name", "apple");
99+
assertThat(properties1).containsEntry("color", "green");
100+
assertThat(properties1).containsEntry("_MS.SentToAMW", "true");
101+
102+
// validate tags
103+
Map<String, String> tags2 = envelope2.getTags();
104+
assertThat(tags2.get("ai.internal.sdkVersion")).isNotNull();
105+
assertThat(tags2).containsEntry("ai.cloud.roleInstance", "testroleinstance");
106+
assertThat(tags2).containsEntry("ai.cloud.role", "testrolename");
107+
assertThat(tags2).containsEntry("ai.application.ver", "123");
108+
109+
// validate base data
110+
MetricData md2 = (MetricData) ((Data<?>) envelope2.getData()).getBaseData();
111+
List<DataPoint> dataPointList2 = md2.getMetrics();
112+
assertThat(dataPointList2).hasSize(1);
113+
DataPoint dp2 = dataPointList2.get(0);
114+
assertThat(dp2.getValue()).isEqualTo(6.0);
115+
assertThat(dp2.getName()).isEqualTo(name);
116+
117+
// validate custom dimension
118+
Map<String, String> properties2 = md2.getProperties();
119+
assertThat(properties2).containsEntry("tag1", "abc");
120+
assertThat(properties2).containsEntry("tag2", "def");
121+
assertThat(properties2).containsEntry("name", "apple");
122+
assertThat(properties2).containsEntry("color", "red");
123+
assertThat(properties2).containsEntry("_MS.SentToAMW", "true");
124+
125+
// validate tags
126+
Map<String, String> tags3 = envelope3.getTags();
127+
assertThat(tags3.get("ai.internal.sdkVersion")).isNotNull();
128+
assertThat(tags3).containsEntry("ai.cloud.roleInstance", "testroleinstance");
129+
assertThat(tags3).containsEntry("ai.cloud.role", "testrolename");
130+
assertThat(tags3).containsEntry("ai.application.ver", "123");
131+
132+
// validate base data
133+
MetricData md3 = (MetricData) ((Data<?>) envelope3.getData()).getBaseData();
134+
List<DataPoint> dataPointList3 = md3.getMetrics();
135+
assertThat(dataPointList3).hasSize(1);
136+
DataPoint dp3 = dataPointList3.get(0);
137+
assertThat(dp3.getValue()).isEqualTo(7.0);
138+
assertThat(dp3.getName()).isEqualTo(name);
139+
140+
// validate custom dimension
141+
Map<String, String> properties3 = md3.getProperties();
142+
assertThat(properties3).containsEntry("tag1", "abc");
143+
assertThat(properties3).containsEntry("tag2", "def");
144+
assertThat(properties3).containsEntry("name", "lemon");
145+
assertThat(properties3).containsEntry("color", "yellow");
146+
assertThat(properties3).containsEntry("_MS.SentToAMW", "true");
147+
148+
}
149+
150+
private void validateOtlpMetricsReceived(String name) throws Exception {
151+
await()
152+
.atMost(10, SECONDS)
153+
.untilAsserted(
154+
() -> {
155+
HttpRequest[] otlpRequests = testing.mockedOtlpIngestion.getCollectorServer()
156+
.retrieveRecordedRequests(request());
157+
158+
assertThat(otlpRequests).isNotEmpty();
159+
160+
List<Metric> otlpMetrics =
161+
testing.mockedOtlpIngestion.extractMetricsFromRequests(otlpRequests);
162+
163+
assertThat(otlpMetrics).hasSize(3);
164+
});
165+
}
166+
167+
@Environment(TOMCAT_8_JAVA_8)
168+
static class Tomcat8Java8Test extends OpenTelemetryMetricTestToAmw {}
169+
170+
@Environment(TOMCAT_8_JAVA_8_OPENJ9)
171+
static class Tomcat8Java8OpenJ9Test extends OpenTelemetryMetricTestToAmw {}
172+
173+
@Environment(TOMCAT_8_JAVA_11)
174+
static class Tomcat8Java11Test extends OpenTelemetryMetricTestToAmw {}
175+
176+
@Environment(TOMCAT_8_JAVA_11_OPENJ9)
177+
static class Tomcat8Java11OpenJ9Test extends OpenTelemetryMetricTestToAmw {}
178+
179+
@Environment(TOMCAT_8_JAVA_17)
180+
static class Tomcat8Java17Test extends OpenTelemetryMetricTestToAmw {}
181+
182+
@Environment(TOMCAT_8_JAVA_17_OPENJ9)
183+
static class Tomcat8Java17OpenJ9Test extends OpenTelemetryMetricTestToAmw {}
184+
185+
@Environment(TOMCAT_8_JAVA_21)
186+
static class Tomcat8Java21Test extends OpenTelemetryMetricTestToAmw {}
187+
188+
@Environment(TOMCAT_8_JAVA_21_OPENJ9)
189+
static class Tomcat8Java21OpenJ9Test extends OpenTelemetryMetricTestToAmw {}
190+
191+
@Environment(TOMCAT_8_JAVA_23)
192+
static class Tomcat8Java23Test extends OpenTelemetryMetricTestToAmw {}
193+
194+
@Environment(TOMCAT_8_JAVA_23_OPENJ9)
195+
static class Tomcat8Java23OpenJ9Test extends OpenTelemetryMetricTestToAmw {}
196+
197+
@Environment(WILDFLY_13_JAVA_8)
198+
static class Wildfly13Java8Test extends OpenTelemetryMetricTestToAmw {}
199+
200+
@Environment(WILDFLY_13_JAVA_8_OPENJ9)
201+
static class Wildfly13Java8OpenJ9Test extends OpenTelemetryMetricTestToAmw {}
202+
}

smoke-tests/apps/PreAggMetricsWithRoleNameOverridesAndSampling/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/PreAggMetricsWithRoleNameOverridesAndSamplingTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,15 +171,15 @@ private static void validateMetricData(
171171
Map<String, String> properties = metricData.getProperties();
172172
String expectedSuccess = "200".equals(resultCode) ? "True" : "False";
173173
if ("client".equals(type)) {
174-
assertThat(properties).hasSize(9);
174+
assertThat(properties).hasSize(10);
175175
assertThat(properties.get("_MS.MetricId")).isEqualTo("dependencies/duration");
176176
assertThat(properties.get("dependency/resultCode")).isEqualTo(resultCode);
177177
assertThat(properties.get("Dependency.Success")).isEqualTo(expectedSuccess);
178178
assertThat(properties.get("dependency/target"))
179179
.isEqualTo("host.testcontainers.internal:6060");
180180
assertThat(properties.get("Dependency.Type")).isEqualTo("Http");
181181
} else {
182-
assertThat(properties).hasSize(7);
182+
assertThat(properties).hasSize(8);
183183
assertThat(properties.get("_MS.MetricId")).isEqualTo("requests/duration");
184184
assertThat(properties.get("request/resultCode")).isEqualTo(resultCode);
185185
assertThat(properties.get("Request.Success")).isEqualTo(expectedSuccess);
@@ -188,6 +188,7 @@ private static void validateMetricData(
188188
assertThat(properties.get("cloud/roleInstance")).isEqualTo("testroleinstance");
189189
assertThat(properties.get("cloud/roleName")).isEqualTo(roleName);
190190
assertThat(properties.get("_MS.IsAutocollected")).isEqualTo("True");
191+
assertThat(properties.get("_MS.SentToAMW")).isEqualTo("false");
191192
}
192193

193194
@Environment(TOMCAT_8_JAVA_8)

smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/SmokeTestExtension.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ public class SmokeTestExtension
112112
private final List<String> jvmArgs;
113113
private final boolean useDefaultHttpPort;
114114
private final boolean useOtlpEndpoint;
115+
private final boolean useOtlpViaEnvVars;
115116

116117
public static SmokeTestExtension create() {
117118
return builder().build();
@@ -137,7 +138,8 @@ public static SmokeTestExtensionBuilder builder() {
137138
Map<String, String> envVars,
138139
List<String> jvmArgs,
139140
boolean useDefaultHttpPort,
140-
boolean useOtlpEndpoint) {
141+
boolean useOtlpEndpoint,
142+
boolean useOtlpViaEnvVars) {
141143
this.skipHealthCheck = skipHealthCheck;
142144
this.readOnly = readOnly;
143145
this.dependencyContainer = dependencyContainer;
@@ -167,6 +169,7 @@ public static SmokeTestExtensionBuilder builder() {
167169
this.jvmArgs = jvmArgs;
168170
this.useDefaultHttpPort = useDefaultHttpPort;
169171
this.useOtlpEndpoint = useOtlpEndpoint;
172+
this.useOtlpViaEnvVars = useOtlpViaEnvVars;
170173

171174
mockedIngestion = new MockedAppInsightsIngestionServer(useOld3xAgent);
172175
}
@@ -218,7 +221,7 @@ private void prepareEnvironment(Environment environment) throws Exception {
218221
mockedIngestion.startServer();
219222
mockedIngestion.setRequestLoggingEnabled(true);
220223
mockedIngestion.setQuickPulseRequestLoggingEnabled(true);
221-
if (useOtlpEndpoint) {
224+
if (useOtlpEndpoint || useOtlpViaEnvVars) {
222225
mockedOtlpIngestion.startServer();
223226
}
224227
network = Network.newNetwork();
@@ -422,6 +425,12 @@ private void startTestApplicationContainer() throws Exception {
422425
Testcontainers.exposeHostPorts(6060);
423426
Testcontainers.exposeHostPorts(4318);
424427

428+
if (useOtlpViaEnvVars) {
429+
envVars.put("OTEL_METRICS_EXPORTER", "otlp,azure_monitor");
430+
envVars.put("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT", FAKE_OTLP_INGESTION_ENDPOINT);
431+
envVars.put("OTEL_EXPORTER_OTLP_PROTOCOL", "http/protobuf");
432+
}
433+
425434
GenericContainer<?> container;
426435
if (REMOTE_DEBUG || useDefaultHttpPort) {
427436
FixedHostPortGenericContainer fixedPortContainer =
@@ -571,7 +580,7 @@ public void afterAll(ExtensionContext context) throws Exception {
571580
mockedIngestion.stopServer();
572581
mockedIngestion.setRequestLoggingEnabled(false);
573582
mockedIngestion.setQuickPulseRequestLoggingEnabled(false);
574-
if (useOtlpEndpoint) {
583+
if (useOtlpEndpoint || useOtlpViaEnvVars) {
575584
mockedOtlpIngestion.stopServer();
576585
}
577586
}

smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/SmokeTestExtensionBuilder.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class SmokeTestExtensionBuilder {
2929
private final List<String> jvmArgs = new ArrayList<>();
3030
private boolean useDefaultHttpPort;
3131
private boolean useOtlpEndpoint;
32+
private boolean useOtlpViaEnvVars;
3233

3334
public SmokeTestExtensionBuilder setDependencyContainer(
3435
String envVarName, GenericContainer<?> container) {
@@ -108,6 +109,11 @@ public SmokeTestExtensionBuilder useOtlpEndpoint() {
108109
return this;
109110
}
110111

112+
public SmokeTestExtensionBuilder useOtlpViaEnvVars() {
113+
this.useOtlpViaEnvVars = true;
114+
return this;
115+
}
116+
111117
public SmokeTestExtension build() {
112118
return new SmokeTestExtension(
113119
dependencyContainer,
@@ -125,6 +131,7 @@ public SmokeTestExtension build() {
125131
envVars,
126132
jvmArgs,
127133
useDefaultHttpPort,
128-
useOtlpEndpoint);
134+
useOtlpEndpoint,
135+
useOtlpViaEnvVars);
129136
}
130137
}

0 commit comments

Comments
 (0)