Skip to content

Commit

Permalink
Fix sampling overrides for http.target when url.query is present (#3588)
Browse files Browse the repository at this point in the history
  • Loading branch information
heyams authored Mar 12, 2024
1 parent 5e6d875 commit 0cfea61
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,8 @@ private LazyHttpTarget(Attributes attributes) {
private String get() {
if (!initialized) {
String urlQuery = attributes.get(SemanticAttributes.URL_QUERY);
value = attributes.get(SemanticAttributes.URL_PATH) + (urlQuery != null ? urlQuery : "");
value =
attributes.get(SemanticAttributes.URL_PATH) + (urlQuery != null ? "?" + urlQuery : "");
initialized = true;
}
return value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ private int doGetInternal(HttpServletRequest req) throws Exception {
executeStatement(connection);
connection.close();
return 200;
} else if (pathInfo.equals("/test")) {
Connection connection = getHsqldbConnection();
connection.clearWarnings();
return 200;
} else {
throw new ServletException("Unexpected url: " + pathInfo);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.microsoft.applicationinsights.smoketest;

import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_11_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_17;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_19;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_20;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8;
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.entry;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

@UseAgent("applicationinsights-urlquery.json")
abstract class UrlQuerySamplingOverridesTest {

@RegisterExtension
static final SmokeTestExtension testing =
SmokeTestExtension.builder().setUseDefaultHttpPort().build();

@Test
@TargetUri(value = "/test?query")
void testUrlQuery() throws Exception {
Telemetry telemetry = testing.getTelemetry(0);

assertThat(telemetry.rd.getName()).isEqualTo("GET /SamplingOverrides/*");
assertThat(telemetry.rd.getUrl()).endsWith("http://localhost/SamplingOverrides/test?query");
assertThat(telemetry.rd.getResponseCode()).isEqualTo("200");
assertThat(telemetry.rd.getSuccess()).isTrue();
assertThat(telemetry.rd.getSource()).isNull();
assertThat(telemetry.rd.getProperties())
.containsExactly(entry("_MS.ProcessedByMetricExtractors", "True"));
}

@Environment(TOMCAT_8_JAVA_8)
static class Tomcat8Java8Test extends UrlQuerySamplingOverridesTest {}

@Environment(TOMCAT_8_JAVA_8_OPENJ9)
static class Tomcat8Java8OpenJ9Test extends UrlQuerySamplingOverridesTest {}

@Environment(TOMCAT_8_JAVA_11)
static class Tomcat8Java11Test extends UrlQuerySamplingOverridesTest {}

@Environment(TOMCAT_8_JAVA_11_OPENJ9)
static class Tomcat8Java11OpenJ9Test extends UrlQuerySamplingOverridesTest {}

@Environment(TOMCAT_8_JAVA_17)
static class Tomcat8Java17Test extends UrlQuerySamplingOverridesTest {}

@Environment(TOMCAT_8_JAVA_19)
static class Tomcat8Java19Test extends UrlQuerySamplingOverridesTest {}

@Environment(TOMCAT_8_JAVA_20)
static class Tomcat8Java20Test extends UrlQuerySamplingOverridesTest {}

@Environment(WILDFLY_13_JAVA_8)
static class Wildfly13Java8Test extends UrlQuerySamplingOverridesTest {}

@Environment(WILDFLY_13_JAVA_8_OPENJ9)
static class Wildfly13Java8OpenJ9Test extends UrlQuerySamplingOverridesTest {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"role": {
"name": "testrolename",
"instance": "testroleinstance"
},
"sampling": {
"percentage": 50,
"overrides": [
{
"telemetryType": "request",
"attributes": [
{
"key": "http.target",
"value": "/SamplingOverrides/test?query",
"matchType": "strict"
}
],
"percentage": 100
}
]
}
}

0 comments on commit 0cfea61

Please sign in to comment.