-
Notifications
You must be signed in to change notification settings - Fork 199
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make 3.4 Classic SDK work with prior 3.x Agent versions (#2531)
Resolves #2522 (comment) TODO add smoke tests
- Loading branch information
Showing
32 changed files
with
1,261 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
13 changes: 13 additions & 0 deletions
13
classic-sdk/core/src/main/java/com/microsoft/applicationinsights/TelemetryConfiguration.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Licensed under the MIT License. | ||
|
||
package com.microsoft.applicationinsights; | ||
|
||
// this class is required for interop with versions of the Java agent prior to 3.4.0 | ||
class TelemetryConfiguration { | ||
|
||
// this method is required for interop with versions of the Java agent prior to 3.4.0 | ||
boolean isTrackingDisabled() { | ||
return false; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
12 changes: 12 additions & 0 deletions
12
smoke-tests/apps/ClassicSdkWebInterop3xUsingOld3xAgent/build.gradle.kts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
plugins { | ||
id("ai.smoke-test-war") | ||
} | ||
|
||
dependencies { | ||
implementation(project(":classic-sdk:web")) | ||
implementation("org.springframework.boot:spring-boot-starter-web:2.1.7.RELEASE") { | ||
exclude("org.springframework.boot", "spring-boot-starter-tomcat") | ||
} | ||
// this dependency is needed to make wildfly happy | ||
implementation("org.reactivestreams:reactive-streams:1.0.3") | ||
} |
16 changes: 16 additions & 0 deletions
16
...ld3xAgent/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Licensed under the MIT License. | ||
|
||
package com.microsoft.applicationinsights.smoketestapp; | ||
|
||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
import org.springframework.boot.builder.SpringApplicationBuilder; | ||
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; | ||
|
||
@SpringBootApplication | ||
public class SpringBootApp extends SpringBootServletInitializer { | ||
@Override | ||
protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) { | ||
return applicationBuilder.sources(SpringBootApp.class); | ||
} | ||
} |
34 changes: 34 additions & 0 deletions
34
...d3xAgent/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Licensed under the MIT License. | ||
|
||
package com.microsoft.applicationinsights.smoketestapp; | ||
|
||
import com.microsoft.applicationinsights.telemetry.RequestTelemetry; | ||
import com.microsoft.applicationinsights.web.internal.ThreadContext; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
@RestController | ||
public class TestController { | ||
|
||
@GetMapping("/") | ||
public String root() { | ||
return "OK"; | ||
} | ||
|
||
@GetMapping("/test") | ||
public String test() { | ||
RequestTelemetry requestTelemetry = | ||
ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); | ||
requestTelemetry.getProperties().put("myattr1", "myvalue1"); | ||
requestTelemetry.getProperties().put("myattr2", "myvalue2"); | ||
requestTelemetry.getContext().getUser().setId("myuser"); | ||
requestTelemetry.getContext().getSession().setId("mysessionid"); | ||
requestTelemetry.getContext().getDevice().setOperatingSystem("mydeviceos"); | ||
requestTelemetry.getContext().getDevice().setOperatingSystemVersion("mydeviceosversion"); | ||
requestTelemetry.setName("myspanname"); | ||
requestTelemetry.setSource("mysource"); | ||
requestTelemetry.setSuccess(false); | ||
return "OK!"; | ||
} | ||
} |
72 changes: 72 additions & 0 deletions
72
...om/microsoft/applicationinsights/smoketest/ClassicSdkWebInterop3xUsingOld3xAgentTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Licensed under the MIT License. | ||
|
||
package com.microsoft.applicationinsights.smoketest; | ||
|
||
import static com.microsoft.applicationinsights.smoketest.WarEnvironmentValue.TOMCAT_8_JAVA_11; | ||
import static com.microsoft.applicationinsights.smoketest.WarEnvironmentValue.TOMCAT_8_JAVA_11_OPENJ9; | ||
import static com.microsoft.applicationinsights.smoketest.WarEnvironmentValue.TOMCAT_8_JAVA_17; | ||
import static com.microsoft.applicationinsights.smoketest.WarEnvironmentValue.TOMCAT_8_JAVA_18; | ||
import static com.microsoft.applicationinsights.smoketest.WarEnvironmentValue.TOMCAT_8_JAVA_19; | ||
import static com.microsoft.applicationinsights.smoketest.WarEnvironmentValue.TOMCAT_8_JAVA_8; | ||
import static com.microsoft.applicationinsights.smoketest.WarEnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9; | ||
import static com.microsoft.applicationinsights.smoketest.WarEnvironmentValue.WILDFLY_13_JAVA_8; | ||
import static com.microsoft.applicationinsights.smoketest.WarEnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9; | ||
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
import org.junit.jupiter.api.Test; | ||
import org.junit.jupiter.api.extension.RegisterExtension; | ||
|
||
@UseAgent | ||
abstract class ClassicSdkWebInterop3xUsingOld3xAgentTest { | ||
|
||
@RegisterExtension static final SmokeTestExtension testing = SmokeTestExtension.create(); | ||
|
||
@Test | ||
@TargetUri("/test") | ||
void doMostBasicTest() throws Exception { | ||
Telemetry telemetry = testing.getTelemetry(0); | ||
|
||
assertThat(telemetry.rd.getName()).isEqualTo("myspanname"); | ||
assertThat(telemetry.rd.getSource()).isEqualTo("mysource"); | ||
assertThat(telemetry.rdEnvelope.getTags()).containsEntry("ai.user.id", "myuser"); | ||
assertThat(telemetry.rdEnvelope.getTags()).containsEntry("ai.session.id", "mysessionid"); | ||
assertThat(telemetry.rdEnvelope.getTags()).containsEntry("ai.device.os", "mydeviceos"); | ||
assertThat(telemetry.rdEnvelope.getTags().get("ai.device.osVersion")) | ||
.isEqualTo("mydeviceosversion"); | ||
assertThat(telemetry.rd.getProperties()).containsEntry("myattr1", "myvalue1"); | ||
assertThat(telemetry.rd.getProperties()).containsEntry("myattr2", "myvalue2"); | ||
assertThat(telemetry.rd.getProperties()).hasSize(3); | ||
assertThat(telemetry.rd.getProperties()) | ||
.containsEntry("_MS.ProcessedByMetricExtractors", "True"); | ||
|
||
assertThat(telemetry.rd.getSuccess()).isFalse(); | ||
} | ||
|
||
@Environment(TOMCAT_8_JAVA_8) | ||
static class Tomcat8Java8Test extends ClassicSdkWebInterop3xUsingOld3xAgentTest {} | ||
|
||
@Environment(TOMCAT_8_JAVA_8_OPENJ9) | ||
static class Tomcat8Java8OpenJ9Test extends ClassicSdkWebInterop3xUsingOld3xAgentTest {} | ||
|
||
@Environment(TOMCAT_8_JAVA_11) | ||
static class Tomcat8Java11Test extends ClassicSdkWebInterop3xUsingOld3xAgentTest {} | ||
|
||
@Environment(TOMCAT_8_JAVA_11_OPENJ9) | ||
static class Tomcat8Java11OpenJ9Test extends ClassicSdkWebInterop3xUsingOld3xAgentTest {} | ||
|
||
@Environment(TOMCAT_8_JAVA_17) | ||
static class Tomcat8Java17Test extends ClassicSdkWebInterop3xUsingOld3xAgentTest {} | ||
|
||
@Environment(TOMCAT_8_JAVA_18) | ||
static class Tomcat8Java18Test extends ClassicSdkWebInterop3xUsingOld3xAgentTest {} | ||
|
||
@Environment(TOMCAT_8_JAVA_19) | ||
static class Tomcat8Java19Test extends ClassicSdkWebInterop3xUsingOld3xAgentTest {} | ||
|
||
@Environment(WILDFLY_13_JAVA_8) | ||
static class Wildfly13Java8Test extends ClassicSdkWebInterop3xUsingOld3xAgentTest {} | ||
|
||
@Environment(WILDFLY_13_JAVA_8_OPENJ9) | ||
static class Wildfly13Java8OpenJ9Test extends ClassicSdkWebInterop3xUsingOld3xAgentTest {} | ||
} |
11 changes: 11 additions & 0 deletions
11
...tests/apps/ClassicSdkWebInterop3xUsingOld3xAgent/src/smokeTest/resources/logback-test.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<configuration> | ||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> | ||
<encoder> | ||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern> | ||
</encoder> | ||
</appender> | ||
<root level="warn"> | ||
<appender-ref ref="CONSOLE"/> | ||
</root> | ||
</configuration> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
smoke-tests/apps/CoreAndFilter3xUsingOld3xAgent/build.gradle.kts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
plugins { | ||
id("ai.smoke-test-war") | ||
} | ||
|
||
dependencies { | ||
implementation(project(":classic-sdk:core")) | ||
} |
17 changes: 17 additions & 0 deletions
17
...gent/src/main/java/com/microsoft/applicationinsights/smoketestapp/HealthCheckServlet.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Licensed under the MIT License. | ||
|
||
package com.microsoft.applicationinsights.smoketestapp; | ||
|
||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
// this is used by the test infra in order to know when it's ok to start running the tests | ||
@WebServlet("") | ||
public class HealthCheckServlet extends HttpServlet { | ||
|
||
@Override | ||
protected void doGet(HttpServletRequest request, HttpServletResponse response) {} | ||
} |
32 changes: 32 additions & 0 deletions
32
...com/microsoft/applicationinsights/smoketestapp/SimpleTestRequestSlowWithResponseTime.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Licensed under the MIT License. | ||
|
||
package com.microsoft.applicationinsights.smoketestapp; | ||
|
||
import java.util.concurrent.TimeUnit; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
@WebServlet("/requestSlow") | ||
public class SimpleTestRequestSlowWithResponseTime extends HttpServlet { | ||
|
||
protected void doGet(HttpServletRequest request, HttpServletResponse response) { | ||
int sleepTime = 25; | ||
String customSleepTime = request.getParameter("sleeptime"); | ||
if (customSleepTime != null) { | ||
try { | ||
sleepTime = Integer.parseInt(customSleepTime); | ||
} catch (NumberFormatException e) { | ||
System.err.printf("Invalid value for 'sleeptime': '%s'%n", customSleepTime); | ||
} | ||
} | ||
try { | ||
System.out.printf("Sleeping for %d seconds.%n", sleepTime); | ||
TimeUnit.SECONDS.sleep(sleepTime); | ||
} catch (InterruptedException ex) { | ||
Thread.currentThread().interrupt(); | ||
} | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
...main/java/com/microsoft/applicationinsights/smoketestapp/SimpleThrowExceptionServlet.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Licensed under the MIT License. | ||
|
||
package com.microsoft.applicationinsights.smoketestapp; | ||
|
||
import javax.servlet.ServletException; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
@WebServlet("/autoExceptionWithFailedRequest") | ||
public class SimpleThrowExceptionServlet extends HttpServlet { | ||
|
||
protected void doGet(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException { | ||
throw new ServletException("This is a auto thrown exception !"); | ||
} | ||
} |
Oops, something went wrong.