From 9f83ee67f917d0552882bb116cff28282f1f5f6f Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Mon, 8 Mar 2021 17:33:06 +0100 Subject: [PATCH] Update to otel-java-instrumentation 1.0.0 (#124) * Update to otel-java-instrumentation 0.17.0 * Improve assertions * Update to otel-java-instrumentation 1.0.0 * snapshots * spotless --- build.gradle | 11 +++++---- custom/build.gradle | 4 ++-- .../SplunkTracerProviderConfigurer.java | 1 - .../ResourceAttributesToSystemProperties.java | 4 ++-- gradle/instrumentation.gradle | 19 ++++++++------- instrumentation/common/build.gradle | 4 ++-- .../servertiming/ServerTimingHeader.java | 4 ++-- instrumentation/netty-3.8/build.gradle | 8 +++---- .../netty/v3_8/ServerTimingHandler.java | 4 ++-- .../netty/v3_8/NettyInstrumentationTest.java | 17 +++++++------- instrumentation/netty-4.0/build.gradle | 8 +++---- .../netty/v4_0/ServerTimingHandler.java | 4 ++-- .../netty/v4_0/NettyInstrumentationTest.java | 18 ++++++++------- .../servlet-3-testing/build.gradle | 8 +++---- .../servlet/Servlet3InstrumentationTest.java | 23 ++++++++----------- instrumentation/servlet/build.gradle | 8 +++---- .../servlet/ServletInstrumentationModule.java | 4 ++-- .../servlet/ServletInstrumentationTest.java | 23 ++++++++----------- .../opentelemetry/GlassFishSmokeTest.java | 5 +--- .../opentelemetry/JBossEapSmokeTest.java | 6 ++--- .../splunk/opentelemetry/JettySmokeTest.java | 6 ++--- .../splunk/opentelemetry/TomcatSmokeTest.java | 2 +- .../splunk/opentelemetry/TomeeSmokeTest.java | 5 +--- .../opentelemetry/WebLogicSmokeTest.java | 6 ++--- .../opentelemetry/WildFlySmokeTest.java | 9 +++----- 25 files changed, 98 insertions(+), 113 deletions(-) diff --git a/build.gradle b/build.gradle index c8f419edb..77093a447 100644 --- a/build.gradle +++ b/build.gradle @@ -15,11 +15,12 @@ group = "com.splunk.public" boolean snapshot = getProperty("snapshot") == 'yes' def versions = [ - 'opentelemetry' : snapshot ? "0.17.0-SNAPSHOT" : "0.16.0", - 'opentelemetryAlpha' : snapshot ? "0.17.0-alpha-SNAPSHOT" : "0.16.0-alpha", - 'opentelemetryJavaagent': snapshot ? "0.17.0-SNAPSHOT" : '0.16.1', - 'mockito' : '3.8.0', - 'jupiter' : '5.7.1' + 'opentelemetry' : snapshot ? "1.1.0-SNAPSHOT" : "1.0.0", + 'opentelemetryAlpha' : snapshot ? "1.1.0-alpha-SNAPSHOT" : "1.0.0-alpha", + 'opentelemetryJavaagent' : snapshot ? "1.1.0-SNAPSHOT" : '1.0.0', + 'opentelemetryJavaagentAlpha': snapshot ? "1.1.0-alpha-SNAPSHOT" : '1.0.0-alpha', + 'mockito' : '3.8.0', + 'jupiter' : '5.7.1' ] subprojects { diff --git a/custom/build.gradle b/custom/build.gradle index 355e1ee32..8e0e89e8d 100644 --- a/custom/build.gradle +++ b/custom/build.gradle @@ -12,8 +12,8 @@ dependencies { compileOnly(project(":bootstrap")) implementation("io.opentelemetry:opentelemetry-sdk:${versions["opentelemetry"]}") implementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${versions.opentelemetryAlpha}") - implementation("io.opentelemetry:opentelemetry-exporter-jaeger-thrift:${versions["opentelemetry"]}") - implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-spi:${versions["opentelemetryJavaagent"]}") + implementation("io.opentelemetry:opentelemetry-exporter-jaeger-thrift:${versions.opentelemetry}") + implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-spi:${versions.opentelemetryJavaagentAlpha}") implementation("io.jaegertracing:jaeger-client:1.5.0") annotationProcessor("com.google.auto.service:auto-service:1.0-rc7") annotationProcessor("com.google.auto:auto-common:0.8") diff --git a/custom/src/main/java/com/splunk/opentelemetry/SplunkTracerProviderConfigurer.java b/custom/src/main/java/com/splunk/opentelemetry/SplunkTracerProviderConfigurer.java index 040bf766b..4b973f002 100644 --- a/custom/src/main/java/com/splunk/opentelemetry/SplunkTracerProviderConfigurer.java +++ b/custom/src/main/java/com/splunk/opentelemetry/SplunkTracerProviderConfigurer.java @@ -35,7 +35,6 @@ public void configure(SdkTracerProviderBuilder tracerProvider) { .setMaxNumberOfLinks(1000) .setMaxNumberOfAttributesPerEvent(Integer.MAX_VALUE) .setMaxNumberOfAttributesPerLink(Integer.MAX_VALUE) - .setMaxLengthOfAttributeValues(SpanLimits.UNLIMITED_ATTRIBUTE_LENGTH) .build()); } } diff --git a/custom/src/main/java/com/splunk/opentelemetry/resource/ResourceAttributesToSystemProperties.java b/custom/src/main/java/com/splunk/opentelemetry/resource/ResourceAttributesToSystemProperties.java index a172f7801..d9906e62e 100644 --- a/custom/src/main/java/com/splunk/opentelemetry/resource/ResourceAttributesToSystemProperties.java +++ b/custom/src/main/java/com/splunk/opentelemetry/resource/ResourceAttributesToSystemProperties.java @@ -20,7 +20,7 @@ import io.opentelemetry.api.common.AttributeType; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.javaagent.spi.ComponentInstaller; -import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.autoconfigure.OpenTelemetrySdkAutoConfiguration; /** * This component exposes String resource attributes as system properties with otel.resource. @@ -36,7 +36,7 @@ public void beforeByteBuddyAgent() {} @Override public void afterByteBuddyAgent() { - Attributes attributes = Resource.getDefault().getAttributes(); + Attributes attributes = OpenTelemetrySdkAutoConfiguration.getResource().getAttributes(); attributes.forEach( (k, v) -> { if (k.getType() == AttributeType.STRING) { diff --git a/gradle/instrumentation.gradle b/gradle/instrumentation.gradle index 31cac7051..88cbf2a75 100644 --- a/gradle/instrumentation.gradle +++ b/gradle/instrumentation.gradle @@ -12,10 +12,10 @@ configurations { dependencies { compileOnly("io.opentelemetry:opentelemetry-sdk:${versions.opentelemetry}") - compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:${versions.opentelemetryJavaagent}") - compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:${versions.opentelemetryJavaagent}") - compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-api:${versions.opentelemetryJavaagent}") - compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-spi:${versions.opentelemetryJavaagent}") + compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:${versions.opentelemetryJavaagentAlpha}") + compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:${versions.opentelemetryJavaagentAlpha}") + compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-api:${versions.opentelemetryJavaagentAlpha}") + compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-spi:${versions.opentelemetryJavaagentAlpha}") compileOnly("net.bytebuddy:byte-buddy:1.10.10") annotationProcessor("com.google.auto.service:auto-service:1.0-rc3") annotationProcessor("com.google.auto:auto-common:0.8") @@ -24,8 +24,8 @@ dependencies { compileOnly(project(":bootstrap")) // test - testAgent("io.opentelemetry.javaagent:opentelemetry-agent-for-testing:${versions.opentelemetryJavaagent}") - testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common:${versions.opentelemetryJavaagent}") + testAgent("io.opentelemetry.javaagent:opentelemetry-agent-for-testing:${versions.opentelemetryJavaagentAlpha}") + testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common:${versions.opentelemetryJavaagentAlpha}") } shadowJar { @@ -40,8 +40,11 @@ shadowJar { tasks.withType(Test).configureEach { jvmArgs "-Dotel.javaagent.debug=true" jvmArgs "-javaagent:${configurations.testAgent.files.first().absolutePath}" - jvmArgs "-Dotel.initializer.jar=${shadowJar.archiveFile.get().asFile.absolutePath}" - jvmArgs "-Dinternal.testing.disable.global.library.ignores=true" + jvmArgs "-Dotel.javaagent.experimental.initializer.jar=${shadowJar.archiveFile.get().asFile.absolutePath}" + jvmArgs "-Dotel.javaagent.testing.additional-library-ignores.enabled=false" + jvmArgs "-Dotel.javaagent.testing.fail-on-context-leak=true" + // prevent sporadic gradle deadlocks, see SafeLogger for more details + jvmArgs "-Dotel.javaagent.testing.transform-safe-logging.enabled=true" dependsOn shadowJar diff --git a/instrumentation/common/build.gradle b/instrumentation/common/build.gradle index b4e9e77f2..b7cdbfc10 100644 --- a/instrumentation/common/build.gradle +++ b/instrumentation/common/build.gradle @@ -3,9 +3,9 @@ plugins { } dependencies { - compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:${versions.opentelemetryJavaagent}") + compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:${versions.opentelemetryJavaagentAlpha}") compileOnly("io.opentelemetry:opentelemetry-api:${versions.opentelemetry}") - testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common:${versions.opentelemetryJavaagent}") + testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common:${versions.opentelemetryJavaagentAlpha}") } diff --git a/instrumentation/common/src/main/java/com/splunk/opentelemetry/servertiming/ServerTimingHeader.java b/instrumentation/common/src/main/java/com/splunk/opentelemetry/servertiming/ServerTimingHeader.java index fc6976dba..6a7e295e3 100644 --- a/instrumentation/common/src/main/java/com/splunk/opentelemetry/servertiming/ServerTimingHeader.java +++ b/instrumentation/common/src/main/java/com/splunk/opentelemetry/servertiming/ServerTimingHeader.java @@ -19,7 +19,7 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.context.Context; -import io.opentelemetry.context.propagation.TextMapPropagator.Setter; +import io.opentelemetry.context.propagation.TextMapSetter; import io.opentelemetry.instrumentation.api.config.Config; import java.util.HashMap; import java.util.Map; @@ -36,7 +36,7 @@ public static boolean shouldEmitServerTimingHeader() { return Config.get().getBooleanProperty("splunk.context.server-timing.enabled", false); } - public static void setHeaders(Context context, RS response, Setter headerSetter) { + public static void setHeaders(Context context, RS response, TextMapSetter headerSetter) { if (!Span.fromContext(context).getSpanContext().isValid()) { return; } diff --git a/instrumentation/netty-3.8/build.gradle b/instrumentation/netty-3.8/build.gradle index c5f64c0c4..96e0c8bd5 100644 --- a/instrumentation/netty-3.8/build.gradle +++ b/instrumentation/netty-3.8/build.gradle @@ -2,13 +2,13 @@ apply from: "$rootDir/gradle/instrumentation.gradle" dependencies { compileOnly group: 'io.netty', name: 'netty', version: '3.8.0.Final' - compileOnly group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-3.8', version: versions.opentelemetryJavaagent + compileOnly group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-3.8', version: versions.opentelemetryJavaagentAlpha implementation project(':instrumentation:common') - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-3.8', version: versions.opentelemetryJavaagent - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.0', version: versions.opentelemetryJavaagent - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.1', version: versions.opentelemetryJavaagent + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-3.8', version: versions.opentelemetryJavaagentAlpha + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.0', version: versions.opentelemetryJavaagentAlpha + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.1', version: versions.opentelemetryJavaagentAlpha testInstrumentation project(':instrumentation:netty-4.0') testImplementation group: 'io.netty', name: 'netty', version: '3.8.0.Final' diff --git a/instrumentation/netty-3.8/src/main/java/com/splunk/opentelemetry/netty/v3_8/ServerTimingHandler.java b/instrumentation/netty-3.8/src/main/java/com/splunk/opentelemetry/netty/v3_8/ServerTimingHandler.java index 5c4412e15..ad552feb7 100644 --- a/instrumentation/netty-3.8/src/main/java/com/splunk/opentelemetry/netty/v3_8/ServerTimingHandler.java +++ b/instrumentation/netty-3.8/src/main/java/com/splunk/opentelemetry/netty/v3_8/ServerTimingHandler.java @@ -20,7 +20,7 @@ import com.splunk.opentelemetry.servertiming.ServerTimingHeader; import io.opentelemetry.context.Context; -import io.opentelemetry.context.propagation.TextMapPropagator.Setter; +import io.opentelemetry.context.propagation.TextMapSetter; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.netty.v3_8.ChannelTraceContext; import org.jboss.netty.channel.Channel; @@ -53,7 +53,7 @@ public void writeRequested(ChannelHandlerContext ctx, MessageEvent msg) { ctx.sendDownstream(msg); } - public static final class HeadersSetter implements Setter { + public static final class HeadersSetter implements TextMapSetter { private static final HeadersSetter INSTANCE = new HeadersSetter(); @Override diff --git a/instrumentation/netty-3.8/src/test/java/com/splunk/opentelemetry/netty/v3_8/NettyInstrumentationTest.java b/instrumentation/netty-3.8/src/test/java/com/splunk/opentelemetry/netty/v3_8/NettyInstrumentationTest.java index 4da28ddf2..07a4f4a89 100644 --- a/instrumentation/netty-3.8/src/test/java/com/splunk/opentelemetry/netty/v3_8/NettyInstrumentationTest.java +++ b/instrumentation/netty-3.8/src/test/java/com/splunk/opentelemetry/netty/v3_8/NettyInstrumentationTest.java @@ -25,9 +25,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import com.splunk.opentelemetry.servertiming.ServerTimingHeader; -import io.opentelemetry.instrumentation.test.InMemoryExporter; import io.opentelemetry.instrumentation.test.utils.OkHttpUtils; import io.opentelemetry.instrumentation.test.utils.PortUtils; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import java.net.InetSocketAddress; import java.util.concurrent.TimeoutException; import okhttp3.HttpUrl; @@ -50,14 +50,17 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; class NettyInstrumentationTest { + @RegisterExtension + static final AgentInstrumentationExtension instrumentation = + AgentInstrumentationExtension.create(); - private static final OkHttpClient httpClient = OkHttpUtils.client(); + static final OkHttpClient httpClient = OkHttpUtils.client(); - private static int port; - private static ServerBootstrap server; - private static final InMemoryExporter exporter = new InMemoryExporter(); + static int port; + static ServerBootstrap server; @BeforeAll static void startServer() { @@ -125,9 +128,7 @@ private static void assertHeaders(Response response, String serverTimingHeader) private static void assertServerTimingHeaderContainsTraceId(String serverTimingHeader) throws InterruptedException, TimeoutException { - exporter.waitForTraces(1); - - var traces = exporter.getTraces(); + var traces = instrumentation.waitForTraces(1); assertEquals(1, traces.size()); var spans = traces.get(0); diff --git a/instrumentation/netty-4.0/build.gradle b/instrumentation/netty-4.0/build.gradle index 3cda408a6..cfbe79102 100644 --- a/instrumentation/netty-4.0/build.gradle +++ b/instrumentation/netty-4.0/build.gradle @@ -2,13 +2,13 @@ apply from: "$rootDir/gradle/instrumentation.gradle" dependencies { compileOnly group: 'io.netty', name: 'netty-codec-http', version: '4.0.0.Final' - compileOnly group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.0', version: versions.opentelemetryJavaagent + compileOnly group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.0', version: versions.opentelemetryJavaagentAlpha implementation project(':instrumentation:common') - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-3.8', version: versions.opentelemetryJavaagent - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.0', version: versions.opentelemetryJavaagent - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.1', version: versions.opentelemetryJavaagent + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-3.8', version: versions.opentelemetryJavaagentAlpha + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.0', version: versions.opentelemetryJavaagentAlpha + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-netty-4.1', version: versions.opentelemetryJavaagentAlpha testInstrumentation project(':instrumentation:netty-3.8') testImplementation group: 'io.netty', name: 'netty-codec-http', version: '4.0.0.Final' diff --git a/instrumentation/netty-4.0/src/main/java/com/splunk/opentelemetry/netty/v4_0/ServerTimingHandler.java b/instrumentation/netty-4.0/src/main/java/com/splunk/opentelemetry/netty/v4_0/ServerTimingHandler.java index 9e90d7083..0c1b5f080 100644 --- a/instrumentation/netty-4.0/src/main/java/com/splunk/opentelemetry/netty/v4_0/ServerTimingHandler.java +++ b/instrumentation/netty-4.0/src/main/java/com/splunk/opentelemetry/netty/v4_0/ServerTimingHandler.java @@ -25,7 +25,7 @@ import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpResponse; import io.opentelemetry.context.Context; -import io.opentelemetry.context.propagation.TextMapPropagator; +import io.opentelemetry.context.propagation.TextMapSetter; public class ServerTimingHandler extends ChannelOutboundHandlerAdapter { @Override @@ -41,7 +41,7 @@ public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise prm) { ctx.write(msg, prm); } - public static final class HeadersSetter implements TextMapPropagator.Setter { + public static final class HeadersSetter implements TextMapSetter { private static final HeadersSetter INSTANCE = new HeadersSetter(); @Override diff --git a/instrumentation/netty-4.0/src/test/java/com/splunk/opentelemetry/netty/v4_0/NettyInstrumentationTest.java b/instrumentation/netty-4.0/src/test/java/com/splunk/opentelemetry/netty/v4_0/NettyInstrumentationTest.java index 8fa22239f..edefa297d 100644 --- a/instrumentation/netty-4.0/src/test/java/com/splunk/opentelemetry/netty/v4_0/NettyInstrumentationTest.java +++ b/instrumentation/netty-4.0/src/test/java/com/splunk/opentelemetry/netty/v4_0/NettyInstrumentationTest.java @@ -38,9 +38,9 @@ import io.netty.handler.codec.http.DefaultFullHttpResponse; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpServerCodec; -import io.opentelemetry.instrumentation.test.InMemoryExporter; import io.opentelemetry.instrumentation.test.utils.OkHttpUtils; import io.opentelemetry.instrumentation.test.utils.PortUtils; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import java.util.concurrent.TimeoutException; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; @@ -50,13 +50,17 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; public class NettyInstrumentationTest { - private static final OkHttpClient httpClient = OkHttpUtils.client(); + @RegisterExtension + static final AgentInstrumentationExtension instrumentation = + AgentInstrumentationExtension.create(); - private static int port; - private static EventLoopGroup server; - private static final InMemoryExporter exporter = new InMemoryExporter(); + static final OkHttpClient httpClient = OkHttpUtils.client(); + + static int port; + static EventLoopGroup server; @BeforeAll static void startServer() throws InterruptedException { @@ -120,9 +124,7 @@ private static void assertHeaders(Response response, String serverTimingHeader) private static void assertServerTimingHeaderContainsTraceId(String serverTimingHeader) throws InterruptedException, TimeoutException { - exporter.waitForTraces(1); - - var traces = exporter.getTraces(); + var traces = instrumentation.waitForTraces(1); assertEquals(1, traces.size()); var spans = traces.get(0); diff --git a/instrumentation/servlet-3-testing/build.gradle b/instrumentation/servlet-3-testing/build.gradle index 755ac3fc6..ed9681489 100644 --- a/instrumentation/servlet-3-testing/build.gradle +++ b/instrumentation/servlet-3-testing/build.gradle @@ -1,13 +1,13 @@ apply from: "$rootDir/gradle/instrumentation.gradle" dependencies { - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-common', version: versions.opentelemetryJavaagent - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-2.2', version: versions.opentelemetryJavaagent - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-3.0', version: versions.opentelemetryJavaagent + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-common', version: versions.opentelemetryJavaagentAlpha + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-2.2', version: versions.opentelemetryJavaagentAlpha + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-3.0', version: versions.opentelemetryJavaagentAlpha testInstrumentation project(':instrumentation:servlet') testImplementation project(':instrumentation:common') - testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common:${versions.opentelemetryJavaagent}") { + testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common:${versions.opentelemetryJavaagentAlpha}") { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } diff --git a/instrumentation/servlet-3-testing/src/test/java/com/splunk/opentelemetry/servlet/Servlet3InstrumentationTest.java b/instrumentation/servlet-3-testing/src/test/java/com/splunk/opentelemetry/servlet/Servlet3InstrumentationTest.java index 9371b9c2a..f29b696f2 100644 --- a/instrumentation/servlet-3-testing/src/test/java/com/splunk/opentelemetry/servlet/Servlet3InstrumentationTest.java +++ b/instrumentation/servlet-3-testing/src/test/java/com/splunk/opentelemetry/servlet/Servlet3InstrumentationTest.java @@ -21,9 +21,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import com.splunk.opentelemetry.servertiming.ServerTimingHeader; -import io.opentelemetry.instrumentation.test.InMemoryExporter; import io.opentelemetry.instrumentation.test.utils.OkHttpUtils; import io.opentelemetry.instrumentation.test.utils.PortUtils; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import java.io.IOException; import java.io.Writer; import java.util.EnumSet; @@ -45,17 +45,19 @@ import org.eclipse.jetty.servlet.DefaultServlet; import org.eclipse.jetty.servlet.ServletContextHandler; import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; class Servlet3InstrumentationTest { + @RegisterExtension + static final AgentInstrumentationExtension instrumentation = + AgentInstrumentationExtension.create(); - private static final OkHttpClient httpClient = OkHttpUtils.client(); + static final OkHttpClient httpClient = OkHttpUtils.client(); - private static int port; - private static Server server; - private static final InMemoryExporter exporter = new InMemoryExporter(); + static int port; + static Server server; @BeforeAll static void startServer() throws Exception { @@ -80,11 +82,6 @@ static void stopServer() throws Exception { server.destroy(); } - @AfterEach - void clearTraces() { - exporter.clear(); - } - @Test void shouldHttpServletAddServerTimingHeader() throws Exception { // given @@ -135,9 +132,7 @@ private static void assertHeaders(Response response, String serverTimingHeader) private static void assertServerTimingHeaderContainsTraceId(String serverTimingHeader) throws InterruptedException, TimeoutException { - exporter.waitForTraces(1); - - var traces = exporter.getTraces(); + var traces = instrumentation.waitForTraces(1); assertEquals(1, traces.size()); var spans = traces.get(0); diff --git a/instrumentation/servlet/build.gradle b/instrumentation/servlet/build.gradle index 68dccef24..ed89b97c2 100644 --- a/instrumentation/servlet/build.gradle +++ b/instrumentation/servlet/build.gradle @@ -5,11 +5,11 @@ dependencies { implementation project(':instrumentation:common') - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-common', version: versions.opentelemetryJavaagent - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-2.2', version: versions.opentelemetryJavaagent - testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-3.0', version: versions.opentelemetryJavaagent + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-common', version: versions.opentelemetryJavaagentAlpha + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-2.2', version: versions.opentelemetryJavaagentAlpha + testInstrumentation group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-3.0', version: versions.opentelemetryJavaagentAlpha - testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common:${versions.opentelemetryJavaagent}") { + testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common:${versions.opentelemetryJavaagentAlpha}") { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } diff --git a/instrumentation/servlet/src/main/java/com/splunk/opentelemetry/servlet/ServletInstrumentationModule.java b/instrumentation/servlet/src/main/java/com/splunk/opentelemetry/servlet/ServletInstrumentationModule.java index c8da2eade..5d30384a3 100644 --- a/instrumentation/servlet/src/main/java/com/splunk/opentelemetry/servlet/ServletInstrumentationModule.java +++ b/instrumentation/servlet/src/main/java/com/splunk/opentelemetry/servlet/ServletInstrumentationModule.java @@ -27,7 +27,7 @@ import com.google.auto.service.AutoService; import com.splunk.opentelemetry.servertiming.ServerTimingHeader; import io.opentelemetry.context.Context; -import io.opentelemetry.context.propagation.TextMapPropagator; +import io.opentelemetry.context.propagation.TextMapSetter; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.tooling.InstrumentationModule; import io.opentelemetry.javaagent.tooling.TypeInstrumentation; @@ -102,7 +102,7 @@ public static void onEnter(@Advice.Argument(1) ServletResponse response) { } } - public static final class HeadersSetter implements TextMapPropagator.Setter { + public static final class HeadersSetter implements TextMapSetter { public static final HeadersSetter INSTANCE = new HeadersSetter(); @Override diff --git a/instrumentation/servlet/src/test/java/com/splunk/opentelemetry/servlet/ServletInstrumentationTest.java b/instrumentation/servlet/src/test/java/com/splunk/opentelemetry/servlet/ServletInstrumentationTest.java index 51784898e..1dd3d68c3 100644 --- a/instrumentation/servlet/src/test/java/com/splunk/opentelemetry/servlet/ServletInstrumentationTest.java +++ b/instrumentation/servlet/src/test/java/com/splunk/opentelemetry/servlet/ServletInstrumentationTest.java @@ -21,9 +21,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import com.splunk.opentelemetry.servertiming.ServerTimingHeader; -import io.opentelemetry.instrumentation.test.InMemoryExporter; import io.opentelemetry.instrumentation.test.utils.OkHttpUtils; import io.opentelemetry.instrumentation.test.utils.PortUtils; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import java.io.IOException; import java.io.Writer; import java.util.concurrent.TimeoutException; @@ -44,17 +44,19 @@ import org.eclipse.jetty.servlet.FilterMapping; import org.eclipse.jetty.servlet.ServletContextHandler; import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; class ServletInstrumentationTest { + @RegisterExtension + static final AgentInstrumentationExtension instrumentation = + AgentInstrumentationExtension.create(); - private static final OkHttpClient httpClient = OkHttpUtils.client(); + static final OkHttpClient httpClient = OkHttpUtils.client(); - private static int port; - private static Server server; - private static final InMemoryExporter exporter = new InMemoryExporter(); + static int port; + static Server server; @BeforeAll static void startServer() throws Exception { @@ -79,11 +81,6 @@ static void stopServer() throws Exception { server.destroy(); } - @AfterEach - void clearTraces() { - exporter.clear(); - } - @Test void shouldHttpServletAddServerTimingHeader() throws Exception { // given @@ -134,9 +131,7 @@ private static void assertHeaders(Response response, String serverTimingHeader) private static void assertServerTimingHeaderContainsTraceId(String serverTimingHeader) throws InterruptedException, TimeoutException { - exporter.waitForTraces(1); - - var traces = exporter.getTraces(); + var traces = instrumentation.waitForTraces(1); assertEquals(1, traces.size()); var spans = traces.get(0); diff --git a/smoke-tests/src/test/java/com/splunk/opentelemetry/GlassFishSmokeTest.java b/smoke-tests/src/test/java/com/splunk/opentelemetry/GlassFishSmokeTest.java index 23b0282ff..629dc8de9 100644 --- a/smoke-tests/src/test/java/com/splunk/opentelemetry/GlassFishSmokeTest.java +++ b/smoke-tests/src/test/java/com/splunk/opentelemetry/GlassFishSmokeTest.java @@ -29,10 +29,7 @@ public class GlassFishSmokeTest extends AppServerTest { public static final ExpectedServerAttributes PAYARA_SERVER_ATTRIBUTES = - new ExpectedServerAttributes( - "/this-is-definitely-not-there-but-there-should-be-a-trace-nevertheless", - "Payara Server", - "5.2020.6"); + new ExpectedServerAttributes("/*", "Payara Server", "5.2020.6"); private static Stream supportedConfigurations() { return configurations("payara") diff --git a/smoke-tests/src/test/java/com/splunk/opentelemetry/JBossEapSmokeTest.java b/smoke-tests/src/test/java/com/splunk/opentelemetry/JBossEapSmokeTest.java index 492c24932..aef996a64 100644 --- a/smoke-tests/src/test/java/com/splunk/opentelemetry/JBossEapSmokeTest.java +++ b/smoke-tests/src/test/java/com/splunk/opentelemetry/JBossEapSmokeTest.java @@ -31,11 +31,9 @@ public class JBossEapSmokeTest extends AppServerTest { public static final ExpectedServerAttributes JBOSS_EAP_7_1_SERVER_ATTRIBUTES = - new ExpectedServerAttributes( - "DisallowedMethodsHandler.handleRequest", "JBoss EAP", "7.1.0.GA"); + new ExpectedServerAttributes("HTTP GET", "JBoss EAP", "7.1.0.GA"); public static final ExpectedServerAttributes JBOSS_EAP_7_3_SERVER_ATTRIBUTES = - new ExpectedServerAttributes( - "DisallowedMethodsHandler.handleRequest", "JBoss EAP", "7.3.0.GA"); + new ExpectedServerAttributes("HTTP GET", "JBoss EAP", "7.3.0.GA"); private static Stream jboss() { return configurations("jboss") diff --git a/smoke-tests/src/test/java/com/splunk/opentelemetry/JettySmokeTest.java b/smoke-tests/src/test/java/com/splunk/opentelemetry/JettySmokeTest.java index 894800a57..82d0a2a16 100644 --- a/smoke-tests/src/test/java/com/splunk/opentelemetry/JettySmokeTest.java +++ b/smoke-tests/src/test/java/com/splunk/opentelemetry/JettySmokeTest.java @@ -26,11 +26,11 @@ public class JettySmokeTest extends AppServerTest { public static final ExpectedServerAttributes JETTY9_SERVER_ATTRIBUTES = - new ExpectedServerAttributes("HandlerCollection.handle", "jetty", "9.4.35.v20201120"); + new ExpectedServerAttributes("HTTP GET", "jetty", "9.4.35.v20201120"); public static final ExpectedServerAttributes JETTY10_SERVER_ATTRIBUTES = - new ExpectedServerAttributes("HandlerList.handle", "jetty", "10.0.0"); + new ExpectedServerAttributes("HTTP GET", "jetty", "10.0.0"); public static final ExpectedServerAttributes JETTY10_BETA_SERVER_ATTRIBUTES = - new ExpectedServerAttributes("HandlerList.handle", "jetty", "10.0.0.beta3"); + new ExpectedServerAttributes("HTTP GET", "jetty", "10.0.0.beta3"); private static Stream supportedConfigurations() { return configurations("jetty") diff --git a/smoke-tests/src/test/java/com/splunk/opentelemetry/TomcatSmokeTest.java b/smoke-tests/src/test/java/com/splunk/opentelemetry/TomcatSmokeTest.java index 43cb980ec..cd332c718 100644 --- a/smoke-tests/src/test/java/com/splunk/opentelemetry/TomcatSmokeTest.java +++ b/smoke-tests/src/test/java/com/splunk/opentelemetry/TomcatSmokeTest.java @@ -56,7 +56,7 @@ void tomcatSmokeTest(TestImage image, ExpectedServerAttributes expectedServerAtt public static class TomcatAttributes extends ExpectedServerAttributes { public TomcatAttributes(String version) { // This handler span name is only received if default webapps are removed - super("CoyoteAdapter.service", "tomcat", version); + super("HTTP GET", "tomcat", version); } } } diff --git a/smoke-tests/src/test/java/com/splunk/opentelemetry/TomeeSmokeTest.java b/smoke-tests/src/test/java/com/splunk/opentelemetry/TomeeSmokeTest.java index 31ba1b4ee..b38891443 100644 --- a/smoke-tests/src/test/java/com/splunk/opentelemetry/TomeeSmokeTest.java +++ b/smoke-tests/src/test/java/com/splunk/opentelemetry/TomeeSmokeTest.java @@ -52,10 +52,7 @@ void tomeeSmokeTest(TestImage image, ExpectedServerAttributes expectedServerAttr public static class TomeeAttributes extends ExpectedServerAttributes { public TomeeAttributes(String version) { // This handler span name is only received if default webapps are present - super( - "/this-is-definitely-not-there-but-there-should-be-a-trace-nevertheless", - "tomee", - version); + super("/*", "tomee", version); } } } diff --git a/smoke-tests/src/test/java/com/splunk/opentelemetry/WebLogicSmokeTest.java b/smoke-tests/src/test/java/com/splunk/opentelemetry/WebLogicSmokeTest.java index ada204e8b..c5d328e70 100644 --- a/smoke-tests/src/test/java/com/splunk/opentelemetry/WebLogicSmokeTest.java +++ b/smoke-tests/src/test/java/com/splunk/opentelemetry/WebLogicSmokeTest.java @@ -32,11 +32,11 @@ class WebLogicSmokeTest extends AppServerTest { private static final AppServerTest.ExpectedServerAttributes V12_1_ATTRIBUTES = - new AppServerTest.ExpectedServerAttributes("", "WebLogic Server", "12.1.3.0.0"); + new AppServerTest.ExpectedServerAttributes("HTTP GET", "WebLogic Server", "12.1.3.0.0"); private static final AppServerTest.ExpectedServerAttributes V12_2_ATTRIBUTES = - new AppServerTest.ExpectedServerAttributes("", "WebLogic Server", "12.2.1.4.0"); + new AppServerTest.ExpectedServerAttributes("HTTP GET", "WebLogic Server", "12.2.1.4.0"); private static final AppServerTest.ExpectedServerAttributes V14_ATTRIBUTES = - new AppServerTest.ExpectedServerAttributes("", "WebLogic Server", "14.1.1.0.0"); + new AppServerTest.ExpectedServerAttributes("HTTP GET", "WebLogic Server", "14.1.1.0.0"); private static Stream supportedWlsConfigurations() { return configurations("weblogic").splunkLinux("12.1.3", V12_1_ATTRIBUTES, VMS_HOTSPOT, "8") diff --git a/smoke-tests/src/test/java/com/splunk/opentelemetry/WildFlySmokeTest.java b/smoke-tests/src/test/java/com/splunk/opentelemetry/WildFlySmokeTest.java index ed5fedfcb..9aec9c17b 100644 --- a/smoke-tests/src/test/java/com/splunk/opentelemetry/WildFlySmokeTest.java +++ b/smoke-tests/src/test/java/com/splunk/opentelemetry/WildFlySmokeTest.java @@ -26,14 +26,11 @@ public class WildFlySmokeTest extends AppServerTest { public static final ExpectedServerAttributes WILDFLY_13_SERVER_ATTRIBUTES = - new ExpectedServerAttributes( - "DisallowedMethodsHandler.handleRequest", "WildFly Full", "13.0.0.Final"); + new ExpectedServerAttributes("HTTP GET", "WildFly Full", "13.0.0.Final"); public static final ExpectedServerAttributes WILDFLY_17_SERVER_ATTRIBUTES = - new ExpectedServerAttributes( - "DisallowedMethodsHandler.handleRequest", "WildFly Full", "17.0.1.Final"); + new ExpectedServerAttributes("HTTP GET", "WildFly Full", "17.0.1.Final"); public static final ExpectedServerAttributes WILDFLY_21_SERVER_ATTRIBUTES = - new ExpectedServerAttributes( - "DisallowedMethodsHandler.handleRequest", "WildFly Full", "21.0.0.Final"); + new ExpectedServerAttributes("HTTP GET", "WildFly Full", "21.0.0.Final"); private static Stream supportedConfigurations() { return configurations("wildfly")