Skip to content

Commit 0cfea61

Browse files
authored
Fix sampling overrides for http.target when url.query is present (#3588)
1 parent 5e6d875 commit 0cfea61

File tree

4 files changed

+96
-1
lines changed

4 files changed

+96
-1
lines changed

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/sampling/SamplingOverrides.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,8 @@ private LazyHttpTarget(Attributes attributes) {
294294
private String get() {
295295
if (!initialized) {
296296
String urlQuery = attributes.get(SemanticAttributes.URL_QUERY);
297-
value = attributes.get(SemanticAttributes.URL_PATH) + (urlQuery != null ? urlQuery : "");
297+
value =
298+
attributes.get(SemanticAttributes.URL_PATH) + (urlQuery != null ? "?" + urlQuery : "");
298299
initialized = true;
299300
}
300301
return value;

smoke-tests/apps/SamplingOverrides/src/main/java/com/microsoft/applicationinsights/smoketestapp/SamplingOverridesServlet.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ private int doGetInternal(HttpServletRequest req) throws Exception {
7373
executeStatement(connection);
7474
connection.close();
7575
return 200;
76+
} else if (pathInfo.equals("/test")) {
77+
Connection connection = getHsqldbConnection();
78+
connection.clearWarnings();
79+
return 200;
7680
} else {
7781
throw new ServletException("Unexpected url: " + pathInfo);
7882
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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_19;
10+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_20;
11+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8;
12+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9;
13+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8;
14+
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9;
15+
import static org.assertj.core.api.Assertions.assertThat;
16+
import static org.assertj.core.api.AssertionsForClassTypes.entry;
17+
18+
import org.junit.jupiter.api.Test;
19+
import org.junit.jupiter.api.extension.RegisterExtension;
20+
21+
@UseAgent("applicationinsights-urlquery.json")
22+
abstract class UrlQuerySamplingOverridesTest {
23+
24+
@RegisterExtension
25+
static final SmokeTestExtension testing =
26+
SmokeTestExtension.builder().setUseDefaultHttpPort().build();
27+
28+
@Test
29+
@TargetUri(value = "/test?query")
30+
void testUrlQuery() throws Exception {
31+
Telemetry telemetry = testing.getTelemetry(0);
32+
33+
assertThat(telemetry.rd.getName()).isEqualTo("GET /SamplingOverrides/*");
34+
assertThat(telemetry.rd.getUrl()).endsWith("http://localhost/SamplingOverrides/test?query");
35+
assertThat(telemetry.rd.getResponseCode()).isEqualTo("200");
36+
assertThat(telemetry.rd.getSuccess()).isTrue();
37+
assertThat(telemetry.rd.getSource()).isNull();
38+
assertThat(telemetry.rd.getProperties())
39+
.containsExactly(entry("_MS.ProcessedByMetricExtractors", "True"));
40+
}
41+
42+
@Environment(TOMCAT_8_JAVA_8)
43+
static class Tomcat8Java8Test extends UrlQuerySamplingOverridesTest {}
44+
45+
@Environment(TOMCAT_8_JAVA_8_OPENJ9)
46+
static class Tomcat8Java8OpenJ9Test extends UrlQuerySamplingOverridesTest {}
47+
48+
@Environment(TOMCAT_8_JAVA_11)
49+
static class Tomcat8Java11Test extends UrlQuerySamplingOverridesTest {}
50+
51+
@Environment(TOMCAT_8_JAVA_11_OPENJ9)
52+
static class Tomcat8Java11OpenJ9Test extends UrlQuerySamplingOverridesTest {}
53+
54+
@Environment(TOMCAT_8_JAVA_17)
55+
static class Tomcat8Java17Test extends UrlQuerySamplingOverridesTest {}
56+
57+
@Environment(TOMCAT_8_JAVA_19)
58+
static class Tomcat8Java19Test extends UrlQuerySamplingOverridesTest {}
59+
60+
@Environment(TOMCAT_8_JAVA_20)
61+
static class Tomcat8Java20Test extends UrlQuerySamplingOverridesTest {}
62+
63+
@Environment(WILDFLY_13_JAVA_8)
64+
static class Wildfly13Java8Test extends UrlQuerySamplingOverridesTest {}
65+
66+
@Environment(WILDFLY_13_JAVA_8_OPENJ9)
67+
static class Wildfly13Java8OpenJ9Test extends UrlQuerySamplingOverridesTest {}
68+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"role": {
3+
"name": "testrolename",
4+
"instance": "testroleinstance"
5+
},
6+
"sampling": {
7+
"percentage": 50,
8+
"overrides": [
9+
{
10+
"telemetryType": "request",
11+
"attributes": [
12+
{
13+
"key": "http.target",
14+
"value": "/SamplingOverrides/test?query",
15+
"matchType": "strict"
16+
}
17+
],
18+
"percentage": 100
19+
}
20+
]
21+
}
22+
}

0 commit comments

Comments
 (0)