From 905c274009ce689e624bae864aed4b73e9543ea2 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 6 Nov 2024 07:11:06 -0800 Subject: [PATCH 01/40] Update quarkus smoke test image (#12567) --- .../io/opentelemetry/smoketest/QuarkusSmokeTest.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/QuarkusSmokeTest.groovy b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/QuarkusSmokeTest.groovy index e8d87c20c527..6009973dbdcd 100644 --- a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/QuarkusSmokeTest.groovy +++ b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/QuarkusSmokeTest.groovy @@ -19,7 +19,7 @@ import static io.opentelemetry.smoketest.TestContainerManager.useWindowsContaine class QuarkusSmokeTest extends SmokeTest { protected String getTargetImage(String jdk) { - "ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-quarkus:jdk$jdk-20211213.1574595137" + "ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-quarkus:jdk$jdk-20241105.11678591860" } @Override @@ -50,12 +50,12 @@ class QuarkusSmokeTest extends SmokeTest { traces.countFilteredResourceAttributes("telemetry.distro.version", currentAgentVersion) == 1 and: "service.name is detected from manifest" - traces.countFilteredResourceAttributes(ServiceAttributes.SERVICE_NAME.key, "smoke-test-quarkus-images") == 1 + traces.countFilteredResourceAttributes(ServiceAttributes.SERVICE_NAME.key, "quarkus") == 1 cleanup: stopTarget() where: - jdk << [11, 17] // Quarkus 2.0+ does not support Java 8 + jdk << [17, 21, 23] // Quarkus 3.7+ requires Java 17+ } } From 3ad4269802d2f4dc2b7d4c3568f7c88b73750b35 Mon Sep 17 00:00:00 2001 From: misaya <3315605798@qq.com> Date: Wed, 6 Nov 2024 23:14:26 +0800 Subject: [PATCH 02/40] compatible different command line style for find jar path (#12544) --- .../resources/MainJarPathFinder.java | 11 ++++++++--- .../resources/JarServiceNameDetectorTest.java | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/MainJarPathFinder.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/MainJarPathFinder.java index 8f9b9287ac68..c0c7588698f2 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/MainJarPathFinder.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/MainJarPathFinder.java @@ -44,9 +44,14 @@ Path detectJarPath() { @Nullable private Path getJarPathFromProcessHandle() { String[] javaArgs = getProcessHandleArguments.get(); - for (int i = 0; i < javaArgs.length; ++i) { - if ("-jar".equals(javaArgs[i]) && (i < javaArgs.length - 1)) { - return Paths.get(javaArgs[i + 1]); + boolean jarOptionFound = false; + for (String javaArg : javaArgs) { + if ("-jar".equals(javaArg)) { + jarOptionFound = true; + } else if (jarOptionFound + && !javaArg.startsWith( + "-")) { // flags can appear between -jar and the jar path, ignore them + return Paths.get(javaArg); } } return null; diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java index bcb0ff2c631d..b44851bfaa13 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java @@ -73,6 +73,22 @@ void createResource_processHandleJar() { .containsEntry(ServiceAttributes.SERVICE_NAME, "my-service"); } + @Test + void createResource_processHandleJarExtraFlag() { + String path = Paths.get("path", "to", "app", "my-service.jar").toString(); + JarServiceNameDetector serviceNameProvider = + getDetector( + new String[] {"-Dtest=42", "-jar", "-Xmx512m", path, "abc", "def"}, + prop -> null, + JarServiceNameDetectorTest::failPath); + + Resource resource = serviceNameProvider.createResource(config); + + assertThat(resource.getAttributes()) + .hasSize(1) + .containsEntry(ServiceAttributes.SERVICE_NAME, "my-service"); + } + @Test void createResource_processHandleJarWithoutExtension() { JarServiceNameDetector serviceNameProvider = From 6f4ee3c131773b0896675aba5d28368fda265501 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 6 Nov 2024 18:16:31 +0200 Subject: [PATCH 03/40] Reformat lettuce readme (#12577) --- instrumentation/lettuce/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/lettuce/README.md b/instrumentation/lettuce/README.md index ed102ec06218..b7d75f4d3b81 100644 --- a/instrumentation/lettuce/README.md +++ b/instrumentation/lettuce/README.md @@ -3,4 +3,4 @@ | System property | Type | Default | Description | |-------------------------------------------------------------|---------|---------|-----------------------------------------------------| | `otel.instrumentation.lettuce.experimental-span-attributes` | Boolean | `false` | Enable the capture of experimental span attributes. | -| `otel.instrumentation.lettuce.connection-telemetry.enabled` | Boolean | `false` | Enable the creation of Connect spans. | +| `otel.instrumentation.lettuce.connection-telemetry.enabled` | Boolean | `false` | Enable the creation of Connect spans. | From 2371589ec554d35c1f8210c64a22b189d7e39bfc Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 6 Nov 2024 08:17:57 -0800 Subject: [PATCH 04/40] Statically import semconv constants in tests (#12575) --- .../apachedubbo/v2_7/AbstractDubboTest.java | 50 ++-- .../v2_7/AbstractDubboTraceChainTest.java | 70 ++--- .../v5_0/AbstractApacheHttpClientTest.java | 5 +- .../armeria/v1_3/ArmeriaHttp2Test.java | 111 ++++---- .../armeria/grpc/v1_14/ArmeriaGrpcTest.java | 11 +- .../v1_9/AsyncHttpClientTest.java | 5 +- .../v2_2/AwsLambdaApiGatewayHandlerTest.java | 15 +- .../v2_2/AwsLambdaApiGatewayWrapperTest.java | 16 +- .../v2_2/AwsLambdaSqsEventWrapperTest.java | 7 +- .../v2_2/AwsLambdaSqsMessageHandlerTest.java | 26 +- .../AbstractAwsLambdaSqsEventHandlerTest.java | 12 +- .../AbstractSqsSuppressReceiveSpansTest.java | 146 +++++----- .../awssdk/v1_11/AbstractSqsTracingTest.java | 197 ++++++-------- ...AbstractAws2ClientRecordHttpErrorTest.java | 25 +- .../v2_2/AbstractAws2SqsTracingTest.java | 174 +++++------- .../azurecore/v1_36/AzureSdkTest.java | 4 +- .../apachecamel/RestCamelTest.java | 55 ++-- .../apachecamel/SingleServiceCamelTest.java | 8 +- .../TwoServicesWithDirectClientCamelTest.java | 77 +++--- .../apachecamel/decorators/CassandraTest.java | 10 +- .../src/test/java/CassandraClientTest.java | 133 +++++---- .../v4/common/AbstractCassandraTest.java | 40 ++- .../v4_4/AbstractCassandra44Test.java | 24 +- .../clickhouse/ClickHouseClientTest.java | 21 +- .../AbstractCouchbaseAsyncClientTest.java | 22 +- .../AbstractCouchbaseClientTest.java | 12 +- .../couchbase/AbstractCouchbaseTest.java | 21 +- .../apiclient/ElasticsearchClientTest.java | 85 +++--- .../rest/v5_0/ElasticsearchRest5Test.java | 56 ++-- .../rest/v6_4/ElasticsearchRest6Test.java | 56 ++-- .../rest/v7_0/ElasticsearchRest7Test.java | 56 ++-- .../rest/v7_0/ElasticsearchRest7Test.java | 30 +-- .../Elasticsearch53SpringRepositoryTest.java | 42 +-- .../Elasticsearch53SpringTemplateTest.java | 34 +-- .../AbstractElasticsearchNodeClientTest.java | 30 ++- ...tractElasticsearchTransportClientTest.java | 56 ++-- .../v23_11/AbstractServerTest.java | 6 +- .../finaglehttp/v23_11/ClientTest.java | 7 +- .../instrumentation/geode/PutGetTest.java | 25 +- .../AbstractGoogleHttpClientTest.java | 26 +- .../graphql/AbstractGraphqlTest.java | 15 +- .../grizzly/GrizzlyFilterchainServerTest.java | 4 +- .../instrumentation/grizzly/GrizzlyTest.java | 4 +- .../grpc/v1_6/AbstractGrpcStreamingTest.java | 32 ++- .../grpc/v1_6/AbstractGrpcTest.java | 203 ++++++-------- .../hibernate/v3_3/AbstractHibernateTest.java | 40 +-- .../hibernate/v4_0/CriteriaTest.java | 23 +- .../hibernate/v4_0/EntityManagerTest.java | 104 ++++--- .../hibernate/v4_0/QueryTest.java | 64 +++-- .../hibernate/v4_0/SessionTest.java | 173 ++++++------ .../test/java/spring/jpa/SpringJpaTest.java | 168 ++++++------ .../hibernate/v6_0/CriteriaTest.java | 25 +- .../hibernate/v6_0/EntityManagerTest.java | 58 ++-- .../hibernate/v6_0/ProcedureCallTest.java | 21 +- .../hibernate/v6_0/SessionTest.java | 58 ++-- .../hibernate/v4_3/ProcedureCallTest.java | 21 +- .../reactive/v1_0/HibernateReactiveTest.java | 16 +- .../reactive/v2_0/HibernateReactiveTest.java | 16 +- .../HttpUrlConnectionTest.java | 72 ++--- .../influxdb/v2_4/InfluxDbClientTest.java | 20 +- .../influxdb/v2_4/InfluxDbClient24Test.java | 20 +- .../AbstractJavaHttpClientTest.java | 5 +- .../jul/JavaUtilLoggingTest.java | 11 +- .../javalin/v5_0/JavalinTest.java | 99 ++++--- .../jaxrsclient/JaxRsClientV1Test.java | 5 +- .../appender/v1_1/JbossLogmanagerTest.java | 12 +- .../jdbc/test/JdbcInstrumentationTest.java | 150 ++++++----- .../jdbc/datasource/JdbcTelemetryTest.java | 6 +- .../OpenTelemetryDataSourceTest.java | 14 +- .../internal/OpenTelemetryConnectionTest.java | 30 ++- .../jedis/AbstractJedisTest.java | 57 ++-- .../jedis/v3_0/Jedis30ClientTest.java | 101 ++++--- .../jedis/v4_0/Jedis40ClientTest.java | 68 ++--- .../jetty/v11_0/JettyHandlerTest.java | 6 +- .../jetty/v12_0/Jetty12HandlerTest.java | 6 +- .../jetty/v8_0/JettyHandlerTest.java | 6 +- .../jms/v1_1/Jms2InstrumentationTest.java | 51 ++-- .../jms/v1_1/AbstractJms1Test.java | 71 +++-- .../jms/v1_1/Jms1InstrumentationTest.java | 25 +- .../v1_1/Jms1SuppressReceiveSpansTest.java | 25 +- .../jms/v3_0/AbstractJms3Test.java | 51 ++-- .../jms/v3_0/Jms3InstrumentationTest.java | 26 +- .../v3_0/Jms3SuppressReceiveSpansTest.java | 26 +- .../jsf/jakarta/BaseJsfTest.java | 44 +-- .../jsf/javax/BaseJsfTest.java | 44 +-- .../kafka/internal/KafkaClientBaseTest.java | 68 +++-- .../InterceptorsSuppressReceiveSpansTest.java | 35 ++- .../kafkaclients/v2_6/InterceptorsTest.java | 51 ++-- .../v2_6/WrapperSuppressReceiveSpansTest.java | 41 ++- .../kafkaclients/v2_6/WrapperTest.java | 52 ++-- .../kafkastreams/KafkaStreamsDefaultTest.java | 116 ++++---- .../KafkaStreamsSuppressReceiveSpansTest.java | 83 +++--- .../KubernetesClientTest.java | 54 ++-- .../KubernetesClientVer20Test.java | 54 ++-- .../lettuce/v4_0/LettuceAsyncClientTest.java | 49 ++-- .../lettuce/v4_0/LettuceSyncClientTest.java | 45 ++-- .../lettuce/v5_0/LettuceAsyncClientTest.java | 81 +++--- .../v5_0/LettuceReactiveClientTest.java | 88 +++--- .../lettuce/v5_0/LettuceSyncClientTest.java | 75 +++--- .../v5_1/LettuceReactiveClientTest.java | 38 +-- .../v5_1/AbstractLettuceAsyncClientTest.java | 100 ++++--- .../v5_1/AbstractLettuceClientTest.java | 4 +- .../AbstractLettuceReactiveClientTest.java | 139 +++++----- .../AbstractLettuceSyncClientAuthTest.java | 68 ++--- .../v5_1/AbstractLettuceSyncClientTest.java | 253 ++++++++---------- .../log4j/appender/v1_2/Log4j1Test.java | 13 +- .../log4j/appender/v2_17/Log4j2Test.java | 13 +- .../appender/v2_17/Slf4jToLog4jTest.java | 12 +- .../AbstractOpenTelemetryAppenderTest.java | 14 +- .../logback/appender/v1_0/LogbackTest.java | 13 +- .../AbstractOpenTelemetryAppenderTest.java | 13 +- .../testing/AbstractMongoClientTest.java | 28 +- .../netty/v3_8/client/Netty38ClientTest.java | 7 +- .../netty/v3_8/server/Netty38ServerTest.java | 4 +- .../v4_0/client/Netty40ClientSslTest.java | 48 ++-- .../netty/v4_0/client/Netty40ClientTest.java | 8 +- .../client/Netty40ConnectionSpanTest.java | 31 ++- .../netty/v4_0/server/Netty40ServerTest.java | 4 +- .../netty/v4_1/Netty41ClientSslTest.java | 60 +++-- .../netty/v4_1/Netty41ConnectionSpanTest.java | 40 +-- .../netty/v4_1/AbstractNetty41ClientTest.java | 7 +- .../netty/v4_1/AbstractNetty41ServerTest.java | 6 +- .../okhttp/v2_2/OkHttp2Test.java | 5 +- .../okhttp/v3_0/AbstractOkHttp3Test.java | 4 +- .../src/test/java/OpenSearchRestTest.java | 50 ++-- .../opentelemetryapi/TracerTest.java | 11 +- .../instrumentationapi/ContextBridgeTest.java | 17 +- .../play/v2_4/client/PlayWsClientTest.java | 5 +- .../play/v2_4/server/PlayServerTest.java | 4 +- .../play/v2_4/server/PlayServerTest.java | 4 +- .../playws/v2_1/PlayWsClientBaseTest.java | 12 +- .../playws/PlayWsClientBaseTest.java | 12 +- .../pulsar/v2_8/AbstractPulsarClientTest.java | 8 +- .../v1_0/AbstractR2dbcStatementTest.java | 2 +- .../rabbitmq/RabbitMqTest.java | 41 +-- .../rabbitmq/ReactorRabbitMqTest.java | 17 +- .../ratpack/RatpackForkedHttpClientTest.java | 8 +- .../ratpack/RatpackHttpClientTest.java | 8 +- .../ratpack/RatpackPooledHttpClientTest.java | 8 +- .../v1_7/AbstractRatpackHttpClientTest.java | 5 +- .../kafka/v1_0/AbstractReactorKafkaTest.java | 59 ++-- .../AbstractReactorNettyHttpClientTest.java | 7 +- .../v0_9/ReactorNettyConnectionSpanTest.java | 45 ++-- .../AbstractReactorNettyHttpClientTest.java | 29 +- .../v1_0/ReactorNettyBaseUrlOnlyTest.java | 30 ++- .../v1_0/ReactorNettyClientSslTest.java | 110 ++++---- .../v1_0/ReactorNettyConnectionSpanTest.java | 75 +++--- .../v1_0/ReactorNettyHttpClientTest.java | 8 +- .../AbstractRedissonAsyncClientTest.java | 88 +++--- .../redisson/AbstractRedissonClientTest.java | 245 +++++++---------- .../resources/JarServiceNameDetectorTest.java | 14 +- .../ManifestResourceProviderTest.java | 10 +- .../instrumentation/rmi/RmiTest.java | 20 +- .../v4_8/AbstractRocketMqClientTest.java | 161 ++++------- ...RocketMqClientSuppressReceiveSpanTest.java | 9 +- .../v5_0/AbstractRocketMqClientTest.java | 27 +- .../java8/ThreadsStableSemconvTest.java | 21 +- .../v3_0/jetty/JettyServletHandlerTest.java | 4 +- .../v5_0/jetty/JettyServletHandlerTest.java | 5 +- .../sparkjava/SparkJavaBasedTest.java | 46 ++-- ...cInstrumentationAutoConfigurationTest.java | 9 +- .../resources/SpringResourceProviderTest.java | 10 +- .../SpringBootServiceNameDetectorTest.java | 9 +- .../SpringBootServiceVersionDetectorTest.java | 4 +- .../spring/aws/AwsSqsTest.java | 79 +++--- .../data/v3_0/ReactiveSpringDataTest.java | 2 +- .../spring/data/AbstractSpringJpaTest.java | 190 ++++++------- .../v4_1/SpringIntegrationAndRabbitTest.java | 88 +++--- .../spring/jms/v2_0/AbstractJmsTest.java | 34 ++- .../jms/v6_0/SpringJmsListenerTest.java | 77 ++---- ...pringListenerSuppressReceiveSpansTest.java | 29 +- .../spring/kafka/v2_7/SpringKafkaTest.java | 217 ++++++--------- ...ractSpringKafkaNoReceiveTelemetryTest.java | 159 +++++------ .../rabbit/v1_0/SpringRabbitMqTest.java | 40 +-- .../spring/rmi/v4_0/SpringRmiTest.java | 33 +-- .../scheduling/v3_1/SpringSchedulingTest.java | 10 +- .../v3_1/SpringWebInstrumentationTest.java | 4 +- .../v5_0/server/SpringWebfluxTest.java | 106 +++----- ...pringWebfluxClientInstrumentationTest.java | 23 +- .../spymemcached/SpymemcachedTest.java | 154 +++++------ .../undertow/UndertowServerDispatchTest.java | 4 +- .../undertow/UndertowServerTest.java | 84 +++--- .../v3_0/client/VertxHttpClientTest.java | 12 +- .../kafka/v3_6/AbstractVertxKafkaTest.java | 61 ++--- .../v4_0/redis/VertxRedisClientTest.java | 37 +-- .../vertx/v4_0/sql/VertxSqlClientTest.java | 68 +++-- 186 files changed, 4013 insertions(+), 4481 deletions(-) diff --git a/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTest.java b/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTest.java index b33be477f625..b5aac93905d6 100644 --- a/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTest.java +++ b/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTest.java @@ -8,6 +8,11 @@ import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; @@ -16,8 +21,6 @@ import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.lang.reflect.Field; import java.net.InetAddress; @@ -135,23 +138,22 @@ void testApacheDubboBase() throws ReflectiveOperationException { RpcIncubatingAttributes.RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invoke"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), + satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( - ServerAttributes.SERVER_PORT, k -> k.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(String.class))), satisfies( - NetworkAttributes.NETWORK_PEER_PORT, + NETWORK_PEER_PORT, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(Long.class))), satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), @@ -170,14 +172,9 @@ void testApacheDubboBase() throws ReflectiveOperationException { RpcIncubatingAttributes.RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), - satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, - k -> k.isInstanceOf(String.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - k -> k.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_TYPE, AbstractAssert::isNull)))); + satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), + satisfies(NETWORK_TYPE, AbstractAssert::isNull)))); } @Test @@ -235,23 +232,22 @@ void testApacheDubboTest() RpcIncubatingAttributes.RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invokeAsync"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), + satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( - ServerAttributes.SERVER_PORT, k -> k.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(String.class))), satisfies( - NetworkAttributes.NETWORK_PEER_PORT, + NETWORK_PEER_PORT, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(Long.class))), satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), @@ -270,14 +266,10 @@ void testApacheDubboTest() RpcIncubatingAttributes.RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), + satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, - k -> k.isInstanceOf(String.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - k -> k.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), diff --git a/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTraceChainTest.java b/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTraceChainTest.java index 8eaa9368f719..a792c8e71279 100644 --- a/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTraceChainTest.java +++ b/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTraceChainTest.java @@ -8,6 +8,11 @@ import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; @@ -18,8 +23,6 @@ import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.lang.reflect.Field; import java.net.InetAddress; @@ -178,23 +181,22 @@ void testDubboChain() throws ReflectiveOperationException { RpcIncubatingAttributes.RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invoke"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), + satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( - ServerAttributes.SERVER_PORT, k -> k.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(String.class))), satisfies( - NetworkAttributes.NETWORK_PEER_PORT, + NETWORK_PEER_PORT, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(Long.class))), satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), @@ -213,14 +215,10 @@ void testDubboChain() throws ReflectiveOperationException { RpcIncubatingAttributes.RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.MiddleService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), + satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, - k -> k.isInstanceOf(String.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - k -> k.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), @@ -238,23 +236,22 @@ void testDubboChain() throws ReflectiveOperationException { RpcIncubatingAttributes.RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invoke"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), + satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( - ServerAttributes.SERVER_PORT, k -> k.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(String.class))), satisfies( - NetworkAttributes.NETWORK_PEER_PORT, + NETWORK_PEER_PORT, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(Long.class))), satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), @@ -273,14 +270,10 @@ void testDubboChain() throws ReflectiveOperationException { RpcIncubatingAttributes.RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), + satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, - k -> k.isInstanceOf(String.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - k -> k.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), @@ -359,23 +352,22 @@ void testDubboChainInJvm() throws ReflectiveOperationException { RpcIncubatingAttributes.RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invoke"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - satisfies( - ServerAttributes.SERVER_PORT, k -> k.isInstanceOf(Long.class)), + equalTo(SERVER_ADDRESS, "localhost"), + satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(String.class))), satisfies( - NetworkAttributes.NETWORK_PEER_PORT, + NETWORK_PEER_PORT, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), val -> assertThat(val).isInstanceOf(Long.class))), satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), @@ -394,14 +386,10 @@ void testDubboChainInJvm() throws ReflectiveOperationException { RpcIncubatingAttributes.RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.MiddleService"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), + satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, - k -> k.isInstanceOf(String.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - k -> k.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isNull(), diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java index cf804e182196..f4f8210f39ba 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java @@ -5,11 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v5_0; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; + import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import java.net.URI; import java.time.Duration; import java.util.HashSet; @@ -40,7 +41,7 @@ protected Set> getHttpAttributes(URI uri) { || "https://192.0.2.1/".equals(uri.toString()) || uri.toString().contains("/read-timeout") || uri.toString().contains("/circular-redirect")) { - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); } return attributes; } diff --git a/instrumentation/armeria/armeria-1.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaHttp2Test.java b/instrumentation/armeria/armeria-1.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaHttp2Test.java index 4351adc47c4c..0c82f9730e70 100644 --- a/instrumentation/armeria/armeria-1.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaHttp2Test.java +++ b/instrumentation/armeria/armeria-1.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaHttp2Test.java @@ -7,6 +7,19 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ClientAttributes.CLIENT_ADDRESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; +import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import static org.assertj.core.api.Assertions.assertThat; import com.linecorp.armeria.client.WebClient; @@ -16,12 +29,6 @@ import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; -import io.opentelemetry.semconv.ClientAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -65,72 +72,60 @@ void testHello() throws Exception { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(UrlAttributes.URL_FULL, server2.httpUri() + "/"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "2"), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, server2.httpPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))), + equalTo(URL_FULL, server2.httpUri() + "/"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(NETWORK_PROTOCOL_VERSION, "2"), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, server2.httpPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))), span -> span.hasName("GET /") .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, "/"), - equalTo(HttpAttributes.HTTP_ROUTE, "/"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "2"), - equalTo(ClientAttributes.CLIENT_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, server2.httpPort()), - satisfies( - UserAgentAttributes.USER_AGENT_ORIGINAL, - val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))), + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, "/"), + equalTo(HTTP_ROUTE, "/"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(NETWORK_PROTOCOL_VERSION, "2"), + equalTo(CLIENT_ADDRESS, "127.0.0.1"), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, server2.httpPort()), + satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(UrlAttributes.URL_FULL, server1.httpUri() + "/"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "2"), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, server1.httpPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))), + equalTo(URL_FULL, server1.httpUri() + "/"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(NETWORK_PROTOCOL_VERSION, "2"), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, server1.httpPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))), span -> span.hasName("GET /") .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, "/"), - equalTo(HttpAttributes.HTTP_ROUTE, "/"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "2"), - equalTo(ClientAttributes.CLIENT_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, server1.httpPort()), - satisfies( - UserAgentAttributes.USER_AGENT_ORIGINAL, - val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))))); + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, "/"), + equalTo(HTTP_ROUTE, "/"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(NETWORK_PROTOCOL_VERSION, "2"), + equalTo(CLIENT_ADDRESS, "127.0.0.1"), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, server1.httpPort()), + satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))))); } } diff --git a/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/grpc/v1_14/ArmeriaGrpcTest.java b/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/grpc/v1_14/ArmeriaGrpcTest.java index a3dafa9893dc..97bb4aea78e1 100644 --- a/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/grpc/v1_14/ArmeriaGrpcTest.java +++ b/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/grpc/v1_14/ArmeriaGrpcTest.java @@ -6,6 +6,8 @@ package io.opentelemetry.javaagent.instrumentation.armeria.grpc.v1_14; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.assertThat; import com.linecorp.armeria.client.grpc.GrpcClients; @@ -18,7 +20,6 @@ import io.grpc.stub.StreamObserver; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; -import io.opentelemetry.semconv.ServerAttributes; import io.opentelemetry.semconv.incubating.MessageIncubatingAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import org.junit.jupiter.api.Test; @@ -81,8 +82,8 @@ void grpcInstrumentation() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.httpPort())) + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, (long) server.httpPort())) .hasEventsSatisfyingExactly( event -> event @@ -108,8 +109,8 @@ void grpcInstrumentation() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, server.httpPort())) + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, server.httpPort())) .hasEventsSatisfyingExactly( event -> event diff --git a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientTest.java b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientTest.java index b273548b9f2c..f85f3e154acc 100644 --- a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientTest.java +++ b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.asynchttpclient.v1_9; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; + import com.ning.http.client.AsyncCompletionHandler; import com.ning.http.client.AsyncHttpClient; import com.ning.http.client.AsyncHttpClientConfig; @@ -18,7 +20,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import java.net.URI; import java.util.HashSet; import java.util.Map; @@ -107,7 +108,7 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { endpoint -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); return attributes; }); } diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaApiGatewayHandlerTest.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaApiGatewayHandlerTest.java index 27cecb000412..e97ea6d19edb 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaApiGatewayHandlerTest.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaApiGatewayHandlerTest.java @@ -6,6 +6,10 @@ package io.opentelemetry.javaagent.instrumentation.awslambdaevents.v2_2; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @@ -16,9 +20,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import io.opentelemetry.semconv.incubating.FaasIncubatingAttributes; import java.util.HashMap; import java.util.Map; @@ -84,10 +85,10 @@ void tracedWithHttpPropagation() { .hasAttributesSatisfyingExactly( equalTo(FaasIncubatingAttributes.FAAS_INVOCATION_ID, "1-22-2024"), equalTo(FaasIncubatingAttributes.FAAS_TRIGGER, "http"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "PUT"), - equalTo(UserAgentAttributes.USER_AGENT_ORIGINAL, "Clever Client"), - equalTo(UrlAttributes.URL_FULL, "http://localhost:2024/hello/world"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 201L)))); + equalTo(HTTP_REQUEST_METHOD, "PUT"), + equalTo(USER_AGENT_ORIGINAL, "Clever Client"), + equalTo(URL_FULL, "http://localhost:2024/hello/world"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 201L)))); } public static class TestRequestHandlerApiGateway diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaApiGatewayWrapperTest.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaApiGatewayWrapperTest.java index 0e70a0d6db46..5e36aba991e3 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaApiGatewayWrapperTest.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaApiGatewayWrapperTest.java @@ -6,6 +6,10 @@ package io.opentelemetry.instrumentation.awslambdaevents.v2_2; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @@ -17,9 +21,6 @@ import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.WrappedLambda; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import io.opentelemetry.semconv.incubating.CloudIncubatingAttributes; import io.opentelemetry.semconv.incubating.FaasIncubatingAttributes; import java.util.HashMap; @@ -105,11 +106,10 @@ void tracedWithHttpPropagation() { equalTo(CloudIncubatingAttributes.CLOUD_ACCOUNT_ID, "123456789"), equalTo(FaasIncubatingAttributes.FAAS_INVOCATION_ID, "1-22-333"), equalTo(FaasIncubatingAttributes.FAAS_TRIGGER, "http"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UserAgentAttributes.USER_AGENT_ORIGINAL, "Test Client"), - equalTo( - UrlAttributes.URL_FULL, "http://localhost:123/hello/world?a=b&c=d"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L)))); + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(USER_AGENT_ORIGINAL, "Test Client"), + equalTo(URL_FULL, "http://localhost:123/hello/world?a=b&c=d"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)))); } @Test diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsEventWrapperTest.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsEventWrapperTest.java index 24b6439c24c9..27c208714e7e 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsEventWrapperTest.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsEventWrapperTest.java @@ -7,6 +7,8 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.mockito.Mockito.when; import com.amazonaws.services.lambda.runtime.Context; @@ -86,11 +88,10 @@ void eventTraced() { .hasKind(SpanKind.CONSUMER) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process")))); + equalTo(MESSAGING_OPERATION, "process")))); } public static final class TestRequestHandler implements RequestHandler { diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsMessageHandlerTest.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsMessageHandlerTest.java index 364d10f10b11..8cf52012601e 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsMessageHandlerTest.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsMessageHandlerTest.java @@ -7,6 +7,10 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.mockito.Mockito.when; import com.amazonaws.services.lambda.runtime.Context; @@ -88,10 +92,10 @@ void processSpans() { .hasParentSpanId(trace.getSpan(0).getSpanId()) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process")) + equalTo(MESSAGING_OPERATION, "process")) .hasLinks( LinkData.create( SpanContext.createFromRemoteParent( @@ -111,13 +115,12 @@ void processSpans() { .hasParentSpanId(trace.getSpan(1).getSpanId()) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, "message1"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "queue1")) + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_MESSAGE_ID, "message1"), + equalTo(MESSAGING_DESTINATION_NAME, "queue1")) .hasLinks( LinkData.create( SpanContext.createFromRemoteParent( @@ -131,13 +134,12 @@ void processSpans() { .hasParentSpanId(trace.getSpan(1).getSpanId()) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, "message2"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "queue1")) + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_MESSAGE_ID, "message2"), + equalTo(MESSAGING_DESTINATION_NAME, "queue1")) .hasLinks( LinkData.create( SpanContext.createFromRemoteParent( diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AbstractAwsLambdaSqsEventHandlerTest.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AbstractAwsLambdaSqsEventHandlerTest.java index 070c8f0f3019..4ee227887368 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AbstractAwsLambdaSqsEventHandlerTest.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AbstractAwsLambdaSqsEventHandlerTest.java @@ -7,6 +7,8 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.mockito.Mockito.when; import com.amazonaws.services.lambda.runtime.Context; @@ -82,11 +84,10 @@ void sameSource() { .hasParentSpanId(trace.getSpan(0).getSpanId()) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process")) + equalTo(MESSAGING_OPERATION, "process")) .hasLinksSatisfying( links -> assertThat(links) @@ -132,11 +133,10 @@ void differentSource() { .hasParentSpanId(trace.getSpan(0).getSpanId()) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process")) + equalTo(MESSAGING_OPERATION, "process")) .hasLinksSatisfying( links -> assertThat(links) diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java index fae95611e7f5..8f290b779690 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java @@ -8,6 +8,16 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import com.amazonaws.auth.AWSStaticCredentialsProvider; @@ -24,10 +34,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; @@ -105,12 +111,12 @@ void testSimpleSqsProducerConsumerServices() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"))), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -129,24 +135,20 @@ void testSimpleSqsProducerConsumerServices() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1")), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1")), span -> span.hasName("testSdkSqs process") .hasKind(SpanKind.CONSUMER) @@ -163,24 +165,20 @@ void testSimpleSqsProducerConsumerServices() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1")), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1")), span -> span.hasName("process child") .hasParent(trace.getSpan(1)) @@ -225,12 +223,12 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"))), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -249,24 +247,20 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1")), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1")), span -> span.hasName("testSdkSqs process") .hasKind(SpanKind.CONSUMER) @@ -283,24 +277,20 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1")), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1")), span -> span.hasName("process child") .hasParent(trace.getSpan(1)) @@ -328,12 +318,12 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1")))); + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1")))); } @Test diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java index 94ca66f12df1..083a52a2f127 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java @@ -9,6 +9,17 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import com.amazonaws.auth.AWSStaticCredentialsProvider; @@ -30,10 +41,6 @@ import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; @@ -138,12 +145,12 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"))), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"))), trace -> trace.hasSpansSatisfyingExactly( span -> { @@ -161,24 +168,20 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"))); + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"))); if (testCaptureHeaders) { attributes.add( @@ -209,24 +212,19 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, - 1), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"))); + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"))); if (testCaptureHeaders) { attributes.add( @@ -255,24 +253,20 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"))); + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"))); if (testCaptureHeaders) { attributes.add( @@ -329,12 +323,12 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"))), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -353,24 +347,20 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"))), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"))), trace -> { AtomicReference receiveSpan = new AtomicReference<>(); AtomicReference processSpan = new AtomicReference<>(); @@ -401,13 +391,12 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo( - UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1")), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1")), span -> span.hasName("testSdkSqs receive") .hasKind(SpanKind.CONSUMER) @@ -427,27 +416,22 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), - equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes .MessagingSystemIncubatingValues.AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, - "receive"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "receive"), equalTo( MessagingIncubatingAttributes .MESSAGING_BATCH_MESSAGE_COUNT, 1), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1")), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1")), span -> span.hasName("testSdkSqs process") .hasKind(SpanKind.CONSUMER) @@ -467,26 +451,21 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo( - UrlAttributes.URL_FULL, "http://localhost:" + sqsPort), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(URL_FULL, "http://localhost:" + sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes .MessagingSystemIncubatingValues.AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, - "process"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1")), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1")), span -> span.hasName("process child") .hasParent(processSpan.get()) diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java index 43c3db0ed42f..60d015f50fed 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java @@ -8,14 +8,17 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.ServerAttributes; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import io.opentelemetry.testing.internal.armeria.common.HttpResponse; import io.opentelemetry.testing.internal.armeria.common.HttpStatus; @@ -166,10 +169,10 @@ public void testSendDynamoDbRequestWithRetries() { span.hasKind(SpanKind.CLIENT); span.hasNoParent(); span.hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, server.httpPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, method), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, server.httpPort()), + equalTo(HTTP_REQUEST_METHOD, method), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo( stringKey("url.full"), "http://127.0.0.1:" + server.httpPort() + "/"), equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), @@ -178,15 +181,15 @@ public void testSendDynamoDbRequestWithRetries() { equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo(AwsIncubatingAttributes.AWS_REQUEST_ID, requestId), equalTo(stringKey("aws.table.name"), "sometable"), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "dynamodb"), - equalTo(DbIncubatingAttributes.DB_OPERATION, operation)); + equalTo(DB_SYSTEM, "dynamodb"), + equalTo(DB_OPERATION, operation)); if (isRecordIndividualHttpErrorEnabled()) { span.hasEventsSatisfyingExactly( event -> event .hasName("HTTP request failure") .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 500), + equalTo(HTTP_RESPONSE_STATUS_CODE, 500), equalTo( stringKey("aws.http.error_message"), "DynamoDB could not process your request")), @@ -194,7 +197,7 @@ public void testSendDynamoDbRequestWithRetries() { event .hasName("HTTP request failure") .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 503), + equalTo(HTTP_RESPONSE_STATUS_CODE, 503), equalTo( stringKey("aws.http.error_message"), "DynamoDB is currently unavailable"))); diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java index be0effde3e4a..e61bd5ab7da0 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java @@ -9,6 +9,16 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.Attributes; @@ -18,9 +28,6 @@ import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; @@ -179,13 +186,12 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( - UrlAttributes.URL_FULL, - v -> v.startsWith("http://localhost:" + sqsPort)), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort))), + URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort))), trace -> trace.hasSpansSatisfyingExactly( span -> { @@ -209,25 +215,20 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( - UrlAttributes.URL_FULL, - v -> v.startsWith("http://localhost:" + sqsPort)), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - v -> v.isInstanceOf(String.class)))); + MESSAGING_MESSAGE_ID, v -> v.isInstanceOf(String.class)))); if (captureHeaders) { attributes.add( @@ -274,13 +275,12 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( - UrlAttributes.URL_FULL, - v -> v.startsWith("http://localhost:" + sqsPort)), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort)))); + URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort)))); } spanAsserts.addAll( @@ -293,26 +293,19 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( - UrlAttributes.URL_FULL, - v -> v.startsWith("http://localhost:" + sqsPort)), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes .MessagingSystemIncubatingValues.AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, - "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, - 1))); + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1))); if (captureHeaders) { attributes.add( @@ -340,26 +333,20 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( - UrlAttributes.URL_FULL, - v -> v.startsWith("http://localhost:" + sqsPort)), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes .MessagingSystemIncubatingValues.AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, - "process"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - v -> v.isInstanceOf(String.class)))); + MESSAGING_MESSAGE_ID, v -> v.isInstanceOf(String.class)))); if (captureHeaders) { attributes.add( @@ -521,22 +508,17 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessageBatch"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - satisfies( - UrlAttributes.URL_FULL, - v -> v.startsWith("http://localhost:" + sqsPort)), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + satisfies(URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"))); + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "publish"))); }, trace -> { List> spanAsserts = new ArrayList<>(); @@ -551,23 +533,18 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - satisfies( - UrlAttributes.URL_FULL, - v -> v.startsWith("http://localhost:" + sqsPort)), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + satisfies(URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 3))); + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 3))); // one of the 3 process spans is expected to not have a span link for (int i = 0; i <= 2; i++) { @@ -599,26 +576,21 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException { equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( - UrlAttributes.URL_FULL, + URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, sqsPort), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes .MessagingSystemIncubatingValues.AWS_SQS), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSdkSqs"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, - "process"), + equalTo(MESSAGING_DESTINATION_NAME, "testSdkSqs"), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - v -> v.isInstanceOf(String.class))); + MESSAGING_MESSAGE_ID, v -> v.isInstanceOf(String.class))); }, span -> span.hasName("process child") diff --git a/instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTest.java b/instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTest.java index f27cc23d7246..726c685d071e 100644 --- a/instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTest.java +++ b/instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTest.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.azurecore.v1_36; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; import static org.assertj.core.api.Assertions.assertThat; import com.azure.core.annotation.ExpectedResponses; @@ -30,7 +31,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.HttpAttributes; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -103,7 +103,7 @@ void testPipelineAndSuppression() { span.hasKind(SpanKind.CLIENT) .hasName(Boolean.getBoolean("testLatestDeps") ? "GET" : "HTTP GET") .hasStatus(StatusData.unset()) - .hasAttribute(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L))); + .hasAttribute(HTTP_RESPONSE_STATUS_CODE, 200L))); } @Test diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RestCamelTest.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RestCamelTest.java index feed0b0f1a99..1a0ef6fc31d5 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RestCamelTest.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RestCamelTest.java @@ -8,18 +8,25 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ClientAttributes.CLIENT_ADDRESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; +import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import com.google.common.collect.ImmutableMap; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerUsingTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; -import io.opentelemetry.semconv.ClientAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.junit.jupiter.api.AfterAll; @@ -95,37 +102,33 @@ void restComponentServerAndClientCallWithJettyBackend() { equalTo( stringKey("camel.uri"), "rest://get:api/%7Bmodule%7D/unit/%7BunitId%7D"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L)), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)), span -> span.hasName("GET /api/{module}/unit/{unitId}") .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, "/api/firstModule/unit/unitOne"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_ROUTE, "/api/{module}/unit/{unitId}"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, Long.valueOf(port)), - equalTo(ClientAttributes.CLIENT_ADDRESS, "127.0.0.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - UserAgentAttributes.USER_AGENT_ORIGINAL, - val -> val.isInstanceOf(String.class)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))), + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, "/api/firstModule/unit/unitOne"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_ROUTE, "/api/{module}/unit/{unitId}"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, Long.valueOf(port)), + equalTo(CLIENT_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))), span -> span.hasName("GET /api/{module}/unit/{unitId}") .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo( - UrlAttributes.URL_FULL, + URL_FULL, "http://localhost:" + port + "/api/firstModule/unit/unitOne"), satisfies( stringKey("camel.uri"), val -> val.isInstanceOf(String.class))), diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/SingleServiceCamelTest.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/SingleServiceCamelTest.java index 4bcbfc8c1631..abd90e0503d2 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/SingleServiceCamelTest.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/SingleServiceCamelTest.java @@ -7,14 +7,14 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import com.google.common.collect.ImmutableMap; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerUsingTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.UrlAttributes; import java.net.URI; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; @@ -69,8 +69,8 @@ public void singleCamelServiceSpan() { span.hasName("POST /camelService") .hasKind(SpanKind.SERVER) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(UrlAttributes.URL_FULL, requestUrl.toString()), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(URL_FULL, requestUrl.toString()), equalTo( stringKey("camel.uri"), requestUrl.toString().replace("localhost", "0.0.0.0"))))); diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/TwoServicesWithDirectClientCamelTest.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/TwoServicesWithDirectClientCamelTest.java index e1ecebc6a11c..49ece74b10ad 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/TwoServicesWithDirectClientCamelTest.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/TwoServicesWithDirectClientCamelTest.java @@ -8,6 +8,19 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ClientAttributes.CLIENT_ADDRESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; +import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import com.google.common.collect.ImmutableMap; import io.opentelemetry.api.trace.SpanKind; @@ -15,12 +28,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerUsingTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; -import io.opentelemetry.semconv.ClientAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; @@ -111,11 +118,9 @@ void twoCamelServiceSpans() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo( - UrlAttributes.URL_FULL, - "http://localhost:" + portOne + "/serviceOne"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(URL_FULL, "http://localhost:" + portOne + "/serviceOne"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L), equalTo( stringKey("camel.uri"), "http://localhost:" + portOne + "/serviceOne")), @@ -124,11 +129,9 @@ void twoCamelServiceSpans() throws Exception { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo( - UrlAttributes.URL_FULL, - "http://localhost:" + portOne + "/serviceOne"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(URL_FULL, "http://localhost:" + portOne + "/serviceOne"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L), equalTo( stringKey("camel.uri"), "http://0.0.0.0:" + portOne + "/serviceOne")), @@ -137,11 +140,9 @@ void twoCamelServiceSpans() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo( - UrlAttributes.URL_FULL, - "http://127.0.0.1:" + portTwo + "/serviceTwo"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(URL_FULL, "http://127.0.0.1:" + portTwo + "/serviceTwo"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L), equalTo( stringKey("camel.uri"), "http://127.0.0.1:" + portTwo + "/serviceTwo")), @@ -150,31 +151,25 @@ void twoCamelServiceSpans() throws Exception { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(3)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L), - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, "/serviceTwo"), - equalTo( - UserAgentAttributes.USER_AGENT_ORIGINAL, - "Jakarta Commons-HttpClient/3.1"), - equalTo(HttpAttributes.HTTP_ROUTE, "/serviceTwo"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, portTwo), - equalTo(ClientAttributes.CLIENT_ADDRESS, "127.0.0.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L), + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, "/serviceTwo"), + equalTo(USER_AGENT_ORIGINAL, "Jakarta Commons-HttpClient/3.1"), + equalTo(HTTP_ROUTE, "/serviceTwo"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, portTwo), + equalTo(CLIENT_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))), span -> span.hasName("POST /serviceTwo") .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(4)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo( - UrlAttributes.URL_FULL, - "http://127.0.0.1:" + portTwo + "/serviceTwo"), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(URL_FULL, "http://127.0.0.1:" + portTwo + "/serviceTwo"), equalTo( stringKey("camel.uri"), "jetty:http://0.0.0.0:" + portTwo + "/serviceTwo?arg=value")))); diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraTest.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraTest.java index 3e061418ae11..72012ceb4da3 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraTest.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraTest.java @@ -7,6 +7,9 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import com.datastax.oss.driver.api.core.CqlSession; import com.google.common.collect.ImmutableMap; @@ -14,7 +17,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerUsingTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.junit.jupiter.api.AfterAll; @@ -117,10 +119,10 @@ void testCassandra() { equalTo( stringKey("camel.uri"), "cql://" + host + ":" + cassandraPort + "/test"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), + equalTo(DB_NAME, "test"), equalTo( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, "select * from test.users where id=? ALLOW FILTERING"), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "cassandra")))); + equalTo(DB_SYSTEM, "cassandra")))); } } diff --git a/instrumentation/cassandra/cassandra-3.0/javaagent/src/test/java/CassandraClientTest.java b/instrumentation/cassandra/cassandra-3.0/javaagent/src/test/java/CassandraClientTest.java index 2db183ba837d..15b8f19c06d7 100644 --- a/instrumentation/cassandra/cassandra-3.0/javaagent/src/test/java/CassandraClientTest.java +++ b/instrumentation/cassandra/cassandra-3.0/javaagent/src/test/java/CassandraClientTest.java @@ -4,6 +4,16 @@ */ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.junit.jupiter.api.Named.named; import com.datastax.driver.core.Cluster; @@ -13,9 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; @@ -95,15 +102,14 @@ void syncTest(Parameter parameter) { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, cassandraHost), - equalTo(ServerAttributes.SERVER_PORT, cassandraPort), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, cassandraIp), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, cassandraPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "cassandra"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, cassandraHost), + equalTo(SERVER_PORT, cassandraPort), + equalTo(NETWORK_PEER_ADDRESS, cassandraIp), + equalTo(NETWORK_PEER_PORT, cassandraPort), + equalTo(DB_SYSTEM, "cassandra"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "USE " + parameter.keyspace))), trace -> trace.hasSpansSatisfyingExactly( @@ -112,27 +118,23 @@ void syncTest(Parameter parameter) { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, cassandraHost), - equalTo(ServerAttributes.SERVER_PORT, cassandraPort), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, cassandraIp), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, cassandraPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "cassandra"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, cassandraHost), + equalTo(SERVER_PORT, cassandraPort), + equalTo(NETWORK_PEER_ADDRESS, cassandraIp), + equalTo(NETWORK_PEER_PORT, cassandraPort), + equalTo(DB_SYSTEM, "cassandra"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_NAME), + SemconvStabilityUtil.getAttributeKey(DB_NAME), parameter.keyspace), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), parameter.expectedStatement), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), parameter.operation), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_CASSANDRA_TABLE), + SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), parameter.table)))); } else { testing.waitAndAssertTraces( @@ -143,23 +145,20 @@ void syncTest(Parameter parameter) { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, cassandraHost), - equalTo(ServerAttributes.SERVER_PORT, cassandraPort), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, cassandraIp), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, cassandraPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "cassandra"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, cassandraHost), + equalTo(SERVER_PORT, cassandraPort), + equalTo(NETWORK_PEER_ADDRESS, cassandraIp), + equalTo(NETWORK_PEER_PORT, cassandraPort), + equalTo(DB_SYSTEM, "cassandra"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), parameter.expectedStatement), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), parameter.operation), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_CASSANDRA_TABLE), + SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), parameter.table)))); } @@ -191,15 +190,14 @@ void asyncTest(Parameter parameter) { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, cassandraHost), - equalTo(ServerAttributes.SERVER_PORT, cassandraPort), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, cassandraIp), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, cassandraPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "cassandra"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, cassandraHost), + equalTo(SERVER_PORT, cassandraPort), + equalTo(NETWORK_PEER_ADDRESS, cassandraIp), + equalTo(NETWORK_PEER_PORT, cassandraPort), + equalTo(DB_SYSTEM, "cassandra"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "USE " + parameter.keyspace))), trace -> trace.hasSpansSatisfyingExactly( @@ -209,27 +207,23 @@ void asyncTest(Parameter parameter) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, cassandraHost), - equalTo(ServerAttributes.SERVER_PORT, cassandraPort), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, cassandraIp), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, cassandraPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "cassandra"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, cassandraHost), + equalTo(SERVER_PORT, cassandraPort), + equalTo(NETWORK_PEER_ADDRESS, cassandraIp), + equalTo(NETWORK_PEER_PORT, cassandraPort), + equalTo(DB_SYSTEM, "cassandra"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_NAME), + SemconvStabilityUtil.getAttributeKey(DB_NAME), parameter.keyspace), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), parameter.expectedStatement), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), parameter.operation), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_CASSANDRA_TABLE), + SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), parameter.table)), span -> span.hasName("callbackListener") @@ -245,23 +239,20 @@ void asyncTest(Parameter parameter) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, cassandraHost), - equalTo(ServerAttributes.SERVER_PORT, cassandraPort), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, cassandraIp), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, cassandraPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "cassandra"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, cassandraHost), + equalTo(SERVER_PORT, cassandraPort), + equalTo(NETWORK_PEER_ADDRESS, cassandraIp), + equalTo(NETWORK_PEER_PORT, cassandraPort), + equalTo(DB_SYSTEM, "cassandra"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), parameter.expectedStatement), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), parameter.operation), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_CASSANDRA_TABLE), + SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), parameter.table)), span -> span.hasName("callbackListener") diff --git a/instrumentation/cassandra/cassandra-4-common/testing/src/main/java/io/opentelemetry/cassandra/v4/common/AbstractCassandraTest.java b/instrumentation/cassandra/cassandra-4-common/testing/src/main/java/io/opentelemetry/cassandra/v4/common/AbstractCassandraTest.java index e8c06ee952c8..61caa713d17f 100644 --- a/instrumentation/cassandra/cassandra-4-common/testing/src/main/java/io/opentelemetry/cassandra/v4/common/AbstractCassandraTest.java +++ b/instrumentation/cassandra/cassandra-4-common/testing/src/main/java/io/opentelemetry/cassandra/v4/common/AbstractCassandraTest.java @@ -7,6 +7,8 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -16,6 +18,10 @@ import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_IDEMPOTENCE; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_PAGE_SIZE; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Named.named; @@ -28,8 +34,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; @@ -106,20 +110,17 @@ void syncTest(Parameter parameter) { v -> assertThat(v).isEqualTo("ipv6"))), equalTo(SERVER_ADDRESS, cassandraHost), equalTo(SERVER_PORT, cassandraPort), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, cassandraIp), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, cassandraPort), + equalTo(NETWORK_PEER_ADDRESS, cassandraIp), + equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_NAME), + SemconvStabilityUtil.getAttributeKey(DB_NAME), parameter.keyspace), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), parameter.expectedStatement), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), parameter.operation), equalTo(DB_CASSANDRA_CONSISTENCY_LEVEL, "LOCAL_ONE"), equalTo(DB_CASSANDRA_COORDINATOR_DC, "datacenter1"), @@ -132,8 +133,7 @@ void syncTest(Parameter parameter) { equalTo(DB_CASSANDRA_PAGE_SIZE, 5000), equalTo(DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, 0), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_CASSANDRA_TABLE), + SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), parameter.table)))); session.close(); @@ -172,20 +172,17 @@ void asyncTest(Parameter parameter) throws Exception { v -> assertThat(v).isEqualTo("ipv6"))), equalTo(SERVER_ADDRESS, cassandraHost), equalTo(SERVER_PORT, cassandraPort), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, cassandraIp), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, cassandraPort), + equalTo(NETWORK_PEER_ADDRESS, cassandraIp), + equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_NAME), + SemconvStabilityUtil.getAttributeKey(DB_NAME), parameter.keyspace), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), parameter.expectedStatement), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), parameter.operation), equalTo(DB_CASSANDRA_CONSISTENCY_LEVEL, "LOCAL_ONE"), equalTo(DB_CASSANDRA_COORDINATOR_DC, "datacenter1"), @@ -198,8 +195,7 @@ void asyncTest(Parameter parameter) throws Exception { equalTo(DB_CASSANDRA_PAGE_SIZE, 5000), equalTo(DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, 0), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_CASSANDRA_TABLE), + SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), parameter.table)), span -> span.hasName("child") diff --git a/instrumentation/cassandra/cassandra-4.4/testing/src/main/java/io/opentelemetry/testing/cassandra/v4_4/AbstractCassandra44Test.java b/instrumentation/cassandra/cassandra-4.4/testing/src/main/java/io/opentelemetry/testing/cassandra/v4_4/AbstractCassandra44Test.java index 648ecb86a927..1e393b692abf 100644 --- a/instrumentation/cassandra/cassandra-4.4/testing/src/main/java/io/opentelemetry/testing/cassandra/v4_4/AbstractCassandra44Test.java +++ b/instrumentation/cassandra/cassandra-4.4/testing/src/main/java/io/opentelemetry/testing/cassandra/v4_4/AbstractCassandra44Test.java @@ -7,6 +7,8 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -16,6 +18,10 @@ import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_IDEMPOTENCE; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_PAGE_SIZE; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Named.named; @@ -24,8 +30,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.cassandra.v4.common.AbstractCassandraTest; import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -66,20 +70,17 @@ void reactiveTest(Parameter parameter) { v -> assertThat(v).isEqualTo("ipv6"))), equalTo(SERVER_ADDRESS, cassandraHost), equalTo(SERVER_PORT, cassandraPort), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, cassandraIp), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, cassandraPort), + equalTo(NETWORK_PEER_ADDRESS, cassandraIp), + equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_NAME), + SemconvStabilityUtil.getAttributeKey(DB_NAME), parameter.keyspace), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), parameter.expectedStatement), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), parameter.operation), equalTo(DB_CASSANDRA_CONSISTENCY_LEVEL, "LOCAL_ONE"), equalTo(DB_CASSANDRA_COORDINATOR_DC, "datacenter1"), @@ -92,8 +93,7 @@ void reactiveTest(Parameter parameter) { equalTo(DB_CASSANDRA_PAGE_SIZE, 5000), equalTo(DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, 0), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_CASSANDRA_TABLE), + SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), parameter.table)), span -> span.hasName("child") diff --git a/instrumentation/clickhouse-client-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientTest.java b/instrumentation/clickhouse-client-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientTest.java index 63fb20f413d3..9c2dfb9d704d 100644 --- a/instrumentation/clickhouse-client-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientTest.java +++ b/instrumentation/clickhouse-client-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientTest.java @@ -6,6 +6,12 @@ package io.opentelemetry.javaagent.instrumentation.clickhouse; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -25,7 +31,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ServerAttributes; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -335,13 +340,11 @@ void testParameterizedQueryInput() throws ClickHouseException { @SuppressWarnings("deprecation") // using deprecated semconv private static List attributeAssertions(String statement, String operation) { return asList( - equalTo( - DbIncubatingAttributes.DB_SYSTEM, - DbIncubatingAttributes.DbSystemIncubatingValues.CLICKHOUSE), - equalTo(DbIncubatingAttributes.DB_NAME, dbName), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_STATEMENT, statement), - equalTo(DbIncubatingAttributes.DB_OPERATION, operation)); + equalTo(DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.CLICKHOUSE), + equalTo(DB_NAME, dbName), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_STATEMENT, statement), + equalTo(DB_OPERATION, operation)); } } diff --git a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseAsyncClientTest.java b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseAsyncClientTest.java index 9ee67015fa4c..4962dca118fe 100644 --- a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseAsyncClientTest.java +++ b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseAsyncClientTest.java @@ -6,6 +6,8 @@ package io.opentelemetry.instrumentation.couchbase; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Named.named; @@ -89,11 +91,10 @@ void hasBucket(BucketSettings bucketSettings) .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "Cluster.openBucket")), span -> assertCouchbaseSpan(span, "ClusterManager.hasBucket") @@ -133,11 +134,10 @@ void upsert(BucketSettings bucketSettings) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "Cluster.openBucket")), span -> assertCouchbaseSpan(span, "Bucket.upsert", bucketSettings.name()) @@ -184,11 +184,10 @@ void upsertAndGet(BucketSettings bucketSettings) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "Cluster.openBucket")), span -> assertCouchbaseSpan(span, "Bucket.upsert", bucketSettings.name()) @@ -232,11 +231,10 @@ void query() throws ExecutionException, InterruptedException, TimeoutException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "Cluster.openBucket")), span -> assertCouchbaseSpan( diff --git a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseClientTest.java b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseClientTest.java index b142e2b592d3..28995e26ec93 100644 --- a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseClientTest.java +++ b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseClientTest.java @@ -6,6 +6,8 @@ package io.opentelemetry.instrumentation.couchbase; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Named.named; @@ -108,11 +110,10 @@ void upsertAndGet(BucketSettings bucketSettings) { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "Cluster.openBucket"))), trace -> trace.hasSpansSatisfyingExactly( @@ -147,11 +148,10 @@ void query() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), + SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "Cluster.openBucket"))), trace -> trace.hasSpansSatisfyingExactly( diff --git a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseTest.java b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseTest.java index 1331c3e65b61..62a5164259ea 100644 --- a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseTest.java +++ b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseTest.java @@ -7,6 +7,10 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import com.couchbase.client.java.bucket.BucketType; import com.couchbase.client.java.cluster.BucketSettings; @@ -121,26 +125,17 @@ protected SpanDataAssert assertCouchbaseSpan( span.hasName(spanName).hasKind(SpanKind.CLIENT); List assertions = new ArrayList<>(); - assertions.add( - equalTo( - DbIncubatingAttributes.DB_SYSTEM, - DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE)); + assertions.add(equalTo(DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE)); if (operation != null) { - assertions.add( - equalTo( - SemconvStabilityUtil.getAttributeKey(DbIncubatingAttributes.DB_OPERATION), - operation)); + assertions.add(equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), operation)); } if (bucketName != null) { - assertions.add( - equalTo( - SemconvStabilityUtil.getAttributeKey(DbIncubatingAttributes.DB_NAME), bucketName)); + assertions.add(equalTo(SemconvStabilityUtil.getAttributeKey(DB_NAME), bucketName)); } if (statement != null) { assertions.add( satisfies( - SemconvStabilityUtil.getAttributeKey(DbIncubatingAttributes.DB_STATEMENT), - s -> s.startsWith(statement))); + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), s -> s.startsWith(statement))); } assertions.addAll(couchbaseAttributes()); diff --git a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/apiclient/ElasticsearchClientTest.java b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/apiclient/ElasticsearchClientTest.java index 1c1520c5bfef..8a553eda29e7 100644 --- a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/apiclient/ElasticsearchClientTest.java +++ b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/apiclient/ElasticsearchClientTest.java @@ -7,6 +7,14 @@ import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import co.elastic.clients.elasticsearch.ElasticsearchAsyncClient; import co.elastic.clients.elasticsearch.ElasticsearchClient; @@ -18,11 +26,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.io.IOException; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -90,23 +93,23 @@ public void elasticsearchStatus() throws IOException { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "info"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort())), + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(DB_OPERATION, "info"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, httpHost.toURI() + "/"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort())), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L)))); + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(URL_FULL, httpHost.toURI() + "/"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)))); } @Test @@ -126,13 +129,13 @@ public void elasticsearchIndex() throws IOException { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "index"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "PUT"), + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(DB_OPERATION, "index"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "PUT"), equalTo( - UrlAttributes.URL_FULL, + URL_FULL, httpHost.toURI() + "/test-index/_doc/test-id?timeout=10s"), equalTo( AttributeKey.stringKey("db.elasticsearch.path_parts.index"), @@ -145,14 +148,14 @@ public void elasticsearchIndex() throws IOException { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "PUT"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "PUT"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), equalTo( - UrlAttributes.URL_FULL, + URL_FULL, httpHost.toURI() + "/test-index/_doc/test-id?timeout=10s"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 201L)))); + equalTo(HTTP_RESPONSE_STATUS_CODE, 201L)))); } @Test @@ -187,23 +190,23 @@ public void elasticsearchStatusAsync() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "info"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/")), + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(DB_OPERATION, "info"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, httpHost.toURI() + "/")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L)), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(URL_FULL, httpHost.toURI() + "/"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java index 15b3a23ec8c7..06412321d748 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java @@ -6,16 +6,18 @@ package io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import com.fasterxml.jackson.databind.ObjectMapper; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.io.IOException; import java.util.Map; import java.util.concurrent.CountDownLatch; @@ -96,23 +98,23 @@ void elasticsearchStatus() throws IOException { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health")); + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")); }, span -> { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200)); + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200)); }); }); } @@ -172,23 +174,23 @@ public void onFailure(Exception e) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health")); + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")); }, span -> { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200)); + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200)); }, span -> { span.hasName("callback").hasKind(SpanKind.INTERNAL).hasParent(trace.getSpan(0)); diff --git a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java index ff3ccc15d302..2eea2d43bc34 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java @@ -6,16 +6,18 @@ package io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import com.fasterxml.jackson.databind.ObjectMapper; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.io.IOException; import java.util.Map; import java.util.concurrent.CountDownLatch; @@ -87,23 +89,23 @@ public void elasticsearchStatus() throws IOException { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health")); + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")); }, span -> { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L)); + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)); }); }); } @@ -162,23 +164,23 @@ public void onFailure(Exception e) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health")); + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")); }, span -> { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200)); + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200)); }, span -> { span.hasName("callback").hasKind(SpanKind.INTERNAL).hasParent(trace.getSpan(0)); diff --git a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java index 517a7a821f48..51f0a3ff6382 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java @@ -7,15 +7,17 @@ import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -85,22 +87,22 @@ public void elasticsearchStatus() throws Exception { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health")), + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L)))); + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)))); } @Test @@ -155,22 +157,22 @@ public void onFailure(Exception e) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health")), + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L)), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/elasticsearch/elasticsearch-rest-7.0/library/src/test/java/io/opentelemetry/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java b/instrumentation/elasticsearch/elasticsearch-rest-7.0/library/src/test/java/io/opentelemetry/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java index 09e74606b735..cdac9d2be11b 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-7.0/library/src/test/java/io/opentelemetry/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-7.0/library/src/test/java/io/opentelemetry/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java @@ -7,14 +7,15 @@ import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -85,12 +86,11 @@ public void elasticsearchStatus() throws Exception { .hasKind(SpanKind.CLIENT) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo( - UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health")))); + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")))); } @Test @@ -145,11 +145,11 @@ public void onFailure(Exception e) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "elasticsearch"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health")), + equalTo(DB_SYSTEM, "elasticsearch"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringRepositoryTest.java b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringRepositoryTest.java index e04bd93b3071..d621b8c1f442 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringRepositoryTest.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringRepositoryTest.java @@ -9,6 +9,8 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; @@ -87,9 +89,9 @@ void emptyRepository() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SearchAction"), + equalTo(DB_OPERATION, "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -121,9 +123,9 @@ void crud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "IndexAction"), + equalTo(DB_OPERATION, "IndexAction"), equalTo(stringKey("elasticsearch.action"), "IndexAction"), equalTo(stringKey("elasticsearch.request"), "IndexRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -139,9 +141,9 @@ void crud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RefreshAction"), + equalTo(DB_OPERATION, "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -170,9 +172,9 @@ void crud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GetAction"), + equalTo(DB_OPERATION, "GetAction"), equalTo(stringKey("elasticsearch.action"), "GetAction"), equalTo(stringKey("elasticsearch.request"), "GetRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -204,9 +206,9 @@ void crud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "IndexAction"), + equalTo(DB_OPERATION, "IndexAction"), equalTo(stringKey("elasticsearch.action"), "IndexAction"), equalTo(stringKey("elasticsearch.request"), "IndexRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -222,9 +224,9 @@ void crud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RefreshAction"), + equalTo(DB_OPERATION, "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -248,9 +250,9 @@ void crud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GetAction"), + equalTo(DB_OPERATION, "GetAction"), equalTo(stringKey("elasticsearch.action"), "GetAction"), equalTo(stringKey("elasticsearch.request"), "GetRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -280,9 +282,9 @@ void crud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DeleteAction"), + equalTo(DB_OPERATION, "DeleteAction"), equalTo(stringKey("elasticsearch.action"), "DeleteAction"), equalTo(stringKey("elasticsearch.request"), "DeleteRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -297,9 +299,9 @@ void crud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RefreshAction"), + equalTo(DB_OPERATION, "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -323,9 +325,9 @@ void crud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SearchAction"), + equalTo(DB_OPERATION, "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringTemplateTest.java b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringTemplateTest.java index 8127aacc342f..3c53c73c6fd1 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringTemplateTest.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringTemplateTest.java @@ -8,6 +8,8 @@ import static io.opentelemetry.api.common.AttributeKey.longKey; import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.awaitility.Awaitility.await; @@ -171,9 +173,9 @@ void elasticsearchError() { .hasException(expectedException) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RefreshAction"), + equalTo(DB_OPERATION, "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName)))); @@ -226,9 +228,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "CreateIndexAction"), + equalTo(DB_OPERATION, "CreateIndexAction"), equalTo(stringKey("elasticsearch.action"), "CreateIndexAction"), equalTo(stringKey("elasticsearch.request"), "CreateIndexRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName))), @@ -240,9 +242,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "ClusterHealthAction"), + equalTo(DB_OPERATION, "ClusterHealthAction"), equalTo(stringKey("elasticsearch.action"), "ClusterHealthAction"), equalTo(stringKey("elasticsearch.request"), "ClusterHealthRequest"))), trace -> @@ -253,9 +255,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SearchAction"), + equalTo(DB_OPERATION, "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName), @@ -268,9 +270,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "IndexAction"), + equalTo(DB_OPERATION, "IndexAction"), equalTo(stringKey("elasticsearch.action"), "IndexAction"), equalTo(stringKey("elasticsearch.request"), "IndexRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName), @@ -288,9 +290,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RefreshAction"), + equalTo(DB_OPERATION, "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName), @@ -305,9 +307,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SearchAction"), + equalTo(DB_OPERATION, "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName), @@ -389,9 +391,9 @@ void resultsExtractor() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SearchAction"), + equalTo(DB_OPERATION, "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName)))); diff --git a/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchNodeClientTest.java b/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchNodeClientTest.java index 05d534f96a48..857ad4fcb6f0 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchNodeClientTest.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchNodeClientTest.java @@ -8,6 +8,8 @@ import static io.opentelemetry.api.common.AttributeKey.longKey; import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Named.named; @@ -68,9 +70,9 @@ void elasticsearchStatus(ThrowingSupplier suppli .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "ClusterHealthAction"), + equalTo(DB_OPERATION, "ClusterHealthAction"), equalTo(ELASTICSEARCH_ACTION, "ClusterHealthAction"), equalTo(ELASTICSEARCH_REQUEST, "ClusterHealthRequest")), span -> @@ -117,9 +119,9 @@ void elasticsearchError(Runnable action) { .hasException(expectedException) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GetAction"), + equalTo(DB_OPERATION, "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, "invalid-index")), @@ -179,9 +181,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "CreateIndexAction"), + equalTo(DB_OPERATION, "CreateIndexAction"), equalTo(ELASTICSEARCH_ACTION, "CreateIndexAction"), equalTo(ELASTICSEARCH_REQUEST, "CreateIndexRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName))), @@ -193,9 +195,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "ClusterHealthAction"), + equalTo(DB_OPERATION, "ClusterHealthAction"), equalTo(ELASTICSEARCH_ACTION, "ClusterHealthAction"), equalTo(ELASTICSEARCH_REQUEST, "ClusterHealthRequest"))), trace -> @@ -206,9 +208,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GetAction"), + equalTo(DB_OPERATION, "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), @@ -224,9 +226,9 @@ void elasticsearchGet() { .hasAttributesSatisfyingExactly( addIndexActionAttributes( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "IndexAction"), + equalTo(DB_OPERATION, "IndexAction"), equalTo(ELASTICSEARCH_ACTION, "IndexAction"), equalTo(ELASTICSEARCH_REQUEST, "IndexRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), @@ -243,9 +245,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GetAction"), + equalTo(DB_OPERATION, "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), diff --git a/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchTransportClientTest.java b/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchTransportClientTest.java index 8180c23900f7..4b019433edeb 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchTransportClientTest.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchTransportClientTest.java @@ -11,6 +11,11 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Named.named; @@ -19,7 +24,6 @@ import io.opentelemetry.instrumentation.testing.util.ThrowingSupplier; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.NetworkAttributes; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.ArrayList; import java.util.Arrays; @@ -78,12 +82,12 @@ void elasticsearchStatus(ThrowingSupplier suppli .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addNetworkTypeAttribute( - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, getAddress()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, getPort()), + equalTo(NETWORK_PEER_ADDRESS, getAddress()), + equalTo(NETWORK_PEER_PORT, getPort()), equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "ClusterHealthAction"), + equalTo(DB_OPERATION, "ClusterHealthAction"), equalTo(ELASTICSEARCH_ACTION, "ClusterHealthAction"), equalTo(ELASTICSEARCH_REQUEST, "ClusterHealthRequest"))), span -> @@ -137,9 +141,9 @@ void elasticsearchError(Runnable action) { RemoteTransportException.class.getName()))) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GetAction"), + equalTo(DB_OPERATION, "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, "invalid-index")), @@ -195,12 +199,12 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( addNetworkTypeAttribute( - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, getAddress()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, getPort()), + equalTo(NETWORK_PEER_ADDRESS, getAddress()), + equalTo(NETWORK_PEER_PORT, getPort()), equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "CreateIndexAction"), + equalTo(DB_OPERATION, "CreateIndexAction"), equalTo(ELASTICSEARCH_ACTION, "CreateIndexAction"), equalTo(ELASTICSEARCH_REQUEST, "CreateIndexRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName)))), @@ -212,9 +216,9 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, getPutMappingActionName()), + equalTo(DB_OPERATION, getPutMappingActionName()), equalTo(ELASTICSEARCH_ACTION, getPutMappingActionName()), equalTo(ELASTICSEARCH_REQUEST, "PutMappingRequest"))), trace -> @@ -225,12 +229,12 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( addIndexActionAttributes( - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, getAddress()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, getPort()), + equalTo(NETWORK_PEER_ADDRESS, getAddress()), + equalTo(NETWORK_PEER_PORT, getPort()), equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "IndexAction"), + equalTo(DB_OPERATION, "IndexAction"), equalTo(ELASTICSEARCH_ACTION, "IndexAction"), equalTo(ELASTICSEARCH_REQUEST, "IndexRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), @@ -248,12 +252,12 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( addNetworkTypeAttribute( - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, getAddress()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, getPort()), + equalTo(NETWORK_PEER_ADDRESS, getAddress()), + equalTo(NETWORK_PEER_PORT, getPort()), equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GetAction"), + equalTo(DB_OPERATION, "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), @@ -268,12 +272,12 @@ void elasticsearchGet() { .hasNoParent() .hasAttributesSatisfyingExactly( addNetworkTypeAttribute( - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, getAddress()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, getPort()), + equalTo(NETWORK_PEER_ADDRESS, getAddress()), + equalTo(NETWORK_PEER_PORT, getPort()), equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GetAction"), + equalTo(DB_OPERATION, "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), @@ -291,7 +295,7 @@ private List addNetworkTypeAttribute(AttributeAssertion... a if (hasNetworkType()) { result.add( satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( val -> assertThat(val).isEqualTo("ipv4"), diff --git a/instrumentation/finagle-http-23.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/finaglehttp/v23_11/AbstractServerTest.java b/instrumentation/finagle-http-23.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/finaglehttp/v23_11/AbstractServerTest.java index 3b4730a25777..7fefb76a85f3 100644 --- a/instrumentation/finagle-http-23.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/finaglehttp/v23_11/AbstractServerTest.java +++ b/instrumentation/finagle-http-23.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/finaglehttp/v23_11/AbstractServerTest.java @@ -14,6 +14,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.QUERY_PARAM; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import com.google.common.collect.Sets; import com.twitter.finagle.ListeningServer; @@ -33,7 +34,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; -import io.opentelemetry.semconv.HttpAttributes; import java.net.URI; import java.util.Collections; import org.junit.jupiter.api.extension.RegisterExtension; @@ -48,9 +48,7 @@ protected void configure(HttpServerTestOptions options) { super.configure(options); options.setTestException(false); options.setHttpAttributes( - unused -> - Sets.difference( - DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HttpAttributes.HTTP_ROUTE))); + unused -> Sets.difference(DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HTTP_ROUTE))); options.setTestCaptureHttpHeaders(true); } diff --git a/instrumentation/finagle-http-23.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/finaglehttp/v23_11/ClientTest.java b/instrumentation/finagle-http-23.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/finaglehttp/v23_11/ClientTest.java index e58eda6d84c6..b0a7b7c350d1 100644 --- a/instrumentation/finagle-http-23.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/finaglehttp/v23_11/ClientTest.java +++ b/instrumentation/finagle-http-23.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/finaglehttp/v23_11/ClientTest.java @@ -6,6 +6,8 @@ package io.opentelemetry.javaagent.instrumentation.finaglehttp.v23_11; import static io.opentelemetry.javaagent.instrumentation.finaglehttp.v23_11.Utils.createClient; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.assertThat; import com.twitter.finagle.ConnectionFailedException; @@ -30,7 +32,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; import io.opentelemetry.javaagent.instrumentation.finaglehttp.v23_11.Utils.ClientType; -import io.opentelemetry.semconv.ServerAttributes; import java.net.ConnectException; import java.net.URI; import java.util.Collections; @@ -194,8 +195,8 @@ private static Set> getHttpAttributes(URI uri) { return Collections.emptySet(); } Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; } diff --git a/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/PutGetTest.java b/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/PutGetTest.java index efbad6848057..6974a48571dc 100644 --- a/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/PutGetTest.java +++ b/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/PutGetTest.java @@ -6,13 +6,16 @@ package io.opentelemetry.javaagent.instrumentation.geode; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; @@ -133,24 +136,24 @@ void assertGeodeTrace(String verb, String query) { span.hasName("clear test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "geode"), - equalTo(DbIncubatingAttributes.DB_NAME, "test-region"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "clear")), + equalTo(DB_SYSTEM, "geode"), + equalTo(DB_NAME, "test-region"), + equalTo(DB_OPERATION, "clear")), span -> span.hasName("put test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "geode"), - equalTo(DbIncubatingAttributes.DB_NAME, "test-region"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "put")), + equalTo(DB_SYSTEM, "geode"), + equalTo(DB_NAME, "test-region"), + equalTo(DB_OPERATION, "put")), span -> span.hasName(verb.concat(" test-region")) .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "geode"), - equalTo(DbIncubatingAttributes.DB_NAME, "test-region"), - equalTo(DbIncubatingAttributes.DB_OPERATION, verb), - equalTo(DbIncubatingAttributes.DB_STATEMENT, query)))); + equalTo(DB_SYSTEM, "geode"), + equalTo(DB_NAME, "test-region"), + equalTo(DB_OPERATION, verb), + equalTo(DB_STATEMENT, query)))); } static class Card implements DataSerializable { diff --git a/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java b/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java index 5782383e4eb4..cde2e417cfb8 100644 --- a/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java +++ b/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java @@ -8,6 +8,13 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import com.google.api.client.http.GenericUrl; import com.google.api.client.http.HttpRequest; @@ -23,11 +30,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; @@ -104,12 +106,12 @@ void errorTracesWhenExceptionIsNotThrown() throws Exception { List attributes = new ArrayList<>( Arrays.asList( - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - satisfies(ServerAttributes.SERVER_PORT, AbstractLongAssert::isPositive), - equalTo(UrlAttributes.URL_FULL, uri.toString()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 500), - equalTo(ErrorAttributes.ERROR_TYPE, "500"))); + equalTo(SERVER_ADDRESS, "localhost"), + satisfies(SERVER_PORT, AbstractLongAssert::isPositive), + equalTo(URL_FULL, uri.toString()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 500), + equalTo(ERROR_TYPE, "500"))); testing.waitAndAssertTraces( trace -> @@ -139,7 +141,7 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { uri -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); return attributes; }); } diff --git a/instrumentation/graphql-java/graphql-java-common/testing/src/main/java/io/opentelemetry/instrumentation/graphql/AbstractGraphqlTest.java b/instrumentation/graphql-java/graphql-java-common/testing/src/main/java/io/opentelemetry/instrumentation/graphql/AbstractGraphqlTest.java index afc4da0ca6bc..351241a569f9 100644 --- a/instrumentation/graphql-java/graphql-java-common/testing/src/main/java/io/opentelemetry/instrumentation/graphql/AbstractGraphqlTest.java +++ b/instrumentation/graphql-java/graphql-java-common/testing/src/main/java/io/opentelemetry/instrumentation/graphql/AbstractGraphqlTest.java @@ -9,6 +9,8 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import graphql.ExecutionResult; import graphql.GraphQL; @@ -25,7 +27,6 @@ import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.GraphqlIncubatingAttributes; import java.io.IOException; import java.io.InputStreamReader; @@ -245,11 +246,9 @@ void parseError() { event .hasName("exception") .hasAttributesSatisfyingExactly( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - "InvalidSyntax"), + equalTo(EXCEPTION_TYPE, "InvalidSyntax"), satisfies( - ExceptionAttributes.EXCEPTION_MESSAGE, + EXCEPTION_MESSAGE, message -> message.startsWithIgnoringCase( "Invalid Syntax")))))); @@ -287,11 +286,9 @@ void validationError() { event .hasName("exception") .hasAttributesSatisfyingExactly( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - "ValidationError"), + equalTo(EXCEPTION_TYPE, "ValidationError"), satisfies( - ExceptionAttributes.EXCEPTION_MESSAGE, + EXCEPTION_MESSAGE, message -> message.startsWith("Validation error")))))); } diff --git a/instrumentation/grizzly-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyFilterchainServerTest.java b/instrumentation/grizzly-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyFilterchainServerTest.java index 37bc838b8dc4..f8648d46023e 100644 --- a/instrumentation/grizzly-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyFilterchainServerTest.java +++ b/instrumentation/grizzly-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyFilterchainServerTest.java @@ -8,6 +8,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.EXCEPTION; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.INDEXED_CHILD; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import static java.nio.charset.Charset.defaultCharset; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static org.glassfish.grizzly.memory.Buffers.wrap; @@ -18,7 +19,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; -import io.opentelemetry.semconv.HttpAttributes; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.HashMap; @@ -71,7 +71,7 @@ protected void configure(HttpServerTestOptions options) { serverEndpoint -> { Set> attributes = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(HttpAttributes.HTTP_ROUTE); + attributes.remove(HTTP_ROUTE); return attributes; }); diff --git a/instrumentation/grizzly-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyTest.java b/instrumentation/grizzly-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyTest.java index dee567d5a936..af07764dcf82 100644 --- a/instrumentation/grizzly-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyTest.java +++ b/instrumentation/grizzly-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyTest.java @@ -12,6 +12,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.QUERY_PARAM; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -19,7 +20,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; -import io.opentelemetry.semconv.HttpAttributes; import java.io.IOException; import java.util.HashSet; import java.util.Set; @@ -109,7 +109,7 @@ protected void configure(HttpServerTestOptions options) { serverEndpoint -> { Set> attributes = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(HttpAttributes.HTTP_ROUTE); + attributes.remove(HTTP_ROUTE); return attributes; }); options.setTestCaptureHttpHeaders(false); diff --git a/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcStreamingTest.java b/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcStreamingTest.java index cfc1906634ab..e867b98134b6 100644 --- a/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcStreamingTest.java +++ b/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcStreamingTest.java @@ -9,6 +9,11 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import example.GreeterGrpc; import example.Helloworld; @@ -25,8 +30,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.util.ThrowingRunnable; import io.opentelemetry.sdk.trace.data.EventData; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import io.opentelemetry.semconv.incubating.MessageIncubatingAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.util.ArrayList; @@ -190,8 +193,8 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .satisfies( spanData -> assertThat(spanData.getEvents()) @@ -207,13 +210,11 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .satisfies( spanData -> assertThat(spanData.getEvents()) @@ -232,8 +233,7 @@ public void onCompleted() { histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), equalTo( RpcIncubatingAttributes.RPC_METHOD, "Conversation"), @@ -258,10 +258,8 @@ public void onCompleted() { histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo( - ServerAttributes.SERVER_PORT, server.getPort()), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), equalTo( RpcIncubatingAttributes.RPC_METHOD, "Conversation"), diff --git a/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcTest.java b/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcTest.java index 2dd00edfe5eb..f76a91c26488 100644 --- a/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcTest.java +++ b/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcTest.java @@ -8,6 +8,11 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.params.provider.Arguments.arguments; @@ -47,8 +52,6 @@ import io.opentelemetry.instrumentation.testing.util.ThrowingRunnable; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import io.opentelemetry.semconv.incubating.MessageIncubatingAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.util.ArrayList; @@ -142,8 +145,8 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( event -> event @@ -171,13 +174,11 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .hasEventsSatisfyingExactly( event -> event @@ -208,8 +209,7 @@ public void sayHello( histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -233,10 +233,8 @@ public void sayHello( histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo( - ServerAttributes.SERVER_PORT, server.getPort()), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -310,8 +308,8 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( event -> event @@ -339,13 +337,11 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .hasEventsSatisfyingExactly( event -> event @@ -380,8 +376,7 @@ public void sayHello( histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -405,10 +400,8 @@ public void sayHello( histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo( - ServerAttributes.SERVER_PORT, server.getPort()), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -490,8 +483,8 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( event -> event @@ -519,13 +512,11 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .hasEventsSatisfyingExactly( event -> event @@ -560,8 +551,7 @@ public void onCompleted() { histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -585,10 +575,8 @@ public void onCompleted() { histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo( - ServerAttributes.SERVER_PORT, server.getPort()), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -645,8 +633,8 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) status.getCode().value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( event -> event @@ -667,13 +655,11 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) status.getCode().value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .hasEventsSatisfying( events -> { assertThat(events).isNotEmpty(); @@ -704,8 +690,7 @@ public void sayHello( histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -729,10 +714,8 @@ public void sayHello( histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo( - ServerAttributes.SERVER_PORT, server.getPort()), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -797,8 +780,8 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.UNKNOWN.getCode().value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( event -> event @@ -819,13 +802,11 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.UNKNOWN.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .hasEventsSatisfying( events -> { assertThat(events).hasSize(2); @@ -851,8 +832,7 @@ public void sayHello( histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), + equalTo(SERVER_ADDRESS, "localhost"), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -876,10 +856,8 @@ public void sayHello( histogram.hasPointsSatisfying( point -> point.hasAttributesSatisfying( - equalTo( - ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo( - ServerAttributes.SERVER_PORT, server.getPort()), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), equalTo( RpcIncubatingAttributes.RPC_METHOD, "SayHello"), equalTo( @@ -1045,8 +1023,8 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( event -> event @@ -1074,13 +1052,11 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .hasEventsSatisfyingExactly( event -> event @@ -1168,8 +1144,8 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.CANCELLED.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfying( events -> { assertThat(events).hasSize(3); @@ -1197,13 +1173,11 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.CANCELLED.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .hasEventsSatisfyingExactly( event -> event @@ -1290,8 +1264,8 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( event -> event @@ -1322,13 +1296,11 @@ public void onCompleted() { equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .hasEventsSatisfyingExactly( event -> event @@ -1400,8 +1372,8 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, (long) server.getPort()))) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( event -> event @@ -1429,13 +1401,11 @@ public void sayHello( equalTo( RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.getPort()), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> assertThat(val).isNotNull())) + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.getPort()), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())) .hasEventsSatisfyingExactly( event -> event @@ -1692,10 +1662,9 @@ static List addExtraClientAttributes(AttributeAssertion... a List result = new ArrayList<>(); result.addAll(Arrays.asList(assertions)); if (Boolean.getBoolean("testLatestDeps")) { - result.add(equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4")); - result.add(equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")); - result.add( - satisfies(NetworkAttributes.NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())); + result.add(equalTo(NETWORK_TYPE, "ipv4")); + result.add(equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")); + result.add(satisfies(NETWORK_PEER_PORT, val -> assertThat(val).isNotNull())); } return result; } diff --git a/instrumentation/hibernate/hibernate-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/AbstractHibernateTest.java b/instrumentation/hibernate/hibernate-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/AbstractHibernateTest.java index 7042194917d5..037dfe6b2a30 100644 --- a/instrumentation/hibernate/hibernate-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/AbstractHibernateTest.java +++ b/instrumentation/hibernate/hibernate-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/AbstractHibernateTest.java @@ -7,6 +7,13 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.SpanKind; @@ -15,7 +22,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -57,35 +63,35 @@ static void cleanUp() { } } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation static SpanDataAssert assertClientSpan(SpanDataAssert span, SpanData parent) { return span.hasKind(SpanKind.CLIENT) .hasParent(parent) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DbIncubatingAttributes.DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DbIncubatingAttributes.DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")); + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation static SpanDataAssert assertClientSpan(SpanDataAssert span, SpanData parent, String verb) { return span.hasName(verb.concat(" db1.Value")) .hasKind(SpanKind.CLIENT) .hasParent(parent) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, stringAssert -> stringAssert.startsWith(verb.toLowerCase(Locale.ROOT))), - equalTo(DbIncubatingAttributes.DB_OPERATION, verb), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")); + equalTo(DB_OPERATION, verb), + equalTo(DB_SQL_TABLE, "Value")); } static SpanDataAssert assertSessionSpan(SpanDataAssert span, SpanData parent, String spanName) { diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaTest.java index 509173d79e80..18f0335af8f8 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaTest.java @@ -10,9 +10,15 @@ import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.function.Consumer; import java.util.stream.Stream; import org.hibernate.Criteria; @@ -66,15 +72,14 @@ void testCriteria(String methodName, Consumer interaction) { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, - stringAssert -> stringAssert.startsWith("select")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + DB_STATEMENT, stringAssert -> stringAssert.startsWith("select")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/EntityManagerTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/EntityManagerTest.java index d9402fc439ca..f9af700cedbe 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/EntityManagerTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/EntityManagerTest.java @@ -10,10 +10,16 @@ import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.junit.jupiter.api.Named.named; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.function.BiConsumer; import java.util.function.Function; import java.util.stream.Stream; @@ -34,7 +40,7 @@ class EntityManagerTest extends AbstractHibernateTest { static final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("test-pu"); - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest @MethodSource("provideArgumentsHibernateActionParameters") void testHibernateActions(Parameter parameter) { @@ -100,17 +106,13 @@ void testHibernateActions(Parameter parameter) { span.hasKind(CLIENT) .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value"))); + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value"))); } else { trace.hasSpansSatisfyingExactly( @@ -131,17 +133,13 @@ void testHibernateActions(Parameter parameter) { span.hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -184,7 +182,7 @@ private static Stream provideArgumentsHibernateActionParameters() { Arguments.of(named("remove", new Parameter("delete", true, true, EntityManager::remove)))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testHibernatePersist() { EntityManager entityManager = entityManagerFactory.createEntityManager(); @@ -217,17 +215,13 @@ void testHibernatePersist() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -243,20 +237,16 @@ void testHibernatePersist() { span.hasKind(CLIENT) .hasParent(trace.getSpan(3)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")))); + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest @MethodSource("provideArgumentsAttachesState") void testAttachesStateToQuery(Function queryBuildMethod) { @@ -292,17 +282,13 @@ void testAttachesStateToQuery(Function queryBuildMethod) { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryTest.java index f68fe97e9ba5..0e72ce931bdc 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryTest.java @@ -10,10 +10,16 @@ import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.junit.jupiter.api.Named.named; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.Iterator; import java.util.function.Consumer; import java.util.stream.Stream; @@ -25,7 +31,7 @@ class QueryTest extends AbstractHibernateTest { - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testHibernateQueryExecuteUpdateWithTransaction() { testing.runWithSpan( @@ -61,17 +67,13 @@ void testHibernateQueryExecuteUpdateWithTransaction() { span.hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -85,7 +87,7 @@ void testHibernateQueryExecuteUpdateWithTransaction() { .get(stringKey("hibernate.session_id")))))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest @MethodSource("providesArgumentsSingleCall") void testHibernateQuerySingleCall(Parameter parameter) { @@ -119,15 +121,13 @@ void testHibernateQuerySingleCall(Parameter parameter) { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("select ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")))); + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("select ")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Value")))); } private static Stream providesArgumentsSingleCall() { @@ -155,7 +155,7 @@ private static Stream providesArgumentsSingleCall() { new Parameter("SELECT Value", sess -> sess.createQuery("from Value").scroll())))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testHibernateQueryIterate() { testing.runWithSpan( @@ -193,15 +193,13 @@ void testHibernateQueryIterate() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("select ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("select ")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionTest.java index b40068f4827f..b34664a74344 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionTest.java @@ -10,12 +10,18 @@ import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.ThrowableAssert.catchThrowable; import static org.junit.jupiter.api.Named.named; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.concurrent.atomic.AtomicReference; import java.util.function.BiConsumer; import java.util.function.Consumer; @@ -34,7 +40,7 @@ @SuppressWarnings("deprecation") // 'lock' is a deprecated method in the Session class class SessionTest extends AbstractHibernateTest { - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest @MethodSource("provideArgumentsHibernateAction") void testHibernateAction(Parameter parameter) { @@ -64,17 +70,13 @@ void testHibernateAction(Parameter parameter) { span.hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -144,7 +146,7 @@ private static Stream provideArgumentsHibernateAction() { null)))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest @MethodSource("provideArgumentsHibernateActionStateless") void testHibernateActionStateless(Parameter parameter) { @@ -175,17 +177,13 @@ void testHibernateActionStateless(Parameter parameter) { span.hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -292,7 +290,7 @@ private static Stream provideArgumentsHibernateActionStateless() { })))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest @MethodSource("provideArgumentsHibernateReplicate") void testHibernateReplicate(Parameter parameter) { @@ -322,17 +320,13 @@ void testHibernateReplicate(Parameter parameter) { span.hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -348,17 +342,13 @@ void testHibernateReplicate(Parameter parameter) { span.hasKind(CLIENT) .hasParent(trace.getSpan(3)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")))); + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")))); } private static Stream provideArgumentsHibernateReplicate() { @@ -440,7 +430,7 @@ void testHibernateFailedReplicate() { .get(stringKey("hibernate.session_id")))))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest @MethodSource("provideArgumentsHibernateCommitAction") void testHibernateCommitAction(Parameter parameter) { @@ -482,17 +472,13 @@ void testHibernateCommitAction(Parameter parameter) { span.hasKind(CLIENT) .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")))); + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")))); } private static Stream provideArgumentsHibernateCommitAction() { @@ -630,7 +616,7 @@ private static Stream provideArgumentsHibernateCommitAction() { null)))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest @MethodSource("provideArgumentsStateQuery") void testAttachesStateToQueryCreated(Consumer queryBuilder) { @@ -661,17 +647,13 @@ void testAttachesStateToQueryCreated(Consumer queryBuilder) { span.hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - satisfies( - DbIncubatingAttributes.DB_OPERATION, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -703,7 +685,7 @@ private static Stream provideArgumentsStateQuery() { session -> session.createSQLQuery("SELECT * FROM Value").list()))))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testHibernateOverlappingSessions() { testing.runWithSpan( @@ -762,15 +744,14 @@ void testHibernateOverlappingSessions() { .hasKind(CLIENT) .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, - stringAssert -> stringAssert.startsWith("insert")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "INSERT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + DB_STATEMENT, stringAssert -> stringAssert.startsWith("insert")), + equalTo(DB_OPERATION, "INSERT"), + equalTo(DB_SQL_TABLE, "Value")), span -> { span.hasName("Session.save " + Value.class.getName()) .hasKind(INTERNAL) @@ -806,29 +787,27 @@ void testHibernateOverlappingSessions() { .hasKind(CLIENT) .hasParent(trace.getSpan(6)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, - stringAssert -> stringAssert.startsWith("insert")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "INSERT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + DB_STATEMENT, stringAssert -> stringAssert.startsWith("insert")), + equalTo(DB_OPERATION, "INSERT"), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("DELETE db1.Value") .hasKind(CLIENT) .hasParent(trace.getSpan(6)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, - stringAssert -> stringAssert.startsWith("delete")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DELETE"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")))); + DB_STATEMENT, stringAssert -> stringAssert.startsWith("delete")), + equalTo(DB_OPERATION, "DELETE"), + equalTo(DB_SQL_TABLE, "Value")))); assertThat(sessionId1.get()).isNotEqualTo(sessionId2.get()); assertThat(sessionId1.get()).isNotEqualTo(sessionId3.get()); diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/SpringJpaTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/SpringJpaTest.java index 17ebc73ba798..4d33f1221bd8 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/SpringJpaTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/SpringJpaTest.java @@ -10,12 +10,18 @@ import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.regex.Pattern; import org.hibernate.Version; import org.junit.jupiter.api.Test; @@ -31,7 +37,7 @@ class SpringJpaTest { new AnnotationConfigApplicationContext(PersistenceConfig.class); CustomerRepository repo = context.getBean(CustomerRepository.class); - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testCrud() { String version = Version.getVersionString(); @@ -66,18 +72,18 @@ void testCrud() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName(.*)from Customer(.*)"))), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Customer")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -121,18 +127,18 @@ void testCrud() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, val -> val.matches( Pattern.compile( "insert into Customer (.*) values \\(.*, \\?, \\?\\)"))), - equalTo(DbIncubatingAttributes.DB_OPERATION, "INSERT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer")), + equalTo(DB_OPERATION, "INSERT"), + equalTo(DB_SQL_TABLE, "Customer")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -164,14 +170,12 @@ void testCrud() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "call next value for hibernate_sequence"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "CALL")), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_STATEMENT, "call next value for hibernate_sequence"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_OPERATION, "CALL")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -188,18 +192,18 @@ void testCrud() { .hasKind(CLIENT) .hasParent(trace.getSpan(3)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, val -> val.matches( Pattern.compile( "insert into Customer (.*) values \\(.* \\?, \\?\\)"))), - equalTo(DbIncubatingAttributes.DB_OPERATION, "INSERT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer"))); + equalTo(DB_OPERATION, "INSERT"), + equalTo(DB_SQL_TABLE, "Customer"))); } }); testing.clearData(); @@ -235,18 +239,18 @@ void testCrud() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName (.*)from Customer (.*)where ([^.]+).id=\\?"))), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Customer")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -263,15 +267,15 @@ void testCrud() { .hasKind(CLIENT) .hasParent(trace.getSpan(3)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), equalTo( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, "update Customer set firstName=?, lastName=? where id=?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "UPDATE"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer")))); + equalTo(DB_OPERATION, "UPDATE"), + equalTo(DB_SQL_TABLE, "Customer")))); testing.clearData(); Customer foundCustomer = @@ -301,18 +305,18 @@ void testCrud() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName (.*)from Customer (.*)(where ([^.]+).lastName=\\?)"))), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer")))); + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Customer")))); testing.clearData(); testing.runWithSpan("parent", () -> repo.delete(foundCustomer)); @@ -339,18 +343,18 @@ void testCrud() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName (.*)from Customer (.*)where ([^.]+).id=\\?"))), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Customer")), span -> span.hasName("Session.delete spring.jpa.Customer") .hasKind(INTERNAL) @@ -371,15 +375,13 @@ void testCrud() { span.hasName("DELETE test.Customer") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "delete from Customer where id=?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DELETE"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer"))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_STATEMENT, "delete from Customer where id=?"), + equalTo(DB_OPERATION, "DELETE"), + equalTo(DB_SQL_TABLE, "Customer"))); } else { String findAction; @@ -404,18 +406,18 @@ void testCrud() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName (.*)from Customer (.*)where ([^.]+).id=\\?"))), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Customer")), span -> span.hasName("Session.merge spring.jpa.Customer") .hasKind(INTERNAL) @@ -444,15 +446,13 @@ void testCrud() { span.hasName("DELETE test.Customer") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "delete from Customer where id=?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DELETE"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Customer"))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_STATEMENT, "delete from Customer where id=?"), + equalTo(DB_OPERATION, "DELETE"), + equalTo(DB_SQL_TABLE, "Customer"))); } }); } diff --git a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/CriteriaTest.java b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/CriteriaTest.java index d2ab1450ed09..cd1ba07460c0 100644 --- a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/CriteriaTest.java +++ b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/CriteriaTest.java @@ -7,11 +7,17 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.junit.jupiter.api.Named.named; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.Root; @@ -36,7 +42,7 @@ private static Stream provideParameters() { Arguments.of(named("getSingleResultOrNull", interactions.get(2)))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest(name = "{index}: {0}") @MethodSource("provideParameters") void testCriteriaQuery(Consumer> interaction) { @@ -76,15 +82,14 @@ void testCriteriaQuery(Consumer> interaction) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, - stringAssert -> stringAssert.startsWith("select")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + DB_STATEMENT, stringAssert -> stringAssert.startsWith("select")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Value")), span -> span.hasName("Transaction.commit") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/EntityManagerTest.java b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/EntityManagerTest.java index 5bc237dc24b2..927c404d8d41 100644 --- a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/EntityManagerTest.java +++ b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/EntityManagerTest.java @@ -7,13 +7,19 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.junit.jupiter.api.Named.named; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; @@ -112,7 +118,7 @@ void testHibernateAction(Parameter parameter) { }); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest(name = "{index}: {0}") @MethodSource("provideAttachesStateParameters") void testAttachesStateToQuery(Parameter parameter) { @@ -138,15 +144,13 @@ void testAttachesStateToQuery(Parameter parameter) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Value")), span -> assertTransactionCommitSpan( span, @@ -288,34 +292,34 @@ private static class Parameter { public final Function queryBuildMethod; } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation private static SpanDataAssert assertClientSpan(SpanDataAssert span, SpanData parent) { return span.hasKind(SpanKind.CLIENT) .hasParent(parent) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DbIncubatingAttributes.DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DbIncubatingAttributes.DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")); + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation private static SpanDataAssert assertClientSpan( SpanDataAssert span, SpanData parent, String spanName) { return span.hasName(spanName) .hasKind(SpanKind.CLIENT) .hasParent(parent) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DbIncubatingAttributes.DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DbIncubatingAttributes.DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")); + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")); } private static SpanDataAssert assertSessionSpan( diff --git a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/ProcedureCallTest.java b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/ProcedureCallTest.java index 1a1e36cf9a61..250515d4b2dd 100644 --- a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/ProcedureCallTest.java +++ b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/ProcedureCallTest.java @@ -7,13 +7,18 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import jakarta.persistence.ParameterMode; import java.sql.Connection; import java.sql.DriverManager; @@ -69,7 +74,7 @@ static void cleanup() { } } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testProcedureCall() { testing.runWithSpan( @@ -102,12 +107,12 @@ void testProcedureCall() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "{call TEST_PROC()}"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "CALL")), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_STATEMENT, "{call TEST_PROC()}"), + equalTo(DB_OPERATION, "CALL")), span -> span.hasName("Transaction.commit") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/SessionTest.java b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/SessionTest.java index d95c4fe7805d..bff1e8b6fd0f 100644 --- a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/SessionTest.java +++ b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/SessionTest.java @@ -7,6 +7,13 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Named.named; @@ -15,7 +22,6 @@ import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.Arrays; import java.util.List; import java.util.Locale; @@ -219,7 +225,7 @@ void testHibernateCommitAction(Parameter parameter) { span -> assertClientSpan(span, trace.getSpan(2)))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest(name = "{index}: {0}") @MethodSource("provideAttachesStateToQueryParameters") void testAttachesStateToQuery(Parameter parameter) { @@ -243,15 +249,13 @@ void testAttachesStateToQuery(Parameter parameter) { span.hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Value")), span -> assertSpanWithSessionId( span, @@ -803,35 +807,35 @@ private static SpanDataAssert assertSpanWithSessionId( equalTo(AttributeKey.stringKey("hibernate.session_id"), sessionId)); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation private static SpanDataAssert assertClientSpan(SpanDataAssert span, SpanData parent) { return span.hasKind(SpanKind.CLIENT) .hasParent(parent) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DbIncubatingAttributes.DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DbIncubatingAttributes.DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")); + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), + satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), + satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), + equalTo(DB_SQL_TABLE, "Value")); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation private static SpanDataAssert assertClientSpan( SpanDataAssert span, SpanData parent, String verb) { return span.hasName(verb.concat(" db1.Value")) .hasKind(SpanKind.CLIENT) .hasParent(parent) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "h2"), - equalTo(DbIncubatingAttributes.DB_NAME, "db1"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "h2:mem:"), + equalTo(DB_SYSTEM, "h2"), + equalTo(DB_NAME, "db1"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "h2:mem:"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, stringAssert -> stringAssert.startsWith(verb.toLowerCase(Locale.ROOT))), - equalTo(DbIncubatingAttributes.DB_OPERATION, verb), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value")); + equalTo(DB_OPERATION, verb), + equalTo(DB_SQL_TABLE, "Value")); } } diff --git a/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallTest.java b/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallTest.java index 3e36101c7bef..67a8712d5f2b 100644 --- a/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallTest.java +++ b/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallTest.java @@ -10,6 +10,12 @@ import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -17,7 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -76,7 +81,7 @@ static void cleanUp() { } } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testProcedureCall() { @@ -114,12 +119,12 @@ void testProcedureCall() { .hasKind(CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "{call TEST_PROC()}"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "CALL")), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_STATEMENT, "{call TEST_PROC()}"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(DB_OPERATION, "CALL")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive1Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/HibernateReactiveTest.java b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive1Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/HibernateReactiveTest.java index bf382ba49237..d7136189ccee 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive1Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/HibernateReactiveTest.java +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive1Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/HibernateReactiveTest.java @@ -8,12 +8,16 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import io.vertx.core.Vertx; import java.time.Duration; import java.util.concurrent.CompletableFuture; @@ -301,13 +305,13 @@ private static void assertTrace() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_NAME, DB), - equalTo(DbIncubatingAttributes.DB_USER, USER_DB), + equalTo(DB_NAME, DB), + equalTo(DB_USER, USER_DB), equalTo( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, "select value0_.id as id1_0_0_, value0_.name as name2_0_0_ from Value value0_ where value0_.id=$1"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value"), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Value"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive2Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v2_0/HibernateReactiveTest.java b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive2Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v2_0/HibernateReactiveTest.java index 3d418604fd15..db2eeb03af5a 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive2Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v2_0/HibernateReactiveTest.java +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive2Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v2_0/HibernateReactiveTest.java @@ -8,12 +8,16 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import io.vertx.core.Vertx; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; @@ -293,13 +297,13 @@ private static void assertTrace() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_NAME, DB), - equalTo(DbIncubatingAttributes.DB_USER, USER_DB), + equalTo(DB_NAME, DB), + equalTo(DB_USER, USER_DB), equalTo( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, "select v1_0.id,v1_0.name from Value v1_0 where v1_0.id=$1"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "Value"), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "Value"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> diff --git a/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionTest.java b/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionTest.java index 1fcdc8384c55..cb5c87f0057c 100644 --- a/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionTest.java +++ b/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionTest.java @@ -10,6 +10,13 @@ import static io.opentelemetry.api.trace.SpanKind.SERVER; import static io.opentelemetry.javaagent.instrumentation.httpurlconnection.StreamUtils.readLines; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -21,11 +28,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; @@ -123,12 +125,12 @@ public void traceRequest(boolean useCache) throws IOException { List attributes = new ArrayList<>( Arrays.asList( - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, url.getPort()), - equalTo(UrlAttributes.URL_FULL, url.toString()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, STATUS))); + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, url.getPort()), + equalTo(URL_FULL, url.toString()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, STATUS))); testing.waitAndAssertTraces( trace -> @@ -168,12 +170,12 @@ public void testBrokenApiUsage() throws IOException { List attributes = new ArrayList<>( Arrays.asList( - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, url.getPort()), - equalTo(UrlAttributes.URL_FULL, url.toString()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, STATUS))); + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, url.getPort()), + equalTo(URL_FULL, url.toString()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, STATUS))); testing.waitAndAssertTraces( trace -> @@ -219,12 +221,12 @@ public void testPostRequest() throws IOException { List attributes = new ArrayList<>( Arrays.asList( - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, url.getPort()), - equalTo(UrlAttributes.URL_FULL, url.toString()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, STATUS))); + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, url.getPort()), + equalTo(URL_FULL, url.toString()), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, STATUS))); testing.waitAndAssertTraces( trace -> @@ -272,12 +274,12 @@ public void getOutputStreamShouldTransformGetIntoPost() throws IOException { List attributes = new ArrayList<>( Arrays.asList( - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, url.getPort()), - equalTo(UrlAttributes.URL_FULL, url.toString()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "POST"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, STATUS))); + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, url.getPort()), + equalTo(URL_FULL, url.toString()), + equalTo(HTTP_REQUEST_METHOD, "POST"), + equalTo(HTTP_RESPONSE_STATUS_CODE, STATUS))); testing.waitAndAssertTraces( trace -> @@ -314,12 +316,12 @@ public void traceRequestWithConnectionFailure(String scheme) { List attributes = new ArrayList<>( Arrays.asList( - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, PortUtils.UNUSABLE_PORT), - equalTo(UrlAttributes.URL_FULL, uri), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(ErrorAttributes.ERROR_TYPE, "java.net.ConnectException"))); + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, PortUtils.UNUSABLE_PORT), + equalTo(URL_FULL, uri), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(ERROR_TYPE, "java.net.ConnectException"))); testing.waitAndAssertTraces( trace -> diff --git a/instrumentation/influxdb-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClientTest.java b/instrumentation/influxdb-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClientTest.java index 40d5300fe5d8..3492b53017cc 100644 --- a/instrumentation/influxdb-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClientTest.java +++ b/instrumentation/influxdb-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClientTest.java @@ -6,6 +6,12 @@ package io.opentelemetry.javaagent.instrumentation.influxdb.v2_4; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; @@ -13,8 +19,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.ArrayList; import java.util.List; import java.util.concurrent.BlockingQueue; @@ -318,13 +322,13 @@ private static List attributeAssertions( List result = new ArrayList<>(); result.addAll( asList( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "influxdb"), - equalTo(DbIncubatingAttributes.DB_NAME, databaseName), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_OPERATION, operation))); + equalTo(DB_SYSTEM, "influxdb"), + equalTo(DB_NAME, databaseName), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_OPERATION, operation))); if (statement != null) { - result.add(equalTo(DbIncubatingAttributes.DB_STATEMENT, statement)); + result.add(equalTo(DB_STATEMENT, statement)); } return result; } diff --git a/instrumentation/influxdb-2.4/javaagent/src/test24/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClient24Test.java b/instrumentation/influxdb-2.4/javaagent/src/test24/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClient24Test.java index ddc4fcd6d191..b430a4482cbd 100644 --- a/instrumentation/influxdb-2.4/javaagent/src/test24/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClient24Test.java +++ b/instrumentation/influxdb-2.4/javaagent/src/test24/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClient24Test.java @@ -6,6 +6,12 @@ package io.opentelemetry.javaagent.instrumentation.influxdb.v2_4; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; @@ -13,8 +19,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -147,13 +151,13 @@ private static List attributeAssertions( List result = new ArrayList<>(); result.addAll( asList( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "influxdb"), - equalTo(DbIncubatingAttributes.DB_NAME, databaseName), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_OPERATION, operation))); + equalTo(DB_SYSTEM, "influxdb"), + equalTo(DB_NAME, databaseName), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_OPERATION, operation))); if (statement != null) { - result.add(equalTo(DbIncubatingAttributes.DB_STATEMENT, statement)); + result.add(equalTo(DB_STATEMENT, statement)); } return result; } diff --git a/instrumentation/java-http-client/testing/src/main/java/io/opentelemetry/instrumentation/httpclient/AbstractJavaHttpClientTest.java b/instrumentation/java-http-client/testing/src/main/java/io/opentelemetry/instrumentation/httpclient/AbstractJavaHttpClientTest.java index 02e9c3818688..bf747d53f252 100644 --- a/instrumentation/java-http-client/testing/src/main/java/io/opentelemetry/instrumentation/httpclient/AbstractJavaHttpClientTest.java +++ b/instrumentation/java-http-client/testing/src/main/java/io/opentelemetry/instrumentation/httpclient/AbstractJavaHttpClientTest.java @@ -5,11 +5,12 @@ package io.opentelemetry.instrumentation.httpclient; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; + import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; @@ -94,7 +95,7 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { if ("http://localhost:61/".equals(uri.toString()) || "https://192.0.2.1/".equals(uri.toString()) || uri.toString().contains("/read-timeout")) { - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); } return attributes; }); diff --git a/instrumentation/java-util-logging/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jul/JavaUtilLoggingTest.java b/instrumentation/java-util-logging/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jul/JavaUtilLoggingTest.java index a18bfd8c871b..518390e36a9c 100644 --- a/instrumentation/java-util-logging/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jul/JavaUtilLoggingTest.java +++ b/instrumentation/java-util-logging/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jul/JavaUtilLoggingTest.java @@ -8,13 +8,15 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.util.logging.Level; import java.util.logging.Logger; @@ -117,11 +119,10 @@ private static void test( .hasAttributesSatisfyingExactly( equalTo(ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), - equalTo(ExceptionAttributes.EXCEPTION_TYPE, IllegalStateException.class.getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, "hello"), + equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), + equalTo(EXCEPTION_MESSAGE, "hello"), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, - v -> v.contains(JavaUtilLoggingTest.class.getName()))); + EXCEPTION_STACKTRACE, v -> v.contains(JavaUtilLoggingTest.class.getName()))); } else { assertThat(log) .hasAttributesSatisfyingExactly( diff --git a/instrumentation/javalin-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/javalin/v5_0/JavalinTest.java b/instrumentation/javalin-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/javalin/v5_0/JavalinTest.java index b9c16a4b941c..5ea3fe578ae4 100644 --- a/instrumentation/javalin-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/javalin/v5_0/JavalinTest.java +++ b/instrumentation/javalin-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/javalin/v5_0/JavalinTest.java @@ -8,20 +8,25 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ClientAttributes.CLIENT_ADDRESS; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; +import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import io.javalin.Javalin; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.ClientAttributes; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import io.opentelemetry.testing.internal.armeria.client.WebClient; import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpResponse; import org.junit.jupiter.api.AfterAll; @@ -66,22 +71,18 @@ void testSpanNameAndHttpRouteSpanWithPathParamResponseSuccessful() { .hasKind(SpanKind.SERVER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, "/param/" + id), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - satisfies( - UserAgentAttributes.USER_AGENT_ORIGINAL, - val -> val.isInstanceOf(String.class)), + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, "/param/" + id), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, "/param/{id}"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(ClientAttributes.CLIENT_ADDRESS, "127.0.0.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))))); + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, port), + equalTo(CLIENT_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))))); } @Test @@ -96,23 +97,19 @@ void testSpanNameAndHttpRouteSpanResponseError() { .hasKind(SpanKind.SERVER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, "/error"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 500), - satisfies( - UserAgentAttributes.USER_AGENT_ORIGINAL, - val -> val.isInstanceOf(String.class)), + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, "/error"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 500), + satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, "/error"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(ErrorAttributes.ERROR_TYPE, "500"), - equalTo(ClientAttributes.CLIENT_ADDRESS, "127.0.0.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))))); + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, port), + equalTo(ERROR_TYPE, "500"), + equalTo(CLIENT_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))))); } @Test @@ -128,22 +125,18 @@ public void testSpanNameAndHttpRouteSpanAsyncRouteResponseSuccessful() { .hasKind(SpanKind.SERVER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, "/async"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - satisfies( - UserAgentAttributes.USER_AGENT_ORIGINAL, - val -> val.isInstanceOf(String.class)), + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, "/async"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, "/async"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(ClientAttributes.CLIENT_ADDRESS, "127.0.0.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))))); + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, port), + equalTo(CLIENT_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))))); } @Test diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/JaxRsClientV1Test.java b/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/JaxRsClientV1Test.java index 21c1de97490d..6d22d2cd7dda 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/JaxRsClientV1Test.java +++ b/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/JaxRsClientV1Test.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.jaxrsclient; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; + import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientHandlerException; import com.sun.jersey.api.client.ClientResponse; @@ -17,7 +19,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import java.net.URI; import java.util.HashSet; import java.util.Map; @@ -54,7 +55,7 @@ protected void configure(HttpClientTestOptions.Builder options) { serverEndpoint -> { Set> attributes = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); return attributes; }); } diff --git a/instrumentation/jboss-logmanager/jboss-logmanager-appender-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jbosslogmanager/appender/v1_1/JbossLogmanagerTest.java b/instrumentation/jboss-logmanager/jboss-logmanager-appender-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jbosslogmanager/appender/v1_1/JbossLogmanagerTest.java index acef12077658..97d886c020a5 100644 --- a/instrumentation/jboss-logmanager/jboss-logmanager-appender-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jbosslogmanager/appender/v1_1/JbossLogmanagerTest.java +++ b/instrumentation/jboss-logmanager/jboss-logmanager-appender-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jbosslogmanager/appender/v1_1/JbossLogmanagerTest.java @@ -8,6 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import static java.util.concurrent.TimeUnit.MILLISECONDS; import io.opentelemetry.api.common.AttributeKey; @@ -18,7 +21,6 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.time.Instant; import java.util.ArrayList; @@ -156,12 +158,10 @@ private static void test( if (logException) { attributeAsserts.addAll( Arrays.asList( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - IllegalStateException.class.getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, "hello"), + equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), + equalTo(EXCEPTION_MESSAGE, "hello"), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, + EXCEPTION_STACKTRACE, v -> v.contains(JbossLogmanagerTest.class.getName())))); } logRecord.hasAttributesSatisfyingExactly(attributeAsserts); diff --git a/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/JdbcInstrumentationTest.java b/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/JdbcInstrumentationTest.java index 6d9742e9223e..105f834d3ab9 100644 --- a/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/JdbcInstrumentationTest.java +++ b/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/JdbcInstrumentationTest.java @@ -7,6 +7,13 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; @@ -24,7 +31,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.testing.assertj.TraceAssert; -import io.opentelemetry.semconv.ServerAttributes; import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.beans.PropertyVetoException; @@ -69,7 +75,7 @@ class JdbcInstrumentationTest { @RegisterExtension static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation static final AttributeKey DB_CONNECTION_STRING = DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -365,19 +371,19 @@ public void testBasicStatement( .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, system), - equalTo(DbIncubatingAttributes.DB_NAME, dbNameLower), + equalTo(DB_SYSTEM, system), + equalTo(DB_NAME, dbNameLower), satisfies( - DbIncubatingAttributes.DB_USER, + DB_USER, val -> { if (username != null) { val.isEqualTo(username); } }), equalTo(DB_CONNECTION_STRING, url), - equalTo(DbIncubatingAttributes.DB_STATEMENT, sanitizedQuery), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, table)))); + equalTo(DB_STATEMENT, sanitizedQuery), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, table)))); } static Stream preparedStatementStream() throws SQLException { @@ -490,19 +496,19 @@ void testPreparedStatementExecute( .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, system), - equalTo(DbIncubatingAttributes.DB_NAME, dbNameLower), + equalTo(DB_SYSTEM, system), + equalTo(DB_NAME, dbNameLower), satisfies( - DbIncubatingAttributes.DB_USER, + DB_USER, val -> { if (username != null) { val.isEqualTo(username); } }), equalTo(DB_CONNECTION_STRING, url), - equalTo(DbIncubatingAttributes.DB_STATEMENT, sanitizedQuery), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, table)))); + equalTo(DB_STATEMENT, sanitizedQuery), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, table)))); } @ParameterizedTest @@ -533,19 +539,19 @@ void testPreparedStatementQuery( .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, system), - equalTo(DbIncubatingAttributes.DB_NAME, dbNameLower), + equalTo(DB_SYSTEM, system), + equalTo(DB_NAME, dbNameLower), satisfies( - DbIncubatingAttributes.DB_USER, + DB_USER, val -> { if (username != null) { val.isEqualTo(username); } }), equalTo(DB_CONNECTION_STRING, url), - equalTo(DbIncubatingAttributes.DB_STATEMENT, sanitizedQuery), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, table)))); + equalTo(DB_STATEMENT, sanitizedQuery), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, table)))); } @ParameterizedTest @@ -576,19 +582,19 @@ void testPreparedCall( .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, system), - equalTo(DbIncubatingAttributes.DB_NAME, dbNameLower), + equalTo(DB_SYSTEM, system), + equalTo(DB_NAME, dbNameLower), satisfies( - DbIncubatingAttributes.DB_USER, + DB_USER, val -> { if (username != null) { val.isEqualTo(username); } }), equalTo(DB_CONNECTION_STRING, url), - equalTo(DbIncubatingAttributes.DB_STATEMENT, sanitizedQuery), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, table)))); + equalTo(DB_STATEMENT, sanitizedQuery), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, table)))); } static Stream statementUpdateStream() throws SQLException { @@ -718,19 +724,19 @@ void testStatementUpdate( .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, system), - equalTo(DbIncubatingAttributes.DB_NAME, dbNameLower), + equalTo(DB_SYSTEM, system), + equalTo(DB_NAME, dbNameLower), satisfies( - DbIncubatingAttributes.DB_USER, + DB_USER, val -> { if (username != null) { val.isEqualTo(username); } }), equalTo(DB_CONNECTION_STRING, url), - equalTo(DbIncubatingAttributes.DB_STATEMENT, query), - equalTo(DbIncubatingAttributes.DB_OPERATION, "CREATE TABLE"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, table)))); + equalTo(DB_STATEMENT, query), + equalTo(DB_OPERATION, "CREATE TABLE"), + equalTo(DB_SQL_TABLE, table)))); } static Stream preparedStatementUpdateStream() throws SQLException { @@ -826,19 +832,19 @@ void testPreparedStatementUpdate( .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, system), - equalTo(DbIncubatingAttributes.DB_NAME, dbNameLower), + equalTo(DB_SYSTEM, system), + equalTo(DB_NAME, dbNameLower), satisfies( - DbIncubatingAttributes.DB_USER, + DB_USER, val -> { if (username != null) { val.isEqualTo(username); } }), equalTo(DB_CONNECTION_STRING, url), - equalTo(DbIncubatingAttributes.DB_STATEMENT, query), - equalTo(DbIncubatingAttributes.DB_OPERATION, "CREATE TABLE"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, table)))); + equalTo(DB_STATEMENT, query), + equalTo(DB_OPERATION, "CREATE TABLE"), + equalTo(DB_SQL_TABLE, table)))); } static Stream connectionConstructorStream() { @@ -939,19 +945,19 @@ void testConnectionConstructorThrowing( .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, system), - equalTo(DbIncubatingAttributes.DB_NAME, dbNameLower), + equalTo(DB_SYSTEM, system), + equalTo(DB_NAME, dbNameLower), satisfies( - DbIncubatingAttributes.DB_USER, + DB_USER, val -> { if (username != null) { val.isEqualTo(username); } }), equalTo(DB_CONNECTION_STRING, url), - equalTo(DbIncubatingAttributes.DB_STATEMENT, sanitizedQuery), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, table)))); + equalTo(DB_STATEMENT, sanitizedQuery), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, table)))); } static Stream getConnectionStream() { @@ -1015,15 +1021,15 @@ void testGetConnection( CodeIncubatingAttributes.CODE_NAMESPACE, datasource.getClass().getName()), equalTo(CodeIncubatingAttributes.CODE_FUNCTION, "getConnection"), - equalTo(DbIncubatingAttributes.DB_SYSTEM, system), + equalTo(DB_SYSTEM, system), satisfies( - DbIncubatingAttributes.DB_USER, + DB_USER, val -> { if (user != null) { val.isEqualTo(user); } }), - equalTo(DbIncubatingAttributes.DB_NAME, "jdbcunittest"), + equalTo(DB_NAME, "jdbcunittest"), equalTo(DB_CONNECTION_STRING, connectionString)))); if (recursive) { assertions.add( @@ -1036,15 +1042,15 @@ void testGetConnection( CodeIncubatingAttributes.CODE_NAMESPACE, datasource.getClass().getName()), equalTo(CodeIncubatingAttributes.CODE_FUNCTION, "getConnection"), - equalTo(DbIncubatingAttributes.DB_SYSTEM, system), + equalTo(DB_SYSTEM, system), satisfies( - DbIncubatingAttributes.DB_USER, + DB_USER, val -> { if (user != null) { val.isEqualTo(user); } }), - equalTo(DbIncubatingAttributes.DB_NAME, "jdbcunittest"), + equalTo(DB_NAME, "jdbcunittest"), equalTo(DB_CONNECTION_STRING, connectionString))); } trace.hasSpansSatisfyingExactly(assertions); @@ -1078,10 +1084,10 @@ void testGetClientInfoException(String query) throws SQLException { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "other_sql"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "testing ?"), + equalTo(DB_SYSTEM, "other_sql"), + equalTo(DB_STATEMENT, "testing ?"), equalTo(DB_CONNECTION_STRING, "testdb://localhost"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost")))); + equalTo(SERVER_ADDRESS, "localhost")))); } static Stream spanNameStream() { @@ -1159,13 +1165,13 @@ void testProduceProperSpanName( .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "other_sql"), - equalTo(DbIncubatingAttributes.DB_NAME, databaseName), + equalTo(DB_SYSTEM, "other_sql"), + equalTo(DB_NAME, databaseName), equalTo(DB_CONNECTION_STRING, "testdb://localhost"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, sanitizedQuery), - equalTo(DbIncubatingAttributes.DB_OPERATION, operation), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, table), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost")))); + equalTo(DB_STATEMENT, sanitizedQuery), + equalTo(DB_OPERATION, operation), + equalTo(DB_SQL_TABLE, table), + equalTo(SERVER_ADDRESS, "localhost")))); } @ParameterizedTest @@ -1207,17 +1213,13 @@ void testConnectionCached(String connectionPoolName) throws SQLException { span.hasName("SELECT INFORMATION_SCHEMA.SYSTEM_USERS") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, dbNameLower), - equalTo(DbIncubatingAttributes.DB_USER, "SA"), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, dbNameLower), + equalTo(DB_USER, "SA"), equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo( - DbIncubatingAttributes.DB_SQL_TABLE, - "INFORMATION_SCHEMA.SYSTEM_USERS"))); + equalTo(DB_STATEMENT, "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS"), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "INFORMATION_SCHEMA.SYSTEM_USERS"))); for (int i = 0; i < numQueries; i++) { assertions.add(traceAssertConsumer); } @@ -1281,12 +1283,12 @@ void testHandleRecursiveStatements( .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "other_sql"), + equalTo(DB_SYSTEM, "other_sql"), equalTo(DB_CONNECTION_STRING, "testdb://localhost"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SELECT * FROM table"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "table"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost")))); + equalTo(DB_STATEMENT, "SELECT * FROM table"), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "table"), + equalTo(SERVER_ADDRESS, "localhost")))); } // regression test for diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java index dc69acb48c45..f10e09e195f4 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java @@ -6,12 +6,12 @@ package io.opentelemetry.instrumentation.jdbc.datasource; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.instrumentation.jdbc.internal.OpenTelemetryConnection; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; @@ -42,7 +42,7 @@ void buildWithDefaults() throws SQLException { span -> span.hasName("TestDataSource.getConnection"), span -> span.hasName("SELECT dbname") - .hasAttribute(equalTo(DbIncubatingAttributes.DB_STATEMENT, "SELECT ?;")))); + .hasAttribute(equalTo(DB_STATEMENT, "SELECT ?;")))); } @Test @@ -118,7 +118,7 @@ void buildWithSanitizationDisabled() throws SQLException { span -> span.hasName("TestDataSource.getConnection"), span -> span.hasName("SELECT dbname") - .hasAttribute(equalTo(DbIncubatingAttributes.DB_STATEMENT, "SELECT 1;")))); + .hasAttribute(equalTo(DB_STATEMENT, "SELECT 1;")))); } @Test diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java index 6c775f9c2b7f..9fe862d9b1e4 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java @@ -6,6 +6,9 @@ package io.opentelemetry.instrumentation.jdbc.datasource; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.params.provider.Arguments.arguments; @@ -16,7 +19,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.sql.Connection; import java.sql.SQLException; import java.util.stream.Stream; @@ -33,7 +35,7 @@ class OpenTelemetryDataSourceTest { @RegisterExtension static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest @ArgumentsSource(GetConnectionMethods.class) void shouldEmitGetConnectionSpans(GetConnectionFunction getConnection) throws SQLException { @@ -55,11 +57,9 @@ void shouldEmitGetConnectionSpans(GetConnectionFunction getConnection) throws SQ CodeIncubatingAttributes.CODE_NAMESPACE, TestDataSource.class.getName()), equalTo(CodeIncubatingAttributes.CODE_FUNCTION, "getConnection"), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "postgresql"), - equalTo(DbIncubatingAttributes.DB_NAME, "dbname"), - equalTo( - DbIncubatingAttributes.DB_CONNECTION_STRING, - "postgresql://127.0.0.1:5432")))); + equalTo(DB_SYSTEM, "postgresql"), + equalTo(DB_NAME, "dbname"), + equalTo(DB_CONNECTION_STRING, "postgresql://127.0.0.1:5432")))); assertThat(connection).isExactlyInstanceOf(OpenTelemetryConnection.class); DbInfo dbInfo = ((OpenTelemetryConnection) connection).getDbInfo(); diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryConnectionTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryConnectionTest.java index 5405ddd14026..fb07e6bf2759 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryConnectionTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryConnectionTest.java @@ -7,6 +7,15 @@ import static io.opentelemetry.instrumentation.jdbc.internal.JdbcInstrumenterFactory.createStatementInstrumenter; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.OpenTelemetry; @@ -17,8 +26,6 @@ import io.opentelemetry.instrumentation.jdbc.internal.dbinfo.DbInfo; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; @@ -187,15 +194,14 @@ private static void jdbcTraceAssertion(DbInfo dbInfo, String query) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, dbInfo.getSystem()), - equalTo(DbIncubatingAttributes.DB_NAME, dbInfo.getName()), - equalTo(DbIncubatingAttributes.DB_USER, dbInfo.getUser()), - equalTo( - DbIncubatingAttributes.DB_CONNECTION_STRING, dbInfo.getShortUrl()), - equalTo(DbIncubatingAttributes.DB_STATEMENT, query), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "users"), - equalTo(ServerAttributes.SERVER_ADDRESS, dbInfo.getHost()), - equalTo(ServerAttributes.SERVER_PORT, dbInfo.getPort())))); + equalTo(DB_SYSTEM, dbInfo.getSystem()), + equalTo(DB_NAME, dbInfo.getName()), + equalTo(DB_USER, dbInfo.getUser()), + equalTo(DB_CONNECTION_STRING, dbInfo.getShortUrl()), + equalTo(DB_STATEMENT, query), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "users"), + equalTo(SERVER_ADDRESS, dbInfo.getHost()), + equalTo(SERVER_PORT, dbInfo.getPort())))); } } diff --git a/instrumentation/jedis/jedis-1.4/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/AbstractJedisTest.java b/instrumentation/jedis/jedis-1.4/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/AbstractJedisTest.java index cdca4a29498c..0ce182bce006 100644 --- a/instrumentation/jedis/jedis-1.4/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/AbstractJedisTest.java +++ b/instrumentation/jedis/jedis-1.4/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/AbstractJedisTest.java @@ -6,13 +6,16 @@ package io.opentelemetry.javaagent.instrumentation.jedis; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; @@ -65,11 +68,11 @@ void setCommand() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET foo ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port)))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET foo ?"), + equalTo(DB_OPERATION, "SET"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port)))); } @Test @@ -86,22 +89,22 @@ void getCommand() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET foo ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port))), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET foo ?"), + equalTo(DB_OPERATION, "SET"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET foo"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port)))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET foo"), + equalTo(DB_OPERATION, "GET"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port)))); } @Test @@ -118,21 +121,21 @@ void commandWithNoArguments() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET foo ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port))), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET foo ?"), + equalTo(DB_OPERATION, "SET"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("RANDOMKEY") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "RANDOMKEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RANDOMKEY"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port)))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "RANDOMKEY"), + equalTo(DB_OPERATION, "RANDOMKEY"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port)))); } } diff --git a/instrumentation/jedis/jedis-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/Jedis30ClientTest.java b/instrumentation/jedis/jedis-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/Jedis30ClientTest.java index 1889d2a7d66d..1490c689a3b1 100644 --- a/instrumentation/jedis/jedis-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/Jedis30ClientTest.java +++ b/instrumentation/jedis/jedis-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/Jedis30ClientTest.java @@ -7,14 +7,19 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; import org.assertj.core.api.AbstractLongAssert; @@ -74,16 +79,14 @@ void setCommand() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET foo ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET foo ?"), + equalTo(DB_OPERATION, "SET"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)))); } @Test @@ -100,32 +103,28 @@ void getCommand() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET foo ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative))), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET foo ?"), + equalTo(DB_OPERATION, "SET"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET foo"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET foo"), + equalTo(DB_OPERATION, "GET"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)))); } @Test @@ -142,31 +141,27 @@ void commandWithNoArguments() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET foo ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative))), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET foo ?"), + equalTo(DB_OPERATION, "SET"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("RANDOMKEY") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "RANDOMKEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RANDOMKEY"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "RANDOMKEY"), + equalTo(DB_OPERATION, "RANDOMKEY"), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)))); } } diff --git a/instrumentation/jedis/jedis-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/Jedis40ClientTest.java b/instrumentation/jedis/jedis-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/Jedis40ClientTest.java index fb8db40a906b..27d7cd7c94e7 100644 --- a/instrumentation/jedis/jedis-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/Jedis40ClientTest.java +++ b/instrumentation/jedis/jedis-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/Jedis40ClientTest.java @@ -6,13 +6,17 @@ package io.opentelemetry.javaagent.instrumentation.jedis.v4_0; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; import org.junit.jupiter.api.AfterAll; @@ -68,12 +72,12 @@ void setCommand() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET foo ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip)))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET foo ?"), + equalTo(DB_OPERATION, "SET"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_PORT, port), + equalTo(NETWORK_PEER_ADDRESS, ip)))); } @Test @@ -90,24 +94,24 @@ void getCommand() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET foo ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip))), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET foo ?"), + equalTo(DB_OPERATION, "SET"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_PORT, port), + equalTo(NETWORK_PEER_ADDRESS, ip))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET foo"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip)))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET foo"), + equalTo(DB_OPERATION, "GET"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_PORT, port), + equalTo(NETWORK_PEER_ADDRESS, ip)))); } @Test @@ -124,23 +128,23 @@ void commandWithNoArguments() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET foo ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip))), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET foo ?"), + equalTo(DB_OPERATION, "SET"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_PORT, port), + equalTo(NETWORK_PEER_ADDRESS, ip))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("RANDOMKEY") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "RANDOMKEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RANDOMKEY"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip)))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "RANDOMKEY"), + equalTo(DB_OPERATION, "RANDOMKEY"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_PORT, port), + equalTo(NETWORK_PEER_ADDRESS, ip)))); } } diff --git a/instrumentation/jetty/jetty-11.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v11_0/JettyHandlerTest.java b/instrumentation/jetty/jetty-11.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v11_0/JettyHandlerTest.java index 55b85c2c5b94..3b7619c9bf01 100644 --- a/instrumentation/jetty/jetty-11.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v11_0/JettyHandlerTest.java +++ b/instrumentation/jetty/jetty-11.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v11_0/JettyHandlerTest.java @@ -15,6 +15,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.collect.Sets; @@ -25,7 +26,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; -import io.opentelemetry.semconv.HttpAttributes; import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; import jakarta.servlet.DispatcherType; import jakarta.servlet.ServletException; @@ -79,9 +79,7 @@ protected void stopServer(Server server) throws Exception { @Override protected void configure(HttpServerTestOptions options) { options.setHttpAttributes( - unused -> - Sets.difference( - DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HttpAttributes.HTTP_ROUTE))); + unused -> Sets.difference(DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HTTP_ROUTE))); options.setHasResponseSpan(endpoint -> endpoint == REDIRECT || endpoint == ERROR); options.setHasResponseCustomizer(endpoint -> true); } diff --git a/instrumentation/jetty/jetty-12.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v12_0/Jetty12HandlerTest.java b/instrumentation/jetty/jetty-12.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v12_0/Jetty12HandlerTest.java index 498bc624defd..b5bf258e0785 100644 --- a/instrumentation/jetty/jetty-12.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v12_0/Jetty12HandlerTest.java +++ b/instrumentation/jetty/jetty-12.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v12_0/Jetty12HandlerTest.java @@ -15,6 +15,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.collect.Sets; @@ -25,7 +26,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; -import io.opentelemetry.semconv.HttpAttributes; import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -60,9 +60,7 @@ protected void stopServer(Server server) throws Exception { @Override protected void configure(HttpServerTestOptions options) { options.setHttpAttributes( - unused -> - Sets.difference( - DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HttpAttributes.HTTP_ROUTE))); + unused -> Sets.difference(DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HTTP_ROUTE))); options.setHasResponseCustomizer(endpoint -> endpoint != EXCEPTION); } diff --git a/instrumentation/jetty/jetty-8.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/JettyHandlerTest.java b/instrumentation/jetty/jetty-8.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/JettyHandlerTest.java index 49196c6dbf93..8619ca2b70b2 100644 --- a/instrumentation/jetty/jetty-8.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/JettyHandlerTest.java +++ b/instrumentation/jetty/jetty-8.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/JettyHandlerTest.java @@ -15,6 +15,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.collect.Sets; @@ -25,7 +26,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; -import io.opentelemetry.semconv.HttpAttributes; import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; import java.io.IOException; import java.io.Writer; @@ -79,9 +79,7 @@ protected void stopServer(Server server) throws Exception { @Override protected void configure(HttpServerTestOptions options) { options.setHttpAttributes( - unused -> - Sets.difference( - DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HttpAttributes.HTTP_ROUTE))); + unused -> Sets.difference(DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HTTP_ROUTE))); options.setHasResponseSpan(endpoint -> endpoint == REDIRECT || endpoint == ERROR); options.setHasResponseCustomizer(endpoint -> endpoint != EXCEPTION); } diff --git a/instrumentation/jms/jms-1.1/javaagent/src/jms2Test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms2InstrumentationTest.java b/instrumentation/jms/jms-1.1/javaagent/src/jms2Test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms2InstrumentationTest.java index 0b9813b49fdb..c38767ee02de 100644 --- a/instrumentation/jms/jms-1.1/javaagent/src/jms2Test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms2InstrumentationTest.java +++ b/instrumentation/jms/jms-1.1/javaagent/src/jms2Test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms2InstrumentationTest.java @@ -9,6 +9,11 @@ import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.params.provider.Arguments.arguments; @@ -18,7 +23,6 @@ import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.io.File; import java.nio.file.Files; import java.util.Collections; @@ -168,12 +172,10 @@ void testMessageConsumer( .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary))); producerSpan.set(trace.getSpan(1)); @@ -187,12 +189,10 @@ void testMessageConsumer( .hasParent(trace.getSpan(0)) .hasLinks(LinkData.create(producerSpan.get().getSpanContext())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)))); } @@ -235,24 +235,20 @@ void testMessageListener( .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)), span -> span.hasName(destinationName + " process") .hasKind(CONSUMER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)), span -> span.hasName("consumer").hasParent(trace.getSpan(2)))); } @@ -279,9 +275,8 @@ void shouldNotEmitTelemetryOnEmptyReceive( private static AttributeAssertion messagingTempDestination(boolean isTemporary) { return isTemporary - ? equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY, true) - : satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY, AbstractAssert::isNull); + ? equalTo(MESSAGING_DESTINATION_TEMPORARY, true) + : satisfies(MESSAGING_DESTINATION_TEMPORARY, AbstractAssert::isNull); } static final class EmptyReceiveArgumentsProvider implements ArgumentsProvider { diff --git a/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/AbstractJms1Test.java b/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/AbstractJms1Test.java index 9e06b0854a1d..ee8455cc813a 100644 --- a/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/AbstractJms1Test.java +++ b/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/AbstractJms1Test.java @@ -10,6 +10,11 @@ import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.params.provider.Arguments.arguments; @@ -18,7 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.stream.Stream; @@ -128,24 +132,20 @@ void testMessageListener( .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)), span -> span.hasName(destinationName + " process") .hasKind(CONSUMER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)), span -> span.hasName("consumer").hasParent(trace.getSpan(2)))); } @@ -211,12 +211,10 @@ void shouldCaptureMessageHeaders( .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary), equalTo( stringArrayKey("messaging.header.test_message_header"), @@ -229,12 +227,10 @@ void shouldCaptureMessageHeaders( .hasKind(CONSUMER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary), equalTo( stringArrayKey("messaging.header.test_message_header"), @@ -285,12 +281,10 @@ void shouldFailWhenSendingReadOnlyMessage( .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary))), trace -> trace.hasSpansSatisfyingExactly( @@ -300,20 +294,17 @@ void shouldFailWhenSendingReadOnlyMessage( .hasNoParent() .hasTotalRecordedLinks(0) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)))); } static AttributeAssertion messagingTempDestination(boolean isTemporary) { return isTemporary - ? equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY, true) - : satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY, AbstractAssert::isNull); + ? equalTo(MESSAGING_DESTINATION_TEMPORARY, true) + : satisfies(MESSAGING_DESTINATION_TEMPORARY, AbstractAssert::isNull); } static final class EmptyReceiveArgumentsProvider implements ArgumentsProvider { diff --git a/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms1InstrumentationTest.java b/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms1InstrumentationTest.java index 2de618b59df7..7e0d099839fd 100644 --- a/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms1InstrumentationTest.java +++ b/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms1InstrumentationTest.java @@ -8,11 +8,14 @@ import static io.opentelemetry.api.trace.SpanKind.CONSUMER; import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.util.concurrent.atomic.AtomicReference; import javax.jms.Destination; import javax.jms.JMSException; @@ -61,12 +64,10 @@ void testMessageConsumer( .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary))); producerSpan.set(trace.getSpan(1)); @@ -80,12 +81,10 @@ void testMessageConsumer( .hasParent(trace.getSpan(0)) .hasLinks(LinkData.create(producerSpan.get().getSpanContext())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)))); } } diff --git a/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms1SuppressReceiveSpansTest.java b/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms1SuppressReceiveSpansTest.java index e5706f69e175..413795d42272 100644 --- a/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms1SuppressReceiveSpansTest.java +++ b/instrumentation/jms/jms-1.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/Jms1SuppressReceiveSpansTest.java @@ -8,9 +8,12 @@ import static io.opentelemetry.api.trace.SpanKind.CONSUMER; import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; @@ -57,12 +60,10 @@ void testMessageConsumer( .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)), span -> span.hasName(destinationName + " receive") @@ -70,12 +71,10 @@ void testMessageConsumer( .hasParent(trace.getSpan(1)) .hasTotalRecordedLinks(0) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary))), trace -> trace.hasSpansSatisfyingExactly(span -> span.hasName("consumer parent").hasNoParent())); diff --git a/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/AbstractJms3Test.java b/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/AbstractJms3Test.java index 8f2939f03606..57dbab31fb31 100644 --- a/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/AbstractJms3Test.java +++ b/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/AbstractJms3Test.java @@ -10,6 +10,11 @@ import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.params.provider.Arguments.arguments; @@ -18,7 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import jakarta.jms.Connection; import jakarta.jms.Destination; import jakarta.jms.JMSException; @@ -144,24 +148,20 @@ void testMessageListener(DestinationFactory destinationFactory, boolean isTempor .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - producerDestinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, producerDestinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)), span -> span.hasName(actualDestinationName + " process") .hasKind(CONSUMER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - actualDestinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId)), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, actualDestinationName), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_MESSAGE_ID, messageId)), span -> span.hasName("consumer").hasParent(trace.getSpan(2)))); } @@ -228,12 +228,10 @@ void shouldCaptureMessageHeaders(DestinationFactory destinationFactory, boolean .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - producerDestinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, producerDestinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary), equalTo( stringArrayKey("messaging.header.test_message_header"), @@ -246,12 +244,10 @@ void shouldCaptureMessageHeaders(DestinationFactory destinationFactory, boolean .hasKind(CONSUMER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - actualDestinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, actualDestinationName), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_MESSAGE_ID, messageId), equalTo( stringArrayKey("messaging.header.test_message_header"), singletonList("test")), @@ -263,9 +259,8 @@ void shouldCaptureMessageHeaders(DestinationFactory destinationFactory, boolean static AttributeAssertion messagingTempDestination(boolean isTemporary) { return isTemporary - ? equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY, true) - : satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY, AbstractAssert::isNull); + ? equalTo(MESSAGING_DESTINATION_TEMPORARY, true) + : satisfies(MESSAGING_DESTINATION_TEMPORARY, AbstractAssert::isNull); } static final class EmptyReceiveArgumentsProvider implements ArgumentsProvider { diff --git a/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/Jms3InstrumentationTest.java b/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/Jms3InstrumentationTest.java index 28a074bf9db0..a0666663a893 100644 --- a/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/Jms3InstrumentationTest.java +++ b/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/Jms3InstrumentationTest.java @@ -8,11 +8,14 @@ import static io.opentelemetry.api.trace.SpanKind.CONSUMER; import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import jakarta.jms.Destination; import jakarta.jms.JMSException; import jakarta.jms.MessageConsumer; @@ -64,12 +67,10 @@ void testMessageConsumer(DestinationFactory destinationFactory, boolean isTempor .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - producerDestinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, producerDestinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary))); producerSpan.set(trace.getSpan(1)); @@ -83,12 +84,9 @@ void testMessageConsumer(DestinationFactory destinationFactory, boolean isTempor .hasParent(trace.getSpan(0)) .hasLinks(LinkData.create(producerSpan.get().getSpanContext())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - actualDestinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId)))); + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, actualDestinationName), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_MESSAGE_ID, messageId)))); } } diff --git a/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/Jms3SuppressReceiveSpansTest.java b/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/Jms3SuppressReceiveSpansTest.java index 423616096a88..d0514410b7d6 100644 --- a/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/Jms3SuppressReceiveSpansTest.java +++ b/instrumentation/jms/jms-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/Jms3SuppressReceiveSpansTest.java @@ -8,9 +8,12 @@ import static io.opentelemetry.api.trace.SpanKind.CONSUMER; import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import jakarta.jms.Destination; import jakarta.jms.JMSException; import jakarta.jms.MessageConsumer; @@ -60,12 +63,10 @@ void testMessageConsumer(DestinationFactory destinationFactory, boolean isTempor .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - producerDestinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, producerDestinationName), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_MESSAGE_ID, messageId), messagingTempDestination(isTemporary)), span -> span.hasName(actualDestinationName + " receive") @@ -73,13 +74,10 @@ void testMessageConsumer(DestinationFactory destinationFactory, boolean isTempor .hasParent(trace.getSpan(1)) .hasTotalRecordedLinks(0) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - actualDestinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, messageId))), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, actualDestinationName), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_MESSAGE_ID, messageId))), trace -> trace.hasSpansSatisfyingExactly(span -> span.hasName("consumer parent").hasNoParent())); } diff --git a/instrumentation/jsf/jsf-jakarta-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/jakarta/BaseJsfTest.java b/instrumentation/jsf/jsf-jakarta-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/jakarta/BaseJsfTest.java index d375a64b6e12..3ad100eaf21c 100644 --- a/instrumentation/jsf/jsf-jakarta-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/jakarta/BaseJsfTest.java +++ b/instrumentation/jsf/jsf-jakarta-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/jakarta/BaseJsfTest.java @@ -7,6 +7,18 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ClientAttributes.CLIENT_ADDRESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; +import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; @@ -16,12 +28,6 @@ import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.testing.assertj.TraceAssert; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ClientAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpRequest; import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpResponse; import io.opentelemetry.testing.internal.armeria.common.HttpData; @@ -110,21 +116,19 @@ void testPath(String path, String route) { span.hasName(getContextPath() + "/hello.xhtml") .hasKind(SpanKind.SERVER) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, port), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, getContextPath() + "/" + path), + equalTo(USER_AGENT_ORIGINAL, TEST_USER_AGENT), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(HTTP_ROUTE, getContextPath() + "/" + route), satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, getContextPath() + "/" + path), - equalTo(UserAgentAttributes.USER_AGENT_ORIGINAL, TEST_USER_AGENT), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(HttpAttributes.HTTP_ROUTE, getContextPath() + "/" + route), - satisfies( - ClientAttributes.CLIENT_ADDRESS, + CLIENT_ADDRESS, val -> val.satisfiesAnyOf( v -> assertThat(v).isEqualTo(TEST_CLIENT_IP), diff --git a/instrumentation/jsf/jsf-javax-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/javax/BaseJsfTest.java b/instrumentation/jsf/jsf-javax-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/javax/BaseJsfTest.java index 01aaf48d159e..1657b4a6e9d5 100644 --- a/instrumentation/jsf/jsf-javax-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/javax/BaseJsfTest.java +++ b/instrumentation/jsf/jsf-javax-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/javax/BaseJsfTest.java @@ -7,6 +7,18 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ClientAttributes.CLIENT_ADDRESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; +import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import static java.util.Collections.addAll; import static org.assertj.core.api.Assertions.assertThat; @@ -17,12 +29,6 @@ import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.testing.assertj.TraceAssert; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ClientAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpRequest; import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpResponse; import io.opentelemetry.testing.internal.armeria.common.HttpData; @@ -119,21 +125,19 @@ void testPath(String path, String route) { span.hasName(getContextPath() + "/hello.xhtml") .hasKind(SpanKind.SERVER) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, port), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, getContextPath() + "/" + path), + equalTo(USER_AGENT_ORIGINAL, TEST_USER_AGENT), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(HTTP_ROUTE, getContextPath() + "/" + route), satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, getContextPath() + "/" + path), - equalTo(UserAgentAttributes.USER_AGENT_ORIGINAL, TEST_USER_AGENT), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(HttpAttributes.HTTP_ROUTE, getContextPath() + "/" + route), - satisfies( - ClientAttributes.CLIENT_ADDRESS, + CLIENT_ADDRESS, val -> val.satisfiesAnyOf( v -> assertThat(v).isEqualTo(TEST_CLIENT_IP), diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-0.11/testing/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaClientBaseTest.java b/instrumentation/kafka/kafka-clients/kafka-clients-0.11/testing/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaClientBaseTest.java index 0698eb811521..decf68c18b7b 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-0.11/testing/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaClientBaseTest.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-0.11/testing/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaClientBaseTest.java @@ -7,10 +7,19 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_TOMBSTONE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.ArrayList; @@ -161,23 +170,17 @@ protected static List sendAttributes( List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "publish"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative))); + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative))); if (messageKey != null) { - assertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); + assertions.add(equalTo(MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); } if (messageValue == null) { - assertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_TOMBSTONE, true)); + assertions.add(equalTo(MESSAGING_KAFKA_MESSAGE_TOMBSTONE, true)); } if (testHeaders) { assertions.add( @@ -193,16 +196,14 @@ protected static List receiveAttributes(boolean testHeaders) List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "receive"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, - AbstractLongAssert::isPositive))); + satisfies(MESSAGING_BATCH_MESSAGE_COUNT, AbstractLongAssert::isPositive))); // consumer group is not available in version 0.11 if (Boolean.getBoolean("testLatestDeps")) { - assertions.add(equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test")); } if (testHeaders) { assertions.add( @@ -219,35 +220,28 @@ protected static List processAttributes( List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "process"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), satisfies( AttributeKey.longKey("kafka.record.queue_time_ms"), AbstractLongAssert::isNotNegative))); // consumer group is not available in version 0.11 if (Boolean.getBoolean("testLatestDeps")) { - assertions.add(equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test")); } if (messageKey != null) { - assertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); + assertions.add(equalTo(MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); } if (messageValue == null) { - assertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_TOMBSTONE, true)); + assertions.add(equalTo(MESSAGING_KAFKA_MESSAGE_TOMBSTONE, true)); } else { assertions.add( equalTo( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - messageValue.getBytes(StandardCharsets.UTF_8).length)); + MESSAGING_MESSAGE_BODY_SIZE, messageValue.getBytes(StandardCharsets.UTF_8).length)); } if (testHeaders) { assertions.add( diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/InterceptorsSuppressReceiveSpansTest.java b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/InterceptorsSuppressReceiveSpansTest.java index ad2df34dc8c9..7c80e7837a5e 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/InterceptorsSuppressReceiveSpansTest.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/InterceptorsSuppressReceiveSpansTest.java @@ -7,9 +7,15 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.nio.charset.StandardCharsets; import org.assertj.core.api.AbstractLongAssert; import org.assertj.core.api.AbstractStringAssert; @@ -28,11 +34,9 @@ void assertTraces() { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer"))), @@ -41,23 +45,18 @@ void assertTraces() { .hasKind(SpanKind.CONSUMER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "process"), equalTo( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, + MESSAGING_MESSAGE_BODY_SIZE, greeting.getBytes(StandardCharsets.UTF_8).length), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "test"), + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer"))), diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/InterceptorsTest.java b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/InterceptorsTest.java index 83f87c8edc72..8f4f65dc2262 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/InterceptorsTest.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/InterceptorsTest.java @@ -8,12 +8,19 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.sdk.trace.data.LinkData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.nio.charset.StandardCharsets; import java.util.concurrent.atomic.AtomicReference; import org.assertj.core.api.AbstractLongAssert; @@ -35,11 +42,9 @@ void assertTraces() { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")))); @@ -59,42 +64,32 @@ void assertTraces() { .hasNoParent() .hasLinksSatisfying(links -> assertThat(links).isEmpty()) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "test"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1)), + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1)), span -> span.hasName(SHARED_TOPIC + " process") .hasKind(SpanKind.CONSUMER) .hasParent(trace.getSpan(0)) .hasLinks(LinkData.create(producerSpanContext.get())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "process"), equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, + MESSAGING_MESSAGE_BODY_SIZE, greeting.getBytes(StandardCharsets.UTF_8).length), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "test"), + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer"))), diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/WrapperSuppressReceiveSpansTest.java b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/WrapperSuppressReceiveSpansTest.java index 55b4b37e0234..ab588285c1b3 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/WrapperSuppressReceiveSpansTest.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/WrapperSuppressReceiveSpansTest.java @@ -7,11 +7,17 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; @@ -58,16 +64,12 @@ protected static List sendAttributes(boolean testHeaders) { List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "publish"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative))); + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative))); if (testHeaders) { assertions.add( equalTo( @@ -82,22 +84,17 @@ private static List processAttributes(String greeting, boole List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "process"), equalTo( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - greeting.getBytes(StandardCharsets.UTF_8).length), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), + MESSAGING_MESSAGE_BODY_SIZE, greeting.getBytes(StandardCharsets.UTF_8).length), + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), satisfies( AttributeKey.longKey("kafka.record.queue_time_ms"), AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")))); if (testHeaders) { diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/WrapperTest.java b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/WrapperTest.java index 5728847319e6..890b68733f2e 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/WrapperTest.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/WrapperTest.java @@ -7,6 +7,14 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.AttributeKey; @@ -14,7 +22,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.LinkData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; @@ -80,16 +87,12 @@ protected static List sendAttributes(boolean testHeaders) { List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "publish"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative))); + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative))); if (testHeaders) { assertions.add( equalTo( @@ -104,22 +107,17 @@ private static List processAttributes(String greeting, boole List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "process"), equalTo( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - greeting.getBytes(StandardCharsets.UTF_8).length), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), + MESSAGING_MESSAGE_BODY_SIZE, greeting.getBytes(StandardCharsets.UTF_8).length), + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), satisfies( AttributeKey.longKey("kafka.record.queue_time_ms"), AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")))); if (testHeaders) { @@ -136,12 +134,12 @@ protected static List receiveAttributes(boolean testHeaders) List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, SHARED_TOPIC), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, SHARED_TOPIC), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo(MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1))); + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1))); if (testHeaders) { assertions.add( equalTo( diff --git a/instrumentation/kafka/kafka-streams-0.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsDefaultTest.java b/instrumentation/kafka/kafka-streams-0.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsDefaultTest.java index 46caa0a78c90..943f2448b8a8 100644 --- a/instrumentation/kafka/kafka-streams-0.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsDefaultTest.java +++ b/instrumentation/kafka/kafka-streams-0.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsDefaultTest.java @@ -9,6 +9,15 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; @@ -103,19 +112,16 @@ void testKafkaProduceAndConsumeWithStreamsInBetween() throws Exception { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues.KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PENDING), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PENDING), + equalTo(MESSAGING_OPERATION, "publish"), satisfies(MESSAGING_CLIENT_ID, k -> k.startsWith("producer")), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, k -> k.isInstanceOf(String.class)), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, 0), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"))); + equalTo(MESSAGING_KAFKA_MESSAGE_OFFSET, 0), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"))); producerPendingRef.set(trace.getSpan(0)); }, trace -> { @@ -126,21 +132,15 @@ void testKafkaProduceAndConsumeWithStreamsInBetween() throws Exception { new ArrayList<>( asList( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PENDING), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PENDING), + equalTo(MESSAGING_OPERATION, "receive"), satisfies(MESSAGING_CLIENT_ID, k -> k.endsWith("consumer")), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1))); + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1))); if (Boolean.getBoolean("testLatestDeps")) { - assertions.add( - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "test-application")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test-application")); } span.hasName(STREAM_PENDING + " receive") .hasKind(SpanKind.CONSUMER) @@ -153,33 +153,24 @@ void testKafkaProduceAndConsumeWithStreamsInBetween() throws Exception { new ArrayList<>( asList( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PENDING), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PENDING), + equalTo(MESSAGING_OPERATION, "process"), satisfies(MESSAGING_CLIENT_ID, k -> k.endsWith("consumer")), + satisfies(MESSAGING_MESSAGE_BODY_SIZE, k -> k.isInstanceOf(Long.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - k -> k.isInstanceOf(Long.class)), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, k -> k.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, 0), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), + equalTo(MESSAGING_KAFKA_MESSAGE_OFFSET, 0), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), satisfies( longKey("kafka.record.queue_time_ms"), k -> k.isGreaterThanOrEqualTo(0)), equalTo(stringKey("asdf"), "testing"))); if (Boolean.getBoolean("testLatestDeps")) { - assertions.add( - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "test-application")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test-application")); } span.hasName(STREAM_PENDING + " process") .hasKind(SpanKind.CONSUMER) @@ -196,18 +187,15 @@ void testKafkaProduceAndConsumeWithStreamsInBetween() throws Exception { .hasSpanId(receivedContext.getSpanId()) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues.KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PROCESSED), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PROCESSED), + equalTo(MESSAGING_OPERATION, "publish"), satisfies(MESSAGING_CLIENT_ID, k -> k.endsWith("producer")), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, k -> k.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, 0))); + equalTo(MESSAGING_KAFKA_MESSAGE_OFFSET, 0))); producerProcessedRef.set(trace.getSpan(2)); }, @@ -219,20 +207,15 @@ void testKafkaProduceAndConsumeWithStreamsInBetween() throws Exception { new ArrayList<>( asList( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PROCESSED), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PROCESSED), + equalTo(MESSAGING_OPERATION, "receive"), satisfies(MESSAGING_CLIENT_ID, k -> k.startsWith("consumer")), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1))); + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1))); if (Boolean.getBoolean("testLatestDeps")) { - assertions.add( - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test")); } span.hasName(STREAM_PROCESSED + " receive") .hasKind(SpanKind.CONSUMER) @@ -245,32 +228,25 @@ void testKafkaProduceAndConsumeWithStreamsInBetween() throws Exception { new ArrayList<>( asList( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PROCESSED), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PROCESSED), + equalTo(MESSAGING_OPERATION, "process"), satisfies(MESSAGING_CLIENT_ID, k -> k.startsWith("consumer")), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - k -> k.isInstanceOf(Long.class)), + MESSAGING_MESSAGE_BODY_SIZE, k -> k.isInstanceOf(Long.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, k -> k.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, 0), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), + equalTo(MESSAGING_KAFKA_MESSAGE_OFFSET, 0), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), satisfies( longKey("kafka.record.queue_time_ms"), k -> k.isGreaterThanOrEqualTo(0)), equalTo(longKey("testing"), 123))); if (Boolean.getBoolean("testLatestDeps")) { - assertions.add( - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test")); } span.hasName(STREAM_PROCESSED + " process") .hasKind(SpanKind.CONSUMER) diff --git a/instrumentation/kafka/kafka-streams-0.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsSuppressReceiveSpansTest.java b/instrumentation/kafka/kafka-streams-0.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsSuppressReceiveSpansTest.java index ceb2b10c03c4..0afa69dbecff 100644 --- a/instrumentation/kafka/kafka-streams-0.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsSuppressReceiveSpansTest.java +++ b/instrumentation/kafka/kafka-streams-0.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsSuppressReceiveSpansTest.java @@ -9,6 +9,14 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; @@ -94,54 +102,42 @@ void testKafkaProduceAndConsumeWithStreamsInBetween() throws Exception { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PENDING), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PENDING), + equalTo(MESSAGING_OPERATION, "publish"), equalTo(MESSAGING_CLIENT_ID, "producer-1"), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, k -> k.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, 0), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10")), + equalTo(MESSAGING_KAFKA_MESSAGE_OFFSET, 0), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10")), // kafka-stream CONSUMER span -> { List assertions = new ArrayList<>( asList( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PENDING), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PENDING), + equalTo(MESSAGING_OPERATION, "process"), satisfies(MESSAGING_CLIENT_ID, k -> k.endsWith("consumer")), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - k -> k.isInstanceOf(Long.class)), + MESSAGING_MESSAGE_BODY_SIZE, k -> k.isInstanceOf(Long.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, k -> k.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, 0), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), + equalTo(MESSAGING_KAFKA_MESSAGE_OFFSET, 0), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), satisfies( longKey("kafka.record.queue_time_ms"), k -> k.isGreaterThanOrEqualTo(0)), equalTo(stringKey("asdf"), "testing"))); if (Boolean.getBoolean("testLatestDeps")) { - assertions.add( - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "test-application")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test-application")); } span.hasName(STREAM_PENDING + " process") .hasKind(SpanKind.CONSUMER) @@ -158,17 +154,15 @@ void testKafkaProduceAndConsumeWithStreamsInBetween() throws Exception { .hasSpanId(receivedContext.getSpanId()) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues.KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PROCESSED), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PROCESSED), + equalTo(MESSAGING_OPERATION, "publish"), satisfies(MESSAGING_CLIENT_ID, k -> k.isInstanceOf(String.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, k -> k.isInstanceOf(String.class)), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, 0)); + equalTo(MESSAGING_KAFKA_MESSAGE_OFFSET, 0)); }, // kafka-clients CONSUMER process span -> { @@ -176,32 +170,25 @@ void testKafkaProduceAndConsumeWithStreamsInBetween() throws Exception { new ArrayList<>( asList( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .KAFKA), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - STREAM_PROCESSED), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_DESTINATION_NAME, STREAM_PROCESSED), + equalTo(MESSAGING_OPERATION, "process"), satisfies(MESSAGING_CLIENT_ID, k -> k.startsWith("consumer")), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - k -> k.isInstanceOf(Long.class)), + MESSAGING_MESSAGE_BODY_SIZE, k -> k.isInstanceOf(Long.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, k -> k.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, 0), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), + equalTo(MESSAGING_KAFKA_MESSAGE_OFFSET, 0), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), satisfies( longKey("kafka.record.queue_time_ms"), k -> k.isGreaterThanOrEqualTo(0)), equalTo(longKey("testing"), 123))); if (Boolean.getBoolean("testLatestDeps")) { - assertions.add( - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test")); } span.hasName(STREAM_PROCESSED + " process") .hasKind(SpanKind.CONSUMER) diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientTest.java b/instrumentation/kubernetes-client-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientTest.java index 61c0919084fd..f8096f955a9f 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientTest.java +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientTest.java @@ -7,6 +7,12 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static org.assertj.core.api.Assertions.assertThat; import io.kubernetes.client.openapi.ApiCallback; @@ -18,10 +24,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import io.opentelemetry.testing.internal.armeria.common.HttpResponse; import io.opentelemetry.testing.internal.armeria.common.HttpStatus; import io.opentelemetry.testing.internal.armeria.common.MediaType; @@ -80,13 +82,13 @@ void synchronousCall() throws ApiException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - UrlAttributes.URL_FULL, + URL_FULL, mockWebServer.httpUri() + "/api/v1/namespaces/namespace/pods/name/proxy?path=path"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, mockWebServer.httpPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, mockWebServer.httpPort()), equalTo( AttributeKey.stringKey("kubernetes-client.namespace"), "namespace"), equalTo(AttributeKey.stringKey("kubernetes-client.name"), "name")))); @@ -127,14 +129,14 @@ void handleErrorsInSyncCall() { .hasException(apiException) .hasAttributesSatisfyingExactly( equalTo( - UrlAttributes.URL_FULL, + URL_FULL, mockWebServer.httpUri() + "/api/v1/namespaces/namespace/pods/name/proxy?path=path"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 451), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, mockWebServer.httpPort()), - equalTo(ErrorAttributes.ERROR_TYPE, "451"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 451), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, mockWebServer.httpPort()), + equalTo(ERROR_TYPE, "451"), equalTo( AttributeKey.stringKey("kubernetes-client.namespace"), "namespace"), equalTo(AttributeKey.stringKey("kubernetes-client.name"), "name")))); @@ -181,13 +183,13 @@ public void onSuccess( .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - UrlAttributes.URL_FULL, + URL_FULL, mockWebServer.httpUri() + "/api/v1/namespaces/namespace/pods/name/proxy?path=path"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, mockWebServer.httpPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, mockWebServer.httpPort()), equalTo( AttributeKey.stringKey("kubernetes-client.namespace"), "namespace"), equalTo(AttributeKey.stringKey("kubernetes-client.name"), "name")), @@ -242,14 +244,14 @@ public void onFailure( .hasException(exceptionReference.get()) .hasAttributesSatisfyingExactly( equalTo( - UrlAttributes.URL_FULL, + URL_FULL, mockWebServer.httpUri() + "/api/v1/namespaces/namespace/pods/name/proxy?path=path"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 451), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, mockWebServer.httpPort()), - equalTo(ErrorAttributes.ERROR_TYPE, "451"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 451), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, mockWebServer.httpPort()), + equalTo(ERROR_TYPE, "451"), equalTo( AttributeKey.stringKey("kubernetes-client.namespace"), "namespace"), equalTo(AttributeKey.stringKey("kubernetes-client.name"), "name")), diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/version20Test/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientVer20Test.java b/instrumentation/kubernetes-client-7.0/javaagent/src/version20Test/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientVer20Test.java index 00ef9fea1546..40aaad78c44b 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/version20Test/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientVer20Test.java +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/version20Test/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientVer20Test.java @@ -7,6 +7,12 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static org.assertj.core.api.Assertions.assertThat; import io.kubernetes.client.openapi.ApiCallback; @@ -18,10 +24,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import io.opentelemetry.testing.internal.armeria.common.HttpResponse; import io.opentelemetry.testing.internal.armeria.common.HttpStatus; import io.opentelemetry.testing.internal.armeria.common.MediaType; @@ -84,13 +86,13 @@ void synchronousCall() throws ApiException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - UrlAttributes.URL_FULL, + URL_FULL, mockWebServer.httpUri() + "/api/v1/namespaces/namespace/pods/name/proxy/path"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, mockWebServer.httpPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, mockWebServer.httpPort()), equalTo( AttributeKey.stringKey("kubernetes-client.namespace"), "namespace"), equalTo(AttributeKey.stringKey("kubernetes-client.name"), "name")))); @@ -131,14 +133,14 @@ void handleErrorsInSyncCall() { .hasException(apiException) .hasAttributesSatisfyingExactly( equalTo( - UrlAttributes.URL_FULL, + URL_FULL, mockWebServer.httpUri() + "/api/v1/namespaces/namespace/pods/name/proxy/path"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 451), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, mockWebServer.httpPort()), - equalTo(ErrorAttributes.ERROR_TYPE, "451"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 451), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, mockWebServer.httpPort()), + equalTo(ERROR_TYPE, "451"), equalTo( AttributeKey.stringKey("kubernetes-client.namespace"), "namespace"), equalTo(AttributeKey.stringKey("kubernetes-client.name"), "name")))); @@ -184,13 +186,13 @@ public void onSuccess( .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - UrlAttributes.URL_FULL, + URL_FULL, mockWebServer.httpUri() + "/api/v1/namespaces/namespace/pods/name/proxy/path"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, mockWebServer.httpPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, mockWebServer.httpPort()), equalTo( AttributeKey.stringKey("kubernetes-client.namespace"), "namespace"), equalTo(AttributeKey.stringKey("kubernetes-client.name"), "name")), @@ -244,14 +246,14 @@ public void onFailure( .hasException(exceptionReference.get()) .hasAttributesSatisfyingExactly( equalTo( - UrlAttributes.URL_FULL, + URL_FULL, mockWebServer.httpUri() + "/api/v1/namespaces/namespace/pods/name/proxy/path"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 451), - equalTo(ServerAttributes.SERVER_ADDRESS, "127.0.0.1"), - equalTo(ServerAttributes.SERVER_PORT, mockWebServer.httpPort()), - equalTo(ErrorAttributes.ERROR_TYPE, "451"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 451), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, mockWebServer.httpPort()), + equalTo(ERROR_TYPE, "451"), equalTo( AttributeKey.stringKey("kubernetes-client.namespace"), "namespace"), equalTo(AttributeKey.stringKey("kubernetes-client.name"), "name")), diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java index 36dfac306235..e4fa0f11ca10 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java @@ -7,6 +7,10 @@ import static io.opentelemetry.api.common.AttributeKey.booleanKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchException; import static org.assertj.core.api.Assertions.catchThrowable; @@ -30,8 +34,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.Map; import java.util.concurrent.CancellationException; import java.util.concurrent.CompletableFuture; @@ -143,9 +145,9 @@ void testConnectUsingGetOnConnectionFuture() { span.hasName("CONNECT") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis")))); + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis")))); } @Test @@ -171,9 +173,9 @@ void testExceptionInsideTheConnectionFuture() { .hasStatus(StatusData.error()) .hasException(exception) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, incorrectPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis")))); + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, incorrectPort), + equalTo(DB_SYSTEM, "redis")))); } @Test @@ -191,8 +193,7 @@ void testSetCommandUsingFutureGetWithTimeout() span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "SET")))); } @Test @@ -221,8 +222,7 @@ void testCommandChainedWithThenAccept() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")), + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "GET")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -283,8 +283,7 @@ void getNonExistentKeyCommandWithHandleAsyncAndChainedWithThenApply() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")), + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "GET")), span -> span.hasName("callback1") .hasKind(SpanKind.INTERNAL) @@ -324,8 +323,7 @@ void testCommandWithNoArgumentsUsingBiconsumer() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RANDOMKEY")), + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "RANDOMKEY")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -368,16 +366,14 @@ void testHashSetAndThenNestApplyToHashGetall() { span.hasName("HMSET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "HMSET"))), + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "HMSET"))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("HGETALL") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "HGETALL")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "HGETALL")))); } @Test @@ -418,8 +414,7 @@ void testCommandCompletesExceptionally() { .hasStatus(StatusData.error()) .hasException(new IllegalStateException("TestException")) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DEL")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "DEL")))); } @Test @@ -455,8 +450,8 @@ void testCommandBeforeItFinished() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SADD"), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_OPERATION, "SADD"), equalTo(booleanKey("lettuce.command.cancelled"), true)), span -> span.hasName("callback") @@ -492,8 +487,7 @@ void testDebugSegfaultCommandWithNoArgumentShouldProduceSpan() { span.hasName("DEBUG") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DEBUG")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "DEBUG")))); } @Test @@ -526,7 +520,6 @@ void testShutdownCommandShouldProduceSpan() { span.hasName("SHUTDOWN") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SHUTDOWN")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "SHUTDOWN")))); } } diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceSyncClientTest.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceSyncClientTest.java index 84a547851a05..19749a20ee93 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceSyncClientTest.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceSyncClientTest.java @@ -6,6 +6,10 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v4_0; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchException; @@ -20,8 +24,6 @@ import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.Map; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; @@ -121,9 +123,9 @@ void testConnect() { span.hasName("CONNECT") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis")))); + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis")))); } @Test @@ -144,9 +146,9 @@ void testConnectException() { .hasKind(SpanKind.CLIENT) .hasException(exception) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, incorrectPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis")))); + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, incorrectPort), + equalTo(DB_SYSTEM, "redis")))); } @Test @@ -161,8 +163,7 @@ void testSetCommand() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "SET")))); } @Test @@ -177,8 +178,7 @@ void testGetCommand() { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "GET")))); } @Test @@ -193,8 +193,7 @@ void testGetNonExistentKeyCommand() { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "GET")))); } @Test @@ -209,8 +208,7 @@ void testCommandWithNoArguments() { span.hasName("RANDOMKEY") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RANDOMKEY")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "RANDOMKEY")))); } @Test @@ -225,8 +223,7 @@ void testListCommand() { span.hasName("LPUSH") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "LPUSH")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "LPUSH")))); } @Test @@ -241,8 +238,7 @@ void testHashSetCommand() { span.hasName("HMSET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "HMSET")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "HMSET")))); } @Test @@ -257,8 +253,7 @@ void testHashGetallCommand() { span.hasName("HGETALL") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "HGETALL")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "HGETALL")))); } @Test @@ -289,8 +284,7 @@ void testDebugSegfaultCommandWithNoArgumentShouldProduceSpan() { span.hasName("DEBUG") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DEBUG")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "DEBUG")))); } @Test @@ -323,7 +317,6 @@ void testShutdownCommandShouldProduceSpan() { span.hasName("SHUTDOWN") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SHUTDOWN")))); + equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "SHUTDOWN")))); } } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java index 7a6c8043ea4f..38dfc0953492 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java @@ -8,6 +8,11 @@ import static io.opentelemetry.api.common.AttributeKey.booleanKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchException; import static org.assertj.core.api.Assertions.catchThrowable; @@ -28,8 +33,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Map; @@ -115,9 +118,9 @@ void testConnectUsingGetOnConnectionFuture() throws ExecutionException, Interrup span.hasName("CONNECT") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis")))); + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis")))); } @SuppressWarnings("deprecation") // RedisURI constructor @@ -146,9 +149,9 @@ void testConnectExceptionInsideTheConnectionFuture() { .hasKind(SpanKind.CLIENT) .hasStatus(StatusData.error()) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, incorrectPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis")) + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, incorrectPort), + equalTo(DB_SYSTEM, "redis")) .hasEventsSatisfyingExactly( event -> event @@ -185,9 +188,9 @@ void testSetCommandUsingFutureGetWithTimeout() span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET TESTSETKEY ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET TESTSETKEY ?"), + equalTo(DB_OPERATION, "SET")))); } @Test @@ -217,9 +220,9 @@ void testGetCommandChainedWithThenAccept() .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET TESTKEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET TESTKEY"), + equalTo(DB_OPERATION, "GET")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -274,9 +277,9 @@ void testGetNonExistentKeyCommandWithHandleAsyncAndChainedWithThenApply() .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET NON_EXISTENT_KEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"), + equalTo(DB_OPERATION, "GET")), span -> span.hasName("callback1") .hasKind(SpanKind.INTERNAL) @@ -317,9 +320,9 @@ void testCommandWithNoArgumentsUsingBiconsumer() .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "RANDOMKEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RANDOMKEY")), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "RANDOMKEY"), + equalTo(DB_OPERATION, "RANDOMKEY")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -363,20 +366,18 @@ void testHashSetAndThenNestApplyToHashGetall() span.hasName("HMSET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "HMSET TESTHM firstname ? lastname ? age ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "HMSET"))), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "HMSET TESTHM firstname ? lastname ? age ?"), + equalTo(DB_OPERATION, "HMSET"))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("HGETALL") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "HGETALL TESTHM"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "HGETALL")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "HGETALL TESTHM"), + equalTo(DB_OPERATION, "HGETALL")))); } @Test @@ -417,9 +418,9 @@ void testCommandCompletesExceptionally() { .hasStatus(StatusData.error()) .hasException(new IllegalStateException("TestException")) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "DEL key1 key2"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DEL")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "DEL key1 key2"), + equalTo(DB_OPERATION, "DEL")))); } @Test @@ -455,9 +456,9 @@ void testCancelCommandBeforeItFinishes() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SADD SKEY ? ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SADD"), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SADD SKEY ? ?"), + equalTo(DB_OPERATION, "SADD"), equalTo(booleanKey("lettuce.command.cancelled"), true)), span -> span.hasName("callback") @@ -480,9 +481,9 @@ void testDebugSegfaultCommandWithNoArgumentShouldProduceSpan() { span.hasName("DEBUG") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "DEBUG SEGFAULT"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DEBUG")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "DEBUG SEGFAULT"), + equalTo(DB_OPERATION, "DEBUG")))); } @Test @@ -500,8 +501,8 @@ void testShutdownCommandShouldProduceSpan() { span.hasName("SHUTDOWN") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SHUTDOWN NOSAVE"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SHUTDOWN")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE"), + equalTo(DB_OPERATION, "SHUTDOWN")))); } } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceReactiveClientTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceReactiveClientTest.java index c6da9d791b77..bf2e6ea0cab8 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceReactiveClientTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceReactiveClientTest.java @@ -7,6 +7,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.lettuce.core.RedisClient; @@ -16,7 +19,6 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.concurrent.CompletableFuture; @@ -92,9 +94,9 @@ void testSetCommandWithSubscribeOnDefinedConsumer() .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET TESTSETKEY ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET")), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET TESTSETKEY ?"), + equalTo(DB_OPERATION, "SET")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -123,9 +125,9 @@ void testGetCommandWithLambdaFunction() span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET TESTKEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET TESTKEY"), + equalTo(DB_OPERATION, "GET")))); } // to make sure instrumentation's chained completion stages won't interfere with user's, while @@ -162,9 +164,9 @@ void testGetNonExistentKeyCommand() span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET NON_EXISTENT_KEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"), + equalTo(DB_OPERATION, "GET")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -192,9 +194,9 @@ void testCommandWithNoArguments() span.hasName("RANDOMKEY") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "RANDOMKEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RANDOMKEY")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "RANDOMKEY"), + equalTo(DB_OPERATION, "RANDOMKEY")))); } @Test @@ -208,9 +210,9 @@ void testCommandFluxPublisher() { span.hasName("COMMAND") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "COMMAND"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "COMMAND"), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "COMMAND"), + equalTo(DB_OPERATION, "COMMAND"), satisfies( AttributeKey.longKey("lettuce.command.results.count"), val -> val.isGreaterThan(100))))); @@ -227,9 +229,9 @@ void testCommandCancelAfter2OnFluxPublisher() { span.hasName("COMMAND") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "COMMAND"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "COMMAND"), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "COMMAND"), + equalTo(DB_OPERATION, "COMMAND"), satisfies( AttributeKey.booleanKey("lettuce.command.cancelled"), AbstractBooleanAssert::isTrue), @@ -261,9 +263,9 @@ void testDebugSegfaultCommandReturnsMonoVoidWithNoArgumentShouldProduceSpan() { span.hasName("DEBUG") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "DEBUG SEGFAULT"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DEBUG")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "DEBUG SEGFAULT"), + equalTo(DB_OPERATION, "DEBUG")))); } @Test @@ -281,9 +283,9 @@ void testShutdownCommandShouldProduceSpan() { span.hasName("SHUTDOWN") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SHUTDOWN NOSAVE"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SHUTDOWN")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE"), + equalTo(DB_OPERATION, "SHUTDOWN")))); } @Test @@ -301,17 +303,17 @@ void testBlockingSubscriber() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET a ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET")), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET a ?"), + equalTo(DB_OPERATION, "SET")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET a"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET a"), + equalTo(DB_OPERATION, "GET")))); } @Test @@ -329,17 +331,17 @@ void testAsyncSubscriber() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET a ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET")), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET a ?"), + equalTo(DB_OPERATION, "SET")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET a"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET a"), + equalTo(DB_OPERATION, "GET")))); } @Test @@ -362,16 +364,16 @@ void testAsyncSubscriberWithSpecificThreadPool() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET a ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET")), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET a ?"), + equalTo(DB_OPERATION, "SET")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET a"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET a"), + equalTo(DB_OPERATION, "GET")))); } } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceSyncClientTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceSyncClientTest.java index d3acc270d681..69adc52545dc 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceSyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceSyncClientTest.java @@ -7,6 +7,11 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchException; @@ -19,8 +24,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Map; @@ -90,9 +93,9 @@ void testConnect() { span.hasName("CONNECT") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis")))); + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis")))); } @Test @@ -112,9 +115,9 @@ void testConnectException() { .hasKind(SpanKind.CLIENT) .hasStatus(StatusData.error()) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, incorrectPort), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis")) + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, incorrectPort), + equalTo(DB_SYSTEM, "redis")) .hasEventsSatisfyingExactly( event -> event @@ -148,9 +151,9 @@ void testSetCommand() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET TESTSETKEY ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET TESTSETKEY ?"), + equalTo(DB_OPERATION, "SET")))); } @Test @@ -165,9 +168,9 @@ void testGetCommand() { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET TESTKEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET TESTKEY"), + equalTo(DB_OPERATION, "GET")))); } @Test @@ -182,9 +185,9 @@ void testGetNonExistentKeyCommand() { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET NON_EXISTENT_KEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"), + equalTo(DB_OPERATION, "GET")))); } @Test @@ -199,9 +202,9 @@ void testCommandWithNoArguments() { span.hasName("RANDOMKEY") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "RANDOMKEY"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "RANDOMKEY")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "RANDOMKEY"), + equalTo(DB_OPERATION, "RANDOMKEY")))); } @Test @@ -216,9 +219,9 @@ void testListCommand() { span.hasName("LPUSH") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "LPUSH TESTLIST ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "LPUSH")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "LPUSH TESTLIST ?"), + equalTo(DB_OPERATION, "LPUSH")))); } @Test @@ -233,11 +236,9 @@ void testHashSetCommand() { span.hasName("HMSET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "HMSET user firstname ? lastname ? age ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "HMSET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "HMSET user firstname ? lastname ? age ?"), + equalTo(DB_OPERATION, "HMSET")))); } @Test @@ -252,9 +253,9 @@ void testHashGetallCommand() { span.hasName("HGETALL") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "HGETALL TESTHM"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "HGETALL")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "HGETALL TESTHM"), + equalTo(DB_OPERATION, "HGETALL")))); } @Test @@ -272,9 +273,9 @@ void testDebugSegfaultCommandWithNoArgumentShouldProduceSpan() { span.hasName("DEBUG") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "DEBUG SEGFAULT"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DEBUG")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "DEBUG SEGFAULT"), + equalTo(DB_OPERATION, "DEBUG")))); } @Test @@ -292,8 +293,8 @@ void testShutdownCommandShouldProduceSpan() { span.hasName("SHUTDOWN") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SHUTDOWN NOSAVE"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SHUTDOWN")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE"), + equalTo(DB_OPERATION, "SHUTDOWN")))); } } diff --git a/instrumentation/lettuce/lettuce-5.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceReactiveClientTest.java b/instrumentation/lettuce/lettuce-5.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceReactiveClientTest.java index f9abae4a35c6..4ce3f3c10786 100644 --- a/instrumentation/lettuce/lettuce-5.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceReactiveClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceReactiveClientTest.java @@ -6,6 +6,13 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v5_1; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import io.lettuce.core.RedisClient; import io.opentelemetry.api.common.Attributes; @@ -13,9 +20,6 @@ import io.opentelemetry.instrumentation.lettuce.v5_1.AbstractLettuceReactiveClientTest; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -54,13 +58,13 @@ void testAsyncSubscriberWithSpecificThreadPool() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET a ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET a ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -70,13 +74,13 @@ void testAsyncSubscriberWithSpecificThreadPool() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET a"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET a"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java index a0189fbbfa67..80a47df80fd7 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java @@ -6,6 +6,13 @@ package io.opentelemetry.instrumentation.lettuce.v5_1; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -21,9 +28,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; @@ -156,14 +160,13 @@ void testSetCommandUsingFutureGetWithTimeout() throws Exception { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "SET TESTSETKEY ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET TESTSETKEY ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -203,14 +206,13 @@ void testGetCommandChainedWithThenAccept() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "GET TESTKEY"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET TESTKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -283,15 +285,13 @@ void testGetNonExistentKeyCommandWithHandleAsyncAndChainedWithThenApply() throws .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "GET NON_EXISTENT_KEY"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -351,14 +351,13 @@ void testCommandWithNoArgumentsUsingBiconsumer() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "RANDOMKEY"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "RANDOMKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -412,15 +411,14 @@ void testHashSetAndThenNestApplyToHashGetall() throws Exception { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "HMSET TESTHM firstname ? lastname ? age ?"))) + DB_STATEMENT, "HMSET TESTHM firstname ? lastname ? age ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end"))), @@ -431,13 +429,13 @@ void testHashSetAndThenNestApplyToHashGetall() throws Exception { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "HGETALL TESTHM"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "HGETALL TESTHM"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java index 90fe8a884450..dff22a6a78e7 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java @@ -6,13 +6,13 @@ package io.opentelemetry.instrumentation.lettuce.v5_1; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAMESPACE; import io.lettuce.core.RedisClient; import io.lettuce.core.api.StatefulRedisConnection; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -83,7 +83,7 @@ private ContainerConnection(StatefulRedisConnection connection, protected static List addExtraAttributes(AttributeAssertion... assertions) { List result = new ArrayList<>(Arrays.asList(assertions)); if (Boolean.getBoolean("testLatestDeps")) { - result.add(equalTo(DbIncubatingAttributes.DB_NAMESPACE, "0")); + result.add(equalTo(DB_NAMESPACE, "0")); } return result; } diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java index c0f0a4ee18a2..8c3d6fe2ebc5 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java @@ -6,15 +6,19 @@ package io.opentelemetry.instrumentation.lettuce.v5_1; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.lettuce.core.api.reactive.RedisReactiveCommands; import io.lettuce.core.api.sync.RedisCommands; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Objects; @@ -94,14 +98,13 @@ void testSetCommandWithSubscribeOnDefinedConsumer() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "SET TESTSETKEY ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET TESTSETKEY ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -134,13 +137,13 @@ void testGetCommandWithLambdaFunction() throws Exception { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET TESTKEY"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET TESTKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -184,15 +187,13 @@ void testGetNonExistentKeyCommand() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "GET NON_EXISTENT_KEY"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -224,13 +225,13 @@ void testCommandWithNoArguments() throws Exception { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "RANDOMKEY"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "RANDOMKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -249,13 +250,13 @@ void testCommandFluxPublisher() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "COMMAND"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "COMMAND"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -295,13 +296,13 @@ void testBlockingSubscriber() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET a ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET a ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -311,13 +312,13 @@ void testBlockingSubscriber() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET a"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET a"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -341,13 +342,13 @@ void testAsyncSubscriber() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SET a ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET a ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -357,13 +358,13 @@ void testAsyncSubscriber() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET a"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET a"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java index c6aa56acc372..6f169dd845b9 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java @@ -7,13 +7,17 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.lettuce.core.api.sync.RedisCommands; import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; import org.junit.jupiter.api.AfterAll; @@ -71,15 +75,13 @@ void testAuthCommand() throws Exception { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "CLIENT SETINFO lib-name Lettuce")))), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "CLIENT SETINFO lib-name Lettuce")))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -87,14 +89,14 @@ void testAuthCommand() throws Exception { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, stringAssert -> stringAssert.startsWith("CLIENT SETINFO lib-ver"))))), trace -> @@ -104,13 +106,13 @@ void testAuthCommand() throws Exception { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "AUTH ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "AUTH ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -125,13 +127,13 @@ void testAuthCommand() throws Exception { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "AUTH ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "AUTH ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java index be7806e9a87c..ed32af6d2b27 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java @@ -7,6 +7,13 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -21,9 +28,6 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.test.utils.PortUtils; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Base64; @@ -120,14 +124,13 @@ void testSetCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "SET TESTSETKEY ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SET TESTSETKEY ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -147,13 +150,13 @@ void testGetCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET TESTKEY"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET TESTKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -173,15 +176,13 @@ void testGetNonExistentKeyCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "GET NON_EXISTENT_KEY"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -201,13 +202,13 @@ void testCommandWithNoArguments() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "RANDOMKEY"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "RANDOMKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -237,16 +238,13 @@ void testListCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo( - NetworkAttributes.NETWORK_PEER_PORT, - containerConnection.port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, containerConnection.port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "LPUSH TESTLIST ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, containerConnection.port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, containerConnection.port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "LPUSH TESTLIST ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -266,15 +264,14 @@ void testHashSetCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "HMSET user firstname ? lastname ? age ?"))) + DB_STATEMENT, "HMSET user firstname ? lastname ? age ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -294,13 +291,13 @@ void testHashGetallCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "HGETALL TESTHM"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "HGETALL TESTHM"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -327,15 +324,13 @@ void testEvalCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "EVAL " + b64Script + " 1 TESTLIST ? ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "EVAL " + b64Script + " 1 TESTLIST ? ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -356,14 +351,13 @@ void testMsetCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "MSET key1 ? key2 ?"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "MSET key1 ? key2 ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -387,18 +381,13 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo( - NetworkAttributes.NETWORK_PEER_PORT, - containerConnection.port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo( - ServerAttributes.SERVER_PORT, containerConnection.port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "CLIENT SETINFO lib-name Lettuce")))), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, containerConnection.port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, containerConnection.port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "CLIENT SETINFO lib-name Lettuce")))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -406,17 +395,14 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo( - NetworkAttributes.NETWORK_PEER_PORT, - containerConnection.port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo( - ServerAttributes.SERVER_PORT, containerConnection.port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, containerConnection.port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, containerConnection.port), + equalTo(DB_SYSTEM, "redis"), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, stringAssert -> stringAssert.startsWith("CLIENT SETINFO lib-ver"))))), trace -> @@ -426,18 +412,13 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo( - NetworkAttributes.NETWORK_PEER_PORT, - containerConnection.port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo( - ServerAttributes.SERVER_PORT, containerConnection.port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "DEBUG SEGFAULT"))))); + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, containerConnection.port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, containerConnection.port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "DEBUG SEGFAULT"))))); } else { testing() .waitAndAssertTraces( @@ -448,17 +429,13 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo( - NetworkAttributes.NETWORK_PEER_PORT, - containerConnection.port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo( - ServerAttributes.SERVER_PORT, containerConnection.port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "DEBUG SEGFAULT"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, containerConnection.port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, containerConnection.port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "DEBUG SEGFAULT"))) // these are no longer recorded since Lettuce 6.1.6 .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), @@ -492,16 +469,13 @@ void testShutdownCommandProducesNoSpan() { .hasException(new RedisException("Connection disconnected")) .hasAttributesSatisfyingExactly( addExtraAttributes( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo( - NetworkAttributes.NETWORK_PEER_PORT, - containerConnection.port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, containerConnection.port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "SHUTDOWN NOSAVE")))); + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, containerConnection.port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, containerConnection.port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE")))); } else { trace.hasSpansSatisfyingExactly( span -> @@ -511,16 +485,13 @@ void testShutdownCommandProducesNoSpan() { addExtraAttributes( equalTo( AttributeKey.stringKey("error"), "Connection disconnected"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo( - NetworkAttributes.NETWORK_PEER_PORT, - containerConnection.port), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, containerConnection.port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, "SHUTDOWN NOSAVE"))) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, containerConnection.port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, containerConnection.port), + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end"))); diff --git a/instrumentation/log4j/log4j-appender-1.2/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v1_2/Log4j1Test.java b/instrumentation/log4j/log4j-appender-1.2/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v1_2/Log4j1Test.java index a5b36a9e5ad9..669dbb5053a5 100644 --- a/instrumentation/log4j/log4j-appender-1.2/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v1_2/Log4j1Test.java +++ b/instrumentation/log4j/log4j-appender-1.2/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v1_2/Log4j1Test.java @@ -8,6 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import static java.util.concurrent.TimeUnit.MILLISECONDS; import io.opentelemetry.api.common.AttributeKey; @@ -18,7 +21,6 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.lang.reflect.Field; import java.time.Instant; @@ -128,13 +130,10 @@ private static void test( if (logException) { attributeAsserts.addAll( Arrays.asList( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - IllegalStateException.class.getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, "hello"), + equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), + equalTo(EXCEPTION_MESSAGE, "hello"), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, - v -> v.contains(Log4j1Test.class.getName())))); + EXCEPTION_STACKTRACE, v -> v.contains(Log4j1Test.class.getName())))); } logRecord.hasAttributesSatisfyingExactly(attributeAsserts); diff --git a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Log4j2Test.java b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Log4j2Test.java index 1187c775ff3c..4825a990633e 100644 --- a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Log4j2Test.java +++ b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Log4j2Test.java @@ -8,6 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import static java.util.concurrent.TimeUnit.MILLISECONDS; import io.opentelemetry.api.common.AttributeKey; @@ -19,7 +22,6 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.time.Instant; import java.util.ArrayList; @@ -118,13 +120,10 @@ private static void test( if (logException) { attributeAsserts.addAll( Arrays.asList( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - IllegalStateException.class.getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, "hello"), + equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), + equalTo(EXCEPTION_MESSAGE, "hello"), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, - v -> v.contains(Log4j2Test.class.getName())))); + EXCEPTION_STACKTRACE, v -> v.contains(Log4j2Test.class.getName())))); } logRecord.hasAttributesSatisfyingExactly(attributeAsserts); diff --git a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Slf4jToLog4jTest.java b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Slf4jToLog4jTest.java index 0a842bbd16cc..ce6249fe4ed6 100644 --- a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Slf4jToLog4jTest.java +++ b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Slf4jToLog4jTest.java @@ -8,6 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.logs.Severity; @@ -16,7 +19,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.util.ArrayList; import java.util.Arrays; @@ -109,12 +111,10 @@ private static void test( if (logException) { attributeAsserts.addAll( Arrays.asList( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - IllegalStateException.class.getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, "hello"), + equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), + equalTo(EXCEPTION_MESSAGE, "hello"), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, + EXCEPTION_STACKTRACE, v -> v.contains(Slf4jToLog4jTest.class.getName())))); } logRecord.hasAttributesSatisfyingExactly(attributeAsserts); diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/AbstractOpenTelemetryAppenderTest.java b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/AbstractOpenTelemetryAppenderTest.java index 55307f4ded15..74983abdede5 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/AbstractOpenTelemetryAppenderTest.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/AbstractOpenTelemetryAppenderTest.java @@ -9,6 +9,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import static java.util.concurrent.TimeUnit.MILLISECONDS; import io.opentelemetry.api.logs.Severity; @@ -17,7 +20,6 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.time.Instant; import org.apache.logging.log4j.LogManager; @@ -131,13 +133,9 @@ void logWithExtras() { equalTo( ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - IllegalStateException.class.getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, "Error!"), - satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, - v -> v.contains("logWithExtras"))); + equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), + equalTo(EXCEPTION_MESSAGE, "Error!"), + satisfies(EXCEPTION_STACKTRACE, v -> v.contains("logWithExtras"))); LogRecordData logRecordData = AssertAccess.getActual(logRecord); assertThat(logRecordData.getTimestampEpochNanos()) diff --git a/instrumentation/logback/logback-appender-1.0/javaagent/src/test/java/io/opentelemetry/instrumentation/logback/appender/v1_0/LogbackTest.java b/instrumentation/logback/logback-appender-1.0/javaagent/src/test/java/io/opentelemetry/instrumentation/logback/appender/v1_0/LogbackTest.java index 985915317f9d..8fd7f563fc97 100644 --- a/instrumentation/logback/logback-appender-1.0/javaagent/src/test/java/io/opentelemetry/instrumentation/logback/appender/v1_0/LogbackTest.java +++ b/instrumentation/logback/logback-appender-1.0/javaagent/src/test/java/io/opentelemetry/instrumentation/logback/appender/v1_0/LogbackTest.java @@ -8,6 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.logs.Severity; @@ -16,7 +19,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.util.ArrayList; @@ -169,13 +171,10 @@ private static void test( if (logException) { attributeAsserts.addAll( Arrays.asList( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - IllegalStateException.class.getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, "hello"), + equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), + equalTo(EXCEPTION_MESSAGE, "hello"), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, - v -> v.contains(LogbackTest.class.getName())))); + EXCEPTION_STACKTRACE, v -> v.contains(LogbackTest.class.getName())))); } logRecord.hasAttributesSatisfyingExactly(attributeAsserts); }); diff --git a/instrumentation/logback/logback-appender-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/appender/v1_0/AbstractOpenTelemetryAppenderTest.java b/instrumentation/logback/logback-appender-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/appender/v1_0/AbstractOpenTelemetryAppenderTest.java index bd73cdc9dd4c..3dbbb0eb7c62 100644 --- a/instrumentation/logback/logback-appender-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/appender/v1_0/AbstractOpenTelemetryAppenderTest.java +++ b/instrumentation/logback/logback-appender-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/appender/v1_0/AbstractOpenTelemetryAppenderTest.java @@ -8,6 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.core.ContextBase; @@ -17,7 +20,6 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -110,13 +112,10 @@ void logWithExtras() { .hasSeverity(Severity.INFO) .hasSeverityText("INFO") .hasAttributesSatisfyingExactly( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - IllegalStateException.class.getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, "Error!"), + equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), + equalTo(EXCEPTION_MESSAGE, "Error!"), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, - stackTrace -> stackTrace.contains("logWithExtras")), + EXCEPTION_STACKTRACE, stackTrace -> stackTrace.contains("logWithExtras")), equalTo( CodeIncubatingAttributes.CODE_FILEPATH, AbstractOpenTelemetryAppenderTest.class.getSimpleName() + ".java"), diff --git a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java index bda0b04ae63c..45114ee03084 100644 --- a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java +++ b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java @@ -8,6 +8,14 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_MONGODB_COLLECTION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; @@ -18,8 +26,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.Socket; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; @@ -503,7 +509,7 @@ protected String createCollectionName() { } @SuppressWarnings("deprecation") - // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + // TODO DB_CONNECTION_STRING deprecation void mongoSpan( SpanDataAssert span, String operation, @@ -519,17 +525,17 @@ void mongoSpan( } span.hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), satisfies( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, val -> val.satisfies( statement -> assertThat(statements).contains(statement.replaceAll(" ", "")))), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "mongodb"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "mongodb://localhost:" + port), - equalTo(DbIncubatingAttributes.DB_NAME, dbName), - equalTo(DbIncubatingAttributes.DB_OPERATION, operation), - equalTo(DbIncubatingAttributes.DB_MONGODB_COLLECTION, collection)); + equalTo(DB_SYSTEM, "mongodb"), + equalTo(DB_CONNECTION_STRING, "mongodb://localhost:" + port), + equalTo(DB_NAME, dbName), + equalTo(DB_OPERATION, operation), + equalTo(DB_MONGODB_COLLECTION, collection)); } } diff --git a/instrumentation/netty/netty-3.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/Netty38ClientTest.java b/instrumentation/netty/netty-3.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/Netty38ClientTest.java index 30cfa49d7377..6b8d10f1309d 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/Netty38ClientTest.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/Netty38ClientTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.netty.v3_8.client; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static java.util.Collections.emptySet; import com.ning.http.client.AsyncCompletionHandler; @@ -21,7 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.ServerAttributes; import java.lang.reflect.Method; import java.net.ConnectException; import java.net.URI; @@ -170,8 +171,8 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { } Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; }); } diff --git a/instrumentation/netty/netty-3.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/Netty38ServerTest.java b/instrumentation/netty/netty-3.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/Netty38ServerTest.java index a1809bc80c69..9569d178c182 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/Netty38ServerTest.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/Netty38ServerTest.java @@ -14,6 +14,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.forPath; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.CONTENT_LENGTH; import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.CONTENT_TYPE; import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.LOCATION; @@ -25,7 +26,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; -import io.opentelemetry.semconv.HttpAttributes; import java.net.InetSocketAddress; import java.net.URI; import java.util.HashSet; @@ -91,7 +91,7 @@ protected void configure(HttpServerTestOptions options) { serverEndpoint -> { Set> attributes = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(HttpAttributes.HTTP_ROUTE); + attributes.remove(HTTP_ROUTE); return attributes; }); diff --git a/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ClientSslTest.java b/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ClientSslTest.java index 5269eb128e5e..0b197bc2f639 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ClientSslTest.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ClientSslTest.java @@ -9,6 +9,12 @@ import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.api.trace.SpanKind.SERVER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TRANSPORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.catchThrowable; import io.netty.bootstrap.Bootstrap; @@ -30,8 +36,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestServer; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.Arrays; import java.util.Collections; @@ -90,12 +94,12 @@ public void shouldFailSslHandshake() { span -> { span.hasName("CONNECT").hasKind(INTERNAL).hasParent(trace.getSpan(0)); span.hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")); + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")); }, span -> { span.hasName("SSL handshake") @@ -103,10 +107,10 @@ public void shouldFailSslHandshake() { .hasParent(trace.getSpan(0)) .hasStatus(StatusData.error()); span.hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")); + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")); })); } @@ -182,20 +186,20 @@ public void shouldSuccessfullyEstablishSslHandshake() throws Exception { span -> { span.hasName("CONNECT").hasKind(INTERNAL).hasParent(trace.getSpan(0)); span.hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")); + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")); }, span -> { span.hasName("SSL handshake").hasKind(INTERNAL).hasParent(trace.getSpan(0)); span.hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")); + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")); }, span -> { span.hasName("GET").hasKind(CLIENT).hasParent(trace.getSpan(0)); diff --git a/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ClientTest.java b/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ClientTest.java index 2bdc6fc32d88..55de8c16fc52 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ClientTest.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ClientTest.java @@ -5,6 +5,9 @@ package io.opentelemetry.javaagent.instrumentation.netty.v4_0.client; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; + import io.netty.bootstrap.Bootstrap; import io.netty.buffer.Unpooled; import io.netty.channel.Channel; @@ -27,7 +30,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.Collections; import java.util.HashSet; @@ -174,8 +176,8 @@ private static Set> httpAttributes(URI uri) { return Collections.emptySet(); } Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; } } diff --git a/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ConnectionSpanTest.java b/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ConnectionSpanTest.java index 45c36c980f2f..b049e177db47 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ConnectionSpanTest.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/Netty40ConnectionSpanTest.java @@ -10,6 +10,12 @@ import static io.opentelemetry.api.trace.SpanKind.SERVER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TRANSPORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -31,8 +37,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestServer; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.HashMap; import java.util.Map; @@ -102,12 +106,12 @@ void successfulRequest() throws Exception { span -> { span.hasName("CONNECT").hasKind(INTERNAL).hasParent(trace.getSpan(0)); span.hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")); + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")); }, span -> span.hasName("GET").hasKind(CLIENT).hasParent(trace.getSpan(0)), span -> @@ -130,23 +134,22 @@ void failedRequest() throws Exception { span -> span.hasName("parent").hasKind(INTERNAL).hasNoParent().hasException(thrown), span -> { span.hasName("CONNECT").hasKind(INTERNAL).hasParent(trace.getSpan(0)); - span.hasAttributesSatisfying(equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp")); + span.hasAttributesSatisfying(equalTo(NETWORK_TRANSPORT, "tcp")); satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, val -> val.satisfiesAnyOf( v -> assertThat(val).isNull(), v -> assertThat(v).isEqualTo("ipv4"))); span.hasAttributesSatisfying( - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort())); + equalTo(SERVER_ADDRESS, uri.getHost()), equalTo(SERVER_PORT, uri.getPort())); satisfies( - NetworkAttributes.NETWORK_PEER_PORT, + NETWORK_PEER_PORT, val -> val.satisfiesAnyOf( v -> assertThat(val).isNull(), v -> assertThat(v).isEqualTo(uri.getPort()))); satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, val -> val.satisfiesAnyOf( v -> assertThat(val).isNull(), diff --git a/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/Netty40ServerTest.java b/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/Netty40ServerTest.java index 17cc99260974..874c999010d6 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/Netty40ServerTest.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/Netty40ServerTest.java @@ -17,6 +17,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.QUERY_PARAM; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBuf; @@ -46,7 +47,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; -import io.opentelemetry.semconv.HttpAttributes; import java.net.URI; import java.util.HashSet; import java.util.Set; @@ -212,7 +212,7 @@ protected void configure(HttpServerTestOptions options) { serverEndpoint -> { Set> attributes = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(HttpAttributes.HTTP_ROUTE); + attributes.remove(HTTP_ROUTE); return attributes; }); diff --git a/instrumentation/netty/netty-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/Netty41ClientSslTest.java b/instrumentation/netty/netty-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/Netty41ClientSslTest.java index d19b0de2ee1a..20b0d1a59227 100644 --- a/instrumentation/netty/netty-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/Netty41ClientSslTest.java +++ b/instrumentation/netty/netty-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/Netty41ClientSslTest.java @@ -7,6 +7,12 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TRANSPORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -34,8 +40,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestServer; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.Collections; import java.util.List; @@ -138,19 +142,19 @@ public void testFailSslHandshake() throws Exception { .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort())), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort())), span -> span.hasName("CONNECT") .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")), span -> span.hasName("SSL handshake") .hasKind(SpanKind.INTERNAL) @@ -158,22 +162,22 @@ public void testFailSslHandshake() throws Exception { .hasStatus(StatusData.error()) .hasException(new SSLHandshakeException(null)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), satisfies( - ServerAttributes.SERVER_ADDRESS, + SERVER_ADDRESS, v -> v.satisfiesAnyOf( k -> assertThat(k).isNull(), k -> assertThat(k).isEqualTo(uri.getHost()))), satisfies( - ServerAttributes.SERVER_PORT, + SERVER_PORT, v -> v.satisfiesAnyOf( k -> assertThat(k).isNull(), k -> assertThat(k).isEqualTo(uri.getPort()))), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")))); + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")))); } @Test @@ -206,28 +210,28 @@ public void testSuccessSslHandshake() throws Exception { .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort())), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort())), span -> span.hasName("CONNECT") .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")), span -> span.hasName("SSL handshake") .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")), span -> span.hasName("GET").hasKind(SpanKind.CLIENT), span -> span.hasName("test-http-server").hasKind(SpanKind.SERVER))); } diff --git a/instrumentation/netty/netty-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/Netty41ConnectionSpanTest.java b/instrumentation/netty/netty-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/Netty41ConnectionSpanTest.java index 19717b671fcb..c9a9fdeec41a 100644 --- a/instrumentation/netty/netty-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/Netty41ConnectionSpanTest.java +++ b/instrumentation/netty/netty-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/Netty41ConnectionSpanTest.java @@ -7,6 +7,12 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TRANSPORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -31,8 +37,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestServer; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.HashMap; import java.util.Map; @@ -121,19 +125,19 @@ void testSuccessfulRequest() throws Exception { .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort())), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort())), span -> span.hasName("CONNECT") .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1")), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1")), span -> span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)), span -> span.hasName("test-http-server") @@ -162,8 +166,8 @@ void testFailingRequest() throws Exception { .hasKind(SpanKind.INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort())), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort())), span -> span.hasName("CONNECT") .hasKind(SpanKind.INTERNAL) @@ -171,23 +175,23 @@ void testFailingRequest() throws Exception { .hasStatus(StatusData.error()) .hasException(finalThrownException) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TRANSPORT, "tcp"), satisfies( - NetworkAttributes.NETWORK_TYPE, + NETWORK_TYPE, k -> k.satisfiesAnyOf( v -> assertThat(v).isEqualTo("ipv4"), v -> assertThat(v).isNull())), - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort()), satisfies( - NetworkAttributes.NETWORK_PEER_PORT, + NETWORK_PEER_PORT, k -> k.satisfiesAnyOf( v -> assertThat(v).isEqualTo(uri.getPort()), v -> assertThat(v).isNull())), satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, k -> k.satisfiesAnyOf( v -> assertThat(v).isEqualTo("127.0.0.1"), diff --git a/instrumentation/netty/netty-4.1/testing/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AbstractNetty41ClientTest.java b/instrumentation/netty/netty-4.1/testing/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AbstractNetty41ClientTest.java index cae60c300ecd..a1ab798ab524 100644 --- a/instrumentation/netty/netty-4.1/testing/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AbstractNetty41ClientTest.java +++ b/instrumentation/netty/netty-4.1/testing/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AbstractNetty41ClientTest.java @@ -6,6 +6,8 @@ package io.opentelemetry.instrumentation.netty.v4_1; import static io.opentelemetry.instrumentation.test.base.HttpClientTest.getPort; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import io.netty.buffer.Unpooled; import io.netty.channel.Channel; @@ -19,7 +21,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.Collections; import java.util.HashSet; @@ -122,8 +123,8 @@ private static Set> getHttpAttributes(URI uri) { return Collections.emptySet(); } Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; } diff --git a/instrumentation/netty/netty-4.1/testing/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AbstractNetty41ServerTest.java b/instrumentation/netty/netty-4.1/testing/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AbstractNetty41ServerTest.java index 6b4a81db73e3..59b7ee8448e9 100644 --- a/instrumentation/netty/netty-4.1/testing/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AbstractNetty41ServerTest.java +++ b/instrumentation/netty/netty-4.1/testing/src/main/java/io/opentelemetry/instrumentation/netty/v4_1/AbstractNetty41ServerTest.java @@ -18,6 +18,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.QUERY_PARAM; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import com.google.common.collect.Sets; import io.netty.bootstrap.ServerBootstrap; @@ -44,7 +45,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; -import io.opentelemetry.semconv.HttpAttributes; import java.net.URI; import java.util.Collections; @@ -59,9 +59,7 @@ public abstract class AbstractNetty41ServerTest extends AbstractHttpServerTest - Sets.difference( - DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HttpAttributes.HTTP_ROUTE))); + unused -> Sets.difference(DEFAULT_HTTP_ATTRIBUTES, Collections.singleton(HTTP_ROUTE))); } @Override diff --git a/instrumentation/okhttp/okhttp-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2Test.java b/instrumentation/okhttp/okhttp-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2Test.java index 2f2c56c8f1af..5272cbbbb025 100644 --- a/instrumentation/okhttp/okhttp-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2Test.java +++ b/instrumentation/okhttp/okhttp-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2Test.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.okhttp.v2_2; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; + import com.squareup.okhttp.Callback; import com.squareup.okhttp.MediaType; import com.squareup.okhttp.OkHttpClient; @@ -18,7 +20,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import java.io.IOException; import java.net.URI; import java.util.HashSet; @@ -104,7 +105,7 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { if ("http://localhost:61/".equals(uri.toString()) || "https://192.0.2.1/".equals(uri.toString()) || resolveAddress("/read-timeout").toString().equals(uri.toString())) { - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); } return attributes; }); diff --git a/instrumentation/okhttp/okhttp-3.0/testing/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/AbstractOkHttp3Test.java b/instrumentation/okhttp/okhttp-3.0/testing/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/AbstractOkHttp3Test.java index 5f051141f7f5..32afdf6501fc 100644 --- a/instrumentation/okhttp/okhttp-3.0/testing/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/AbstractOkHttp3Test.java +++ b/instrumentation/okhttp/okhttp-3.0/testing/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/AbstractOkHttp3Test.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.okhttp.v3_0; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.AttributeKey; @@ -12,7 +13,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import java.io.IOException; import java.net.URI; import java.util.Collections; @@ -124,7 +124,7 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { || "https://192.0.2.1/".equals(uri.toString()) || "http://192.0.2.1/".equals(uri.toString()) || resolveAddress("/read-timeout").toString().equals(uri.toString())) { - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); } return attributes; diff --git a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java index 1f562caafca0..7cebcbb638bf 100644 --- a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java +++ b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java @@ -4,14 +4,18 @@ */ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.io.IOException; import java.security.KeyManagementException; import java.security.KeyStoreException; @@ -97,20 +101,20 @@ void shouldGetStatusWithTraces() throws IOException { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "opensearch"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET _cluster/health")), + equalTo(DB_SYSTEM, "opensearch"), + equalTo(DB_OPERATION, "GET"), + equalTo(DB_STATEMENT, "GET _cluster/health")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L)))); + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)))); } @Test @@ -162,20 +166,20 @@ public void onFailure(Exception e) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "opensearch"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "GET"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "GET _cluster/health")), + equalTo(DB_SYSTEM, "opensearch"), + equalTo(DB_OPERATION, "GET"), + equalTo(DB_STATEMENT, "GET _cluster/health")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, httpHost.getHostName()), - equalTo(ServerAttributes.SERVER_PORT, httpHost.getPort()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, httpHost.toURI() + "/_cluster/health"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200L)), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/TracerTest.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/TracerTest.java index 404d47131fa6..e954442b338a 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/TracerTest.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/TracerTest.java @@ -13,6 +13,8 @@ import static io.opentelemetry.api.trace.StatusCode.ERROR; import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.GlobalOpenTelemetry; @@ -25,7 +27,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ExceptionAttributes; import java.io.PrintWriter; import java.io.StringWriter; import org.junit.jupiter.api.DisplayName; @@ -241,12 +242,8 @@ void captureExceptionWithAttributes() { event .hasName("exception") .hasAttributesSatisfyingExactly( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - "java.lang.IllegalStateException"), - equalTo( - ExceptionAttributes.EXCEPTION_STACKTRACE, - writer.toString()), + equalTo(EXCEPTION_TYPE, "java.lang.IllegalStateException"), + equalTo(EXCEPTION_STACKTRACE, writer.toString()), equalTo(stringKey("dog"), "bark"))))); } diff --git a/instrumentation/opentelemetry-instrumentation-api/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/instrumentationapi/ContextBridgeTest.java b/instrumentation/opentelemetry-instrumentation-api/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/instrumentationapi/ContextBridgeTest.java index 2ebea20102b6..5ec31aa5dc63 100644 --- a/instrumentation/opentelemetry-instrumentation-api/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/instrumentationapi/ContextBridgeTest.java +++ b/instrumentation/opentelemetry-instrumentation-api/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/instrumentationapi/ContextBridgeTest.java @@ -6,6 +6,9 @@ package io.opentelemetry.javaagent.instrumentation.instrumentationapi; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -20,8 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.javaagent.instrumentation.testing.AgentSpanTesting; import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.HttpAttributes; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.Test; @@ -106,9 +107,9 @@ void testHttpRouteHolder_SameSourceAsServerInstrumentationDoesNotOverrideRoute() .hasKind(SpanKind.SERVER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_ROUTE, "/test/server/*"), - equalTo(ErrorAttributes.ERROR_TYPE, "_OTHER")))); + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_ROUTE, "/test/server/*"), + equalTo(ERROR_TYPE, "_OTHER")))); } @Test @@ -127,8 +128,8 @@ void testHttpRouteHolder_SourceWithHigherOrderValueOverridesRoute() { .hasKind(SpanKind.SERVER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_ROUTE, "/test/controller/:id"), - equalTo(ErrorAttributes.ERROR_TYPE, "_OTHER")))); + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_ROUTE, "/test/controller/:id"), + equalTo(ERROR_TYPE, "_OTHER")))); } } diff --git a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/client/PlayWsClientTest.java b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/client/PlayWsClientTest.java index 191603bb435f..324aff94c794 100644 --- a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/client/PlayWsClientTest.java +++ b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/client/PlayWsClientTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.play.v2_4.client; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; + import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -12,7 +14,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import java.net.URI; import java.util.HashSet; import java.util.Map; @@ -86,7 +87,7 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { uri -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); return attributes; }); diff --git a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/server/PlayServerTest.java b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/server/PlayServerTest.java index 48a7459c12c2..b4c18d29f6f6 100644 --- a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/server/PlayServerTest.java +++ b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/server/PlayServerTest.java @@ -13,6 +13,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.QUERY_PARAM; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -22,7 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.HttpAttributes; import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -119,7 +119,7 @@ protected void configure(HttpServerTestOptions options) { serverEndpoint -> { Set> attributes = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(HttpAttributes.HTTP_ROUTE); + attributes.remove(HTTP_ROUTE); return attributes; }); diff --git a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/server/PlayServerTest.java b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/server/PlayServerTest.java index 02ddf42026fd..fe4da606af53 100644 --- a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/server/PlayServerTest.java +++ b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/server/PlayServerTest.java @@ -13,6 +13,7 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.QUERY_PARAM; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -22,7 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.HttpAttributes; import java.util.HashSet; import java.util.Set; import org.junit.jupiter.api.extension.RegisterExtension; @@ -104,7 +104,7 @@ protected void configure(HttpServerTestOptions options) { serverEndpoint -> { Set> attributes = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(HttpAttributes.HTTP_ROUTE); + attributes.remove(HTTP_ROUTE); return attributes; }); diff --git a/instrumentation/play/play-ws/play-ws-2.1/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/playws/v2_1/PlayWsClientBaseTest.java b/instrumentation/play/play-ws/play-ws-2.1/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/playws/v2_1/PlayWsClientBaseTest.java index a9288e8be04c..3b028e10beb6 100644 --- a/instrumentation/play/play-ws/play-ws-2.1/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/playws/v2_1/PlayWsClientBaseTest.java +++ b/instrumentation/play/play-ws/play-ws-2.1/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/playws/v2_1/PlayWsClientBaseTest.java @@ -5,6 +5,10 @@ package io.opentelemetry.javaagent.instrumentation.playws.v2_1; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; + import akka.actor.ActorSystem; import akka.stream.Materializer; import io.opentelemetry.api.common.AttributeKey; @@ -12,8 +16,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; @@ -78,10 +80,10 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { uri -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); if (uri.toString().endsWith("/circular-redirect")) { - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); } return attributes; }); diff --git a/instrumentation/play/play-ws/play-ws-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientBaseTest.java b/instrumentation/play/play-ws/play-ws-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientBaseTest.java index 905e2c44f9e1..58e0b81dd42f 100644 --- a/instrumentation/play/play-ws/play-ws-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientBaseTest.java +++ b/instrumentation/play/play-ws/play-ws-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientBaseTest.java @@ -5,6 +5,10 @@ package io.opentelemetry.javaagent.instrumentation.playws; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; + import akka.actor.ActorSystem; import akka.stream.ActorMaterializer; import akka.stream.ActorMaterializerSettings; @@ -13,8 +17,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; @@ -79,10 +81,10 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { uri -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); if (uri.toString().endsWith("/circular-redirect")) { - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); } return attributes; }); diff --git a/instrumentation/pulsar/pulsar-2.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/AbstractPulsarClientTest.java b/instrumentation/pulsar/pulsar-2.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/AbstractPulsarClientTest.java index 378638960c63..42ebf260705b 100644 --- a/instrumentation/pulsar/pulsar-2.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/AbstractPulsarClientTest.java +++ b/instrumentation/pulsar/pulsar-2.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/AbstractPulsarClientTest.java @@ -15,6 +15,7 @@ import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import io.opentelemetry.api.common.AttributeKey; @@ -24,7 +25,6 @@ import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; @@ -350,7 +350,7 @@ static List sendAttributes( equalTo(SERVER_ADDRESS, brokerHost), equalTo(SERVER_PORT, brokerPort), equalTo(MESSAGING_DESTINATION_NAME, destination), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_OPERATION, "publish"), equalTo(MESSAGING_MESSAGE_ID, messageId), satisfies(MESSAGING_MESSAGE_BODY_SIZE, AbstractLongAssert::isNotNegative), equalTo(MESSAGE_TYPE, "normal"))); @@ -388,7 +388,7 @@ static List receiveAttributes( equalTo(SERVER_ADDRESS, brokerHost), equalTo(SERVER_PORT, brokerPort), equalTo(MESSAGING_DESTINATION_NAME, destination), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_OPERATION, "receive"), equalTo(MESSAGING_MESSAGE_ID, messageId), satisfies(MESSAGING_MESSAGE_BODY_SIZE, AbstractLongAssert::isNotNegative))); if (testHeaders) { @@ -415,7 +415,7 @@ static List processAttributes( Arrays.asList( equalTo(MESSAGING_SYSTEM, "pulsar"), equalTo(MESSAGING_DESTINATION_NAME, destination), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_OPERATION, "process"), equalTo(MESSAGING_MESSAGE_ID, messageId), satisfies(MESSAGING_MESSAGE_BODY_SIZE, AbstractLongAssert::isNotNegative))); if (testHeaders) { diff --git a/instrumentation/r2dbc-1.0/testing/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/AbstractR2dbcStatementTest.java b/instrumentation/r2dbc-1.0/testing/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/AbstractR2dbcStatementTest.java index 465c0e40bef6..5f8a8e008113 100644 --- a/instrumentation/r2dbc-1.0/testing/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/AbstractR2dbcStatementTest.java +++ b/instrumentation/r2dbc-1.0/testing/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/AbstractR2dbcStatementTest.java @@ -124,7 +124,7 @@ void startContainer(DbSystemProps props) { } } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @ParameterizedTest(name = "{index}: {0}") @MethodSource("provideParameters") void testQueries(Parameter parameter) { diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitMqTest.java b/instrumentation/rabbitmq-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitMqTest.java index 79cf7e0e72a9..85f8deafe500 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitMqTest.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitMqTest.java @@ -8,6 +8,16 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -29,8 +39,6 @@ import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ExceptionAttributes; -import io.opentelemetry.semconv.NetworkAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.io.FileNotFoundException; import java.io.IOException; @@ -755,9 +763,7 @@ private static void verifySpan( attrs.get(AttributeKey.longKey("rabbitmq.delivery_mode")); assertTrue(deliveryMode == null || deliveryMode == 2); - assertNotNull( - attrs.get( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE)); + assertNotNull(attrs.get(MESSAGING_MESSAGE_BODY_SIZE)); }); }); break; @@ -777,7 +783,7 @@ private static void verifySpan( || queue.equals("some-routing-queue") || queue.startsWith("amq.gen-")); - attrs.get(MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE); + attrs.get(MESSAGING_MESSAGE_BODY_SIZE); }); }); break; @@ -788,7 +794,7 @@ private static void verifySpan( assertThat(attributes) .satisfies( attrs -> { - attrs.get(MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE); + attrs.get(MESSAGING_MESSAGE_BODY_SIZE); }); }); break; @@ -819,14 +825,13 @@ private static void verifySpan( @SuppressWarnings("deprecation") // using deprecated semconv private static void verifyMessagingAttributes( SpanDataAssert span, String exchange, String routingKey, String operation) { - span.hasAttribute(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rabbitmq") + span.hasAttribute(MESSAGING_SYSTEM, "rabbitmq") .hasAttributesSatisfying( attributes -> { assertThat(attributes) .satisfies( attrs -> { - String destinationName = - attrs.get(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME); + String destinationName = attrs.get(MESSAGING_DESTINATION_NAME); assertTrue(destinationName == null || destinationName.equals(exchange)); String routingKeyAttr = attrs.get( @@ -840,7 +845,7 @@ private static void verifyMessagingAttributes( }); if (operation != null && !operation.equals("publish")) { - span.hasAttribute(MessagingIncubatingAttributes.MESSAGING_OPERATION, operation); + span.hasAttribute(MESSAGING_OPERATION, operation); } } @@ -870,13 +875,13 @@ private static void verifyNetAttributes(SpanDataAssert span) { assertThat(attributes) .satisfies( attrs -> { - String peerAddr = attrs.get(NetworkAttributes.NETWORK_PEER_ADDRESS); + String peerAddr = attrs.get(NETWORK_PEER_ADDRESS); assertThat(peerAddr).isIn(rabbitMqIp, null); - String networkType = attrs.get(NetworkAttributes.NETWORK_TYPE); + String networkType = attrs.get(NETWORK_TYPE); assertThat(networkType).isIn("ipv4", "ipv6", null); - assertNotNull(attrs.get(NetworkAttributes.NETWORK_PEER_PORT)); + assertNotNull(attrs.get(NETWORK_PEER_PORT)); }); }); } @@ -888,11 +893,9 @@ private static void verifyException(SpanDataAssert span, Throwable exception, St assertThat(events.get(0)) .hasName("exception") .hasAttributesSatisfying( - equalTo(ExceptionAttributes.EXCEPTION_TYPE, exception.getClass().getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, errorMsg), - satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, - val -> val.isInstanceOf(String.class))); + equalTo(EXCEPTION_TYPE, exception.getClass().getName()), + equalTo(EXCEPTION_MESSAGE, errorMsg), + satisfies(EXCEPTION_STACKTRACE, val -> val.isInstanceOf(String.class))); }); } diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/ReactorRabbitMqTest.java b/instrumentation/rabbitmq-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/ReactorRabbitMqTest.java index cf52b5e3a84b..316f9cb23172 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/ReactorRabbitMqTest.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/ReactorRabbitMqTest.java @@ -6,14 +6,16 @@ package io.opentelemetry.javaagent.instrumentation.rabbitmq; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.junit.jupiter.api.Assertions.assertNotNull; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -43,23 +45,20 @@ void testShouldNotFailDeclaringExchange() { span -> { span.hasName("exchange.declare") .hasKind(SpanKind.CLIENT) - .hasAttribute(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rabbitmq") + .hasAttribute(MESSAGING_SYSTEM, "rabbitmq") .hasAttribute(AttributeKey.stringKey("rabbitmq.command"), "exchange.declare") .hasAttributesSatisfying( attributes -> assertThat(attributes) .satisfies( attrs -> { - String peerAddr = - attrs.get(NetworkAttributes.NETWORK_PEER_ADDRESS); + String peerAddr = attrs.get(NETWORK_PEER_ADDRESS); assertThat(peerAddr).isIn(rabbitMqIp, null); - String networkType = - attrs.get(NetworkAttributes.NETWORK_TYPE); + String networkType = attrs.get(NETWORK_TYPE); assertThat(networkType).isIn("ipv4", "ipv6", null); - assertNotNull( - attrs.get(NetworkAttributes.NETWORK_PEER_PORT)); + assertNotNull(attrs.get(NETWORK_PEER_PORT)); })); })); } diff --git a/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackForkedHttpClientTest.java b/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackForkedHttpClientTest.java index c5e646532ea0..bb5e2be158d7 100644 --- a/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackForkedHttpClientTest.java +++ b/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackForkedHttpClientTest.java @@ -5,11 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.ratpack; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; + import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.ratpack.client.AbstractRatpackForkedHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.HashSet; import java.util.Set; @@ -24,8 +26,8 @@ class RatpackForkedHttpClientTest extends AbstractRatpackForkedHttpClientTest { protected Set> computeHttpAttributes(URI uri) { Set> attributes = new HashSet<>(super.computeHttpAttributes(uri)); // underlying netty instrumentation does not provide these - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; } } diff --git a/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackHttpClientTest.java b/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackHttpClientTest.java index c8481f24f7e3..972b2f6676fe 100644 --- a/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackHttpClientTest.java +++ b/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackHttpClientTest.java @@ -5,11 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.ratpack; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; + import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.ratpack.client.AbstractRatpackHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.HashSet; import java.util.Set; @@ -24,8 +26,8 @@ class RatpackHttpClientTest extends AbstractRatpackHttpClientTest { protected Set> computeHttpAttributes(URI uri) { Set> attributes = new HashSet<>(super.computeHttpAttributes(uri)); // underlying netty instrumentation does not provide these - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; } } diff --git a/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackPooledHttpClientTest.java b/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackPooledHttpClientTest.java index bfc27b42eb0f..6a5c668b7037 100644 --- a/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackPooledHttpClientTest.java +++ b/instrumentation/ratpack/ratpack-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackPooledHttpClientTest.java @@ -5,11 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.ratpack; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; + import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.ratpack.client.AbstractRatpackPooledHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.HashSet; import java.util.Set; @@ -24,8 +26,8 @@ class RatpackPooledHttpClientTest extends AbstractRatpackPooledHttpClientTest { protected Set> computeHttpAttributes(URI uri) { Set> attributes = new HashSet<>(super.computeHttpAttributes(uri)); // underlying netty instrumentation does not provide these - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; } } diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/test/java/io/opentelemetry/instrumentation/ratpack/v1_7/AbstractRatpackHttpClientTest.java b/instrumentation/ratpack/ratpack-1.7/library/src/test/java/io/opentelemetry/instrumentation/ratpack/v1_7/AbstractRatpackHttpClientTest.java index affbe4197c3b..d13cbcc65932 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/test/java/io/opentelemetry/instrumentation/ratpack/v1_7/AbstractRatpackHttpClientTest.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/test/java/io/opentelemetry/instrumentation/ratpack/v1_7/AbstractRatpackHttpClientTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.instrumentation.ratpack.v1_7; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; + import com.google.common.collect.ImmutableList; import io.netty.channel.ConnectTimeoutException; import io.opentelemetry.api.common.AttributeKey; @@ -12,7 +14,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import java.net.URI; import java.time.Duration; import java.util.HashSet; @@ -158,7 +159,7 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { protected Set> getHttpAttributes(URI uri) { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); return attributes; } } diff --git a/instrumentation/reactor/reactor-kafka-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/kafka/v1_0/AbstractReactorKafkaTest.java b/instrumentation/reactor/reactor-kafka-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/kafka/v1_0/AbstractReactorKafkaTest.java index 246fdaae49dd..e73f8d8d273f 100644 --- a/instrumentation/reactor/reactor-kafka-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/kafka/v1_0/AbstractReactorKafkaTest.java +++ b/instrumentation/reactor/reactor-kafka-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/kafka/v1_0/AbstractReactorKafkaTest.java @@ -9,6 +9,15 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanKind; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static java.util.Arrays.asList; import static java.util.Collections.singleton; @@ -20,7 +29,6 @@ import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.lang.reflect.InvocationTargetException; import java.nio.charset.StandardCharsets; import java.time.Duration; @@ -181,22 +189,17 @@ protected static List sendAttributes(ProducerRecord assertions = new ArrayList<>( asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, record.topic()), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, record.topic()), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( AttributeKey.stringKey("messaging.client_id"), stringAssert -> stringAssert.startsWith("producer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative))); + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative))); String messageKey = record.key(); if (messageKey != null) { - assertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); + assertions.add(equalTo(MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); } return assertions; } @@ -206,15 +209,15 @@ protected static List receiveAttributes(String topic) { ArrayList assertions = new ArrayList<>( asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, topic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, topic), + equalTo(MESSAGING_OPERATION, "receive"), satisfies( AttributeKey.stringKey("messaging.client_id"), stringAssert -> stringAssert.startsWith("consumer")), - equalTo(MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1))); + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1))); if (Boolean.getBoolean("hasConsumerGroup")) { - assertions.add(equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test")); } return assertions; } @@ -225,20 +228,16 @@ protected static List processAttributes( List assertions = new ArrayList<>( asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, record.topic()), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, record.topic()), + equalTo(MESSAGING_OPERATION, "process"), satisfies( AttributeKey.stringKey("messaging.client_id"), stringAssert -> stringAssert.startsWith("consumer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative))); + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative))); if (Boolean.getBoolean("hasConsumerGroup")) { - assertions.add(equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test")); } if (Boolean.getBoolean("otel.instrumentation.kafka.experimental-span-attributes")) { assertions.add( @@ -246,15 +245,13 @@ protected static List processAttributes( } String messageKey = record.key(); if (messageKey != null) { - assertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); + assertions.add(equalTo(MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); } String messageValue = record.value(); if (messageValue != null) { assertions.add( equalTo( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - messageValue.getBytes(StandardCharsets.UTF_8).length)); + MESSAGING_MESSAGE_BODY_SIZE, messageValue.getBytes(StandardCharsets.UTF_8).length)); } return assertions; } diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-0.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/AbstractReactorNettyHttpClientTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-0.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/AbstractReactorNettyHttpClientTest.java index bbaf5a20ed73..1285a1c70b59 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-0.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/AbstractReactorNettyHttpClientTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-0.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/AbstractReactorNettyHttpClientTest.java @@ -8,6 +8,8 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.api.trace.SpanKind.SERVER; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static java.util.Collections.emptySet; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -23,7 +25,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ServerAttributes; import java.net.URI; import java.util.HashSet; import java.util.Map; @@ -126,8 +127,8 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; }); } diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-0.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/ReactorNettyConnectionSpanTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-0.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/ReactorNettyConnectionSpanTest.java index 4a1bf05b125a..d6789865c1ee 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-0.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/ReactorNettyConnectionSpanTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-0.9/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/ReactorNettyConnectionSpanTest.java @@ -10,6 +10,12 @@ import static io.opentelemetry.api.trace.SpanKind.SERVER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TRANSPORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -18,8 +24,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestServer; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import org.assertj.core.api.AbstractLongAssert; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; @@ -77,21 +81,19 @@ void testSuccessfulRequest() { .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpPort())), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpPort())), span -> span.hasName("CONNECT") .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)), span -> span.hasName("GET").hasKind(CLIENT).hasParent(trace.getSpan(0)), span -> span.hasName("test-http-server").hasKind(SERVER).hasParent(trace.getSpan(3)))); @@ -137,8 +139,8 @@ void testFailingRequest() { .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, PortUtils.UNUSABLE_PORT)), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, PortUtils.UNUSABLE_PORT)), span -> span.hasName("CONNECT") .hasKind(INTERNAL) @@ -146,16 +148,13 @@ void testFailingRequest() { .hasStatus(StatusData.error()) .hasException(connectException) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - satisfies( - NetworkAttributes.NETWORK_TYPE, val -> val.isIn(null, "ipv4")), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, PortUtils.UNUSABLE_PORT), - satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, - val -> val.isIn(null, "127.0.0.1")), + equalTo(NETWORK_TRANSPORT, "tcp"), + satisfies(NETWORK_TYPE, val -> val.isIn(null, "ipv4")), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, PortUtils.UNUSABLE_PORT), + satisfies(NETWORK_PEER_ADDRESS, val -> val.isIn(null, "127.0.0.1")), satisfies( - NetworkAttributes.NETWORK_PEER_PORT, + NETWORK_PEER_PORT, val -> val.isIn(null, (long) PortUtils.UNUSABLE_PORT))))); } } diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/AbstractReactorNettyHttpClientTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/AbstractReactorNettyHttpClientTest.java index 9b2e4a5c67f5..eeaf01d24c6c 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/AbstractReactorNettyHttpClientTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/AbstractReactorNettyHttpClientTest.java @@ -10,6 +10,12 @@ import static io.opentelemetry.api.trace.SpanKind.SERVER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static org.assertj.core.api.Assertions.catchThrowable; import io.netty.handler.codec.http.HttpMethod; @@ -26,11 +32,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import java.net.InetSocketAddress; import java.net.URI; import java.time.Duration; @@ -136,13 +137,13 @@ protected Set> getHttpAttributes(URI uri) { // unopened port or non routable address if ("http://localhost:61/".equals(uri.toString()) || "https://192.0.2.1/".equals(uri.toString())) { - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); } if (uri.toString().contains("/read-timeout")) { - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(NETWORK_PROTOCOL_VERSION); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); } return attributes; } @@ -310,11 +311,11 @@ void shouldEndSpanOnMonoTimeout() { .hasKind(CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, uri.toString()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(ErrorAttributes.ERROR_TYPE, "cancelled")), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, uri.toString()), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(ERROR_TYPE, "cancelled")), span -> span.hasName("test-http-server") .hasKind(SpanKind.SERVER) diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyBaseUrlOnlyTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyBaseUrlOnlyTest.java index cced686ae905..d3585128b12c 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyBaseUrlOnlyTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyBaseUrlOnlyTest.java @@ -11,6 +11,14 @@ import static io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0.AbstractReactorNettyHttpClientTest.USER_AGENT; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.GlobalOpenTelemetry; @@ -19,10 +27,6 @@ import io.opentelemetry.instrumentation.test.server.http.RequestContextGetter; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import io.opentelemetry.testing.internal.armeria.common.HttpData; import io.opentelemetry.testing.internal.armeria.common.HttpResponse; import io.opentelemetry.testing.internal.armeria.common.HttpStatus; @@ -111,16 +115,14 @@ void testSuccessfulRequest() { .hasKind(CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, uri + "/"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, uri + "/"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)), span -> span.hasName("test-http-server").hasKind(SERVER).hasParent(trace.getSpan(1)))); } diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.java index 0d89311e213e..1083e860b29a 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.java @@ -12,6 +12,20 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TRANSPORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static org.assertj.core.api.Assertions.catchThrowable; import io.netty.handler.ssl.SslContextBuilder; @@ -20,12 +34,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestServer; import io.opentelemetry.sdk.trace.data.EventData; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.ExceptionAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import java.util.List; import javax.annotation.Nullable; import javax.net.ssl.SSLException; @@ -94,33 +102,29 @@ void shouldFailSslHandshake() throws SSLException { // message .hasEventsSatisfying(ReactorNettyClientSslTest::isSslHandshakeException) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, uri), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpsPort()), - equalTo( - ErrorAttributes.ERROR_TYPE, - SSLHandshakeException.class.getCanonicalName())), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, uri), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpsPort()), + equalTo(ERROR_TYPE, SSLHandshakeException.class.getCanonicalName())), span -> span.hasName("RESOLVE") .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpsPort())), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpsPort())), span -> span.hasName("CONNECT") .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpsPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpsPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)), span -> span.hasName("SSL handshake") .hasKind(INTERNAL) @@ -130,10 +134,10 @@ void shouldFailSslHandshake() throws SSLException { // message .hasEventsSatisfying(ReactorNettyClientSslTest::isSslHandshakeException) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, server.httpsPort())))); + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PEER_PORT, server.httpsPort())))); } @Test @@ -163,45 +167,41 @@ void shouldSuccessfullyEstablishSslHandshake() throws SSLException { .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpsPort())), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpsPort())), span -> span.hasName("CONNECT") .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpsPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpsPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)), span -> span.hasName("SSL handshake") .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, server.httpsPort())), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PEER_PORT, server.httpsPort())), span -> span.hasName("GET") .hasKind(CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, uri), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpsPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, uri), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpsPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)), span -> span.hasName("test-http-server").hasKind(SERVER).hasParent(trace.getSpan(4)))); } @@ -227,10 +227,8 @@ private static void isSslHandshakeException(List events) { event -> assertThat(event) .hasAttributesSatisfyingExactly( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - SSLHandshakeException.class.getCanonicalName()), - satisfies(ExceptionAttributes.EXCEPTION_MESSAGE, s -> s.isNotEmpty()), - satisfies(ExceptionAttributes.EXCEPTION_STACKTRACE, s -> s.isNotEmpty()))); + equalTo(EXCEPTION_TYPE, SSLHandshakeException.class.getCanonicalName()), + satisfies(EXCEPTION_MESSAGE, s -> s.isNotEmpty()), + satisfies(EXCEPTION_STACKTRACE, s -> s.isNotEmpty()))); } } diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.java index ce040d4b50ee..84c9e16ad67e 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.java @@ -11,6 +11,17 @@ import static io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0.AbstractReactorNettyHttpClientTest.USER_AGENT; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TRANSPORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -19,11 +30,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestServer; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import org.assertj.core.api.AbstractLongAssert; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; @@ -82,36 +88,32 @@ void testSuccessfulRequest() { .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpPort())), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpPort())), span -> span.hasName("CONNECT") .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TRANSPORT, "tcp"), - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)), + equalTo(NETWORK_TRANSPORT, "tcp"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)), span -> span.hasName("GET") .hasKind(CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, uri), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, server.httpPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative)), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, uri), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, server.httpPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)), span -> span.hasName("test-http-server").hasKind(SERVER).hasParent(trace.getSpan(3)))); } @@ -158,19 +160,18 @@ void testFailingRequest() { .hasStatus(StatusData.error()) .hasException(connectException) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, uri), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, PortUtils.UNUSABLE_PORT), - equalTo( - ErrorAttributes.ERROR_TYPE, connectException.getClass().getName())), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, uri), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, PortUtils.UNUSABLE_PORT), + equalTo(ERROR_TYPE, connectException.getClass().getName())), span -> span.hasName("RESOLVE") .hasKind(INTERNAL) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, PortUtils.UNUSABLE_PORT)), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, PortUtils.UNUSABLE_PORT)), span -> span.hasName("CONNECT") .hasKind(INTERNAL) @@ -178,10 +179,8 @@ void testFailingRequest() { .hasStatus(StatusData.error()) .hasException(connectException) .hasAttributesSatisfyingExactly( - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, PortUtils.UNUSABLE_PORT), - satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, - val -> val.isIn(null, "127.0.0.1"))))); + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, PortUtils.UNUSABLE_PORT), + satisfies(NETWORK_PEER_ADDRESS, val -> val.isIn(null, "127.0.0.1"))))); } } diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientTest.java index e4b3a090572c..ea6e5244854c 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientTest.java @@ -5,10 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; + import io.netty.channel.ChannelOption; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.ServerAttributes; import io.opentelemetry.testing.internal.armeria.common.HttpHeaderNames; import java.net.URI; import java.util.HashSet; @@ -61,8 +63,8 @@ protected Set> getHttpAttributes(URI uri) { // net.peer.sock.* attributes Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; } return super.getHttpAttributes(uri); diff --git a/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonAsyncClientTest.java b/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonAsyncClientTest.java index 2a0936aee1de..d73414841ca0 100644 --- a/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonAsyncClientTest.java +++ b/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonAsyncClientTest.java @@ -10,6 +10,12 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanKind; import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.Span; @@ -17,8 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; @@ -117,18 +121,13 @@ void futureSet() throws ExecutionException, InterruptedException, TimeoutExcepti span.hasName("SET") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), - "SET foo ?"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "SET")))); + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SET foo ?"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SET")))); } @Test @@ -156,18 +155,13 @@ void futureWhenComplete() throws ExecutionException, InterruptedException, Timeo span.hasName("SADD") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), - "SADD set1 ?"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "SADD")) + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SADD set1 ?"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SADD")) .hasParent(trace.getSpan(0)), span -> span.hasName("callback").hasKind(INTERNAL).hasParent(trace.getSpan(0)))); } @@ -236,48 +230,36 @@ void atomicBatchCommand() throws ExecutionException, InterruptedException, Timeo span.hasName("DB Query") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "MULTI;SET batch1 ?")) .hasParent(trace.getSpan(0)), span -> span.hasName("SET") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), - "SET batch2 ?"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "SET")) + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SET batch2 ?"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SET")) .hasParent(trace.getSpan(0)), span -> span.hasName("EXEC") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), - "EXEC"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "EXEC")) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "EXEC"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EXEC")) .hasParent(trace.getSpan(0)), span -> span.hasName("callback").hasKind(INTERNAL).hasParent(trace.getSpan(0)))); } diff --git a/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonClientTest.java b/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonClientTest.java index 0c9278a6cde2..b0cf6e659bf7 100644 --- a/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonClientTest.java +++ b/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonClientTest.java @@ -11,6 +11,12 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; @@ -18,8 +24,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; import io.opentelemetry.sdk.testing.assertj.TraceAssert; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; import java.net.UnknownHostException; @@ -120,36 +124,25 @@ void stringCommand() { span.hasName("SET") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), - "SET foo ?"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "SET"))), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SET foo ?"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SET"))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("GET") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), - "GET foo"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "GET")))); + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "GET foo"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "GET")))); } @Test @@ -170,13 +163,12 @@ void batchCommand() span.hasName("DB Query") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SET batch1 ?;SET batch2 ?")))); } @@ -213,48 +205,36 @@ void atomicBatchCommand() { span.hasName("DB Query") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "MULTI;SET batch1 ?")) .hasParent(trace.getSpan(0)), span -> span.hasName("SET") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), - "SET batch2 ?"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "SET")) + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SET batch2 ?"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SET")) .hasParent(trace.getSpan(0)), span -> span.hasName("EXEC") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), - "EXEC"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "EXEC")) + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "EXEC"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EXEC")) .hasParent(trace.getSpan(0)))); } @@ -271,18 +251,14 @@ void listCommand() { span.hasName("RPUSH") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "RPUSH list1 ?"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "RPUSH")) + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "RPUSH")) .hasNoParent())); } @@ -302,36 +278,28 @@ void hashCommand() { span.hasName("EVAL") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), String.format("EVAL %s 1 map1 ? ?", script)), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "EVAL"))), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EVAL"))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("HGET") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "HGET map1 key1"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "HGET")))); + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "HGET")))); } @Test @@ -347,18 +315,13 @@ void setCommand() { span.hasName("SADD") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), - "SADD set1 ?"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "SADD")))); + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SADD set1 ?"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SADD")))); } @Test @@ -381,18 +344,14 @@ void sortedSetCommand() span.hasName("ZADD") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "ZADD sort_set1 ? ? ? ? ? ?"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "ZADD")))); + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "ZADD")))); } private static void invokeAddAll(RScoredSortedSet object, Map arg) @@ -413,18 +372,14 @@ void atomicLongCommand() { span.hasName("INCR") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "INCR AtomicLong"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "INCR")))); + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "INCR")))); } @Test @@ -445,17 +400,13 @@ void lockCommand() { span.hasName("EVAL") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "EVAL"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EVAL"), satisfies( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), stringAssert -> stringAssert.startsWith("EVAL"))))); traceAsserts.add( trace -> @@ -464,17 +415,13 @@ void lockCommand() { span.hasName("EVAL") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "EVAL"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EVAL"), satisfies( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), stringAssert -> stringAssert.startsWith("EVAL"))))); if (lockHas3Traces()) { traceAsserts.add( @@ -484,17 +431,13 @@ void lockCommand() { span.hasName("DEL") .hasKind(CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, (long) port), - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_OPERATION), - "DEL"), + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + equalTo(NETWORK_PEER_PORT, (long) port), + equalTo(DB_SYSTEM, "redis"), + equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "DEL"), satisfies( - SemconvStabilityUtil.getAttributeKey( - DbIncubatingAttributes.DB_STATEMENT), + SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), stringAssert -> stringAssert.startsWith("DEL"))))); } diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java index b44851bfaa13..a2d785bd6eb8 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java @@ -6,11 +6,11 @@ package io.opentelemetry.instrumentation.resources; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; +import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_NAME; import static org.junit.jupiter.params.provider.Arguments.arguments; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.ServiceAttributes; import java.nio.file.Path; import java.nio.file.Paths; import java.util.function.Function; @@ -68,9 +68,7 @@ void createResource_processHandleJar() { Resource resource = serviceNameProvider.createResource(config); - assertThat(resource.getAttributes()) - .hasSize(1) - .containsEntry(ServiceAttributes.SERVICE_NAME, "my-service"); + assertThat(resource.getAttributes()).hasSize(1).containsEntry(SERVICE_NAME, "my-service"); } @Test @@ -96,9 +94,7 @@ void createResource_processHandleJarWithoutExtension() { Resource resource = serviceNameProvider.createResource(config); - assertThat(resource.getAttributes()) - .hasSize(1) - .containsEntry(ServiceAttributes.SERVICE_NAME, "my-service"); + assertThat(resource.getAttributes()).hasSize(1).containsEntry(SERVICE_NAME, "my-service"); } static String[] getArgs(String jarName) { @@ -118,9 +114,7 @@ void createResource_sunCommandLine(String commandLine, Path jarPath) { Resource resource = serviceNameProvider.createResource(config); - assertThat(resource.getAttributes()) - .hasSize(1) - .containsEntry(ServiceAttributes.SERVICE_NAME, "my-service"); + assertThat(resource.getAttributes()).hasSize(1).containsEntry(SERVICE_NAME, "my-service"); } // regression test for diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ManifestResourceProviderTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ManifestResourceProviderTest.java index c617f58a6dbc..e34768d344bc 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ManifestResourceProviderTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ManifestResourceProviderTest.java @@ -5,13 +5,14 @@ package io.opentelemetry.instrumentation.resources; +import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_NAME; +import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_VERSION; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.ServiceAttributes; import java.io.InputStream; import java.util.Collection; import java.util.Collections; @@ -68,7 +69,7 @@ Collection createResource() { null, "0.0.1-SNAPSHOT", openClasspathResource("MANIFEST.MF"), - Resource.create(Attributes.of(ServiceAttributes.SERVICE_NAME, "old")))) + Resource.create(Attributes.of(SERVICE_NAME, "old")))) .map( t -> DynamicTest.dynamicTest( @@ -92,9 +93,8 @@ Collection createResource() { provider.shouldApply(config, t.existing); Resource resource = provider.createResource(config); - assertThat(resource.getAttribute(ServiceAttributes.SERVICE_NAME)) - .isEqualTo(t.expectedName); - assertThat(resource.getAttribute(ServiceAttributes.SERVICE_VERSION)) + assertThat(resource.getAttribute(SERVICE_NAME)).isEqualTo(t.expectedName); + assertThat(resource.getAttribute(SERVICE_VERSION)) .isEqualTo(t.expectedVersion); })) .collect(Collectors.toList()); diff --git a/instrumentation/rmi/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rmi/RmiTest.java b/instrumentation/rmi/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rmi/RmiTest.java index f604e9df0382..8563a15d2b4b 100644 --- a/instrumentation/rmi/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rmi/RmiTest.java +++ b/instrumentation/rmi/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rmi/RmiTest.java @@ -8,6 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import static org.assertj.core.api.Assertions.catchThrowableOfType; import io.opentelemetry.api.trace.SpanId; @@ -15,7 +18,6 @@ import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; @@ -149,13 +151,11 @@ void serviceThrownException() throws Exception { .hasName("exception") .hasAttributesSatisfyingExactly( equalTo( - ExceptionAttributes.EXCEPTION_TYPE, + EXCEPTION_TYPE, thrown.getClass().getCanonicalName()), - equalTo( - ExceptionAttributes.EXCEPTION_MESSAGE, - thrown.getMessage()), + equalTo(EXCEPTION_MESSAGE, thrown.getMessage()), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, + EXCEPTION_STACKTRACE, AbstractAssert::isNotNull))) .hasAttributesSatisfyingExactly( equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "java_rmi"), @@ -171,13 +171,11 @@ void serviceThrownException() throws Exception { .hasName("exception") .hasAttributesSatisfyingExactly( equalTo( - ExceptionAttributes.EXCEPTION_TYPE, + EXCEPTION_TYPE, thrown.getClass().getCanonicalName()), - equalTo( - ExceptionAttributes.EXCEPTION_MESSAGE, - thrown.getMessage()), + equalTo(EXCEPTION_MESSAGE, thrown.getMessage()), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, + EXCEPTION_STACKTRACE, AbstractAssert::isNotNull))) .hasAttributesSatisfyingExactly( equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "java_rmi"), diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/AbstractRocketMqClientTest.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/AbstractRocketMqClientTest.java index a2307762cca2..8530f54adba7 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/AbstractRocketMqClientTest.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/AbstractRocketMqClientTest.java @@ -7,6 +7,12 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -17,7 +23,6 @@ import io.opentelemetry.instrumentation.rocketmqclient.v4_8.base.BaseConf; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.trace.data.LinkData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; @@ -139,18 +144,12 @@ public void onException(Throwable throwable) { span.hasName(sharedTopic + " publish") .hasKind(SpanKind.PRODUCER) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - sharedTopic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_DESTINATION_NAME, sharedTopic), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, - "TagA"), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, "TagA"), satisfies( AttributeKey.stringKey("messaging.rocketmq.broker_address"), val -> val.isInstanceOf(String.class)), @@ -162,21 +161,15 @@ public void onException(Throwable throwable) { .hasKind(SpanKind.CONSUMER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - sharedTopic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_DESTINATION_NAME, sharedTopic), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, + MESSAGING_MESSAGE_BODY_SIZE, val -> val.isInstanceOf(Long.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, - "TagA"), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, "TagA"), satisfies( AttributeKey.stringKey("messaging.rocketmq.broker_address"), val -> val.isInstanceOf(String.class)), @@ -215,18 +208,12 @@ void testRocketmqProduceAndConsume() throws Exception { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - sharedTopic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_DESTINATION_NAME, sharedTopic), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, - "TagA"), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, "TagA"), satisfies( AttributeKey.stringKey("messaging.rocketmq.broker_address"), val -> val.isInstanceOf(String.class)), @@ -238,21 +225,15 @@ void testRocketmqProduceAndConsume() throws Exception { .hasKind(SpanKind.CONSUMER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - sharedTopic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_DESTINATION_NAME, sharedTopic), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, + MESSAGING_MESSAGE_BODY_SIZE, val -> val.isInstanceOf(Long.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, - "TagA"), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, "TagA"), satisfies( AttributeKey.stringKey("messaging.rocketmq.broker_address"), val -> val.isInstanceOf(String.class)), @@ -304,14 +285,11 @@ void testRocketmqProduceAndBatchConsume() throws Exception { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - sharedTopic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_DESTINATION_NAME, sharedTopic), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), satisfies( AttributeKey.stringKey("messaging.rocketmq.broker_address"), val -> val.isInstanceOf(String.class)), @@ -333,30 +311,23 @@ void testRocketmqProduceAndBatchConsume() throws Exception { span.hasName("multiple_sources receive") .hasKind(SpanKind.CONSUMER) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive")), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_OPERATION, "receive")), span -> span.hasName(sharedTopic + " process") .hasKind(SpanKind.CONSUMER) .hasParent(trace.getSpan(0)) .hasLinksSatisfying(links(producerSpanContext.get())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - sharedTopic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_DESTINATION_NAME, sharedTopic), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, + MESSAGING_MESSAGE_BODY_SIZE, val -> val.isInstanceOf(Long.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, - "TagA"), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, "TagA"), satisfies( AttributeKey.stringKey("messaging.rocketmq.broker_address"), val -> val.isNotEmpty()), @@ -372,21 +343,15 @@ void testRocketmqProduceAndBatchConsume() throws Exception { .hasParent(trace.getSpan(0)) .hasLinksSatisfying(links(producerSpanContext.get())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - sharedTopic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_DESTINATION_NAME, sharedTopic), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, + MESSAGING_MESSAGE_BODY_SIZE, val -> val.isInstanceOf(Long.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, - "TagB"), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, "TagB"), satisfies( AttributeKey.stringKey("messaging.rocketmq.broker_address"), val -> val.isNotEmpty()), @@ -430,18 +395,12 @@ void captureMessageHeaderAsSpanAttributes() throws Exception { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - sharedTopic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_DESTINATION_NAME, sharedTopic), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, - "TagA"), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, "TagA"), satisfies( AttributeKey.stringKey("messaging.rocketmq.broker_address"), val -> val.isInstanceOf(String.class)), @@ -457,21 +416,15 @@ void captureMessageHeaderAsSpanAttributes() throws Exception { .hasKind(SpanKind.CONSUMER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rocketmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - sharedTopic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "rocketmq"), + equalTo(MESSAGING_DESTINATION_NAME, sharedTopic), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, + MESSAGING_MESSAGE_BODY_SIZE, val -> val.isInstanceOf(Long.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)), - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, - "TagA"), + MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)), + equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, "TagA"), satisfies( AttributeKey.stringKey("messaging.rocketmq.broker_address"), val -> val.isInstanceOf(String.class)), diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v5_0/AbstractRocketMqClientSuppressReceiveSpanTest.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v5_0/AbstractRocketMqClientSuppressReceiveSpanTest.java index 5f2fcb31d631..1bd7a04dfa40 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v5_0/AbstractRocketMqClientSuppressReceiveSpanTest.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v5_0/AbstractRocketMqClientSuppressReceiveSpanTest.java @@ -9,6 +9,7 @@ import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_KEYS; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TYPE; @@ -123,9 +124,7 @@ void testSendAndConsumeMessage() throws Throwable { MESSAGING_MESSAGE_ID, sendReceipt.getMessageId().toString()), equalTo(MESSAGING_DESTINATION_NAME, topic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, - "publish")), + equalTo(MESSAGING_OPERATION, "publish")), span -> span.hasKind(SpanKind.CONSUMER) .hasName(topic + " process") @@ -145,9 +144,7 @@ void testSendAndConsumeMessage() throws Throwable { MESSAGING_MESSAGE_ID, sendReceipt.getMessageId().toString()), equalTo(MESSAGING_DESTINATION_NAME, topic), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, - "process")), + equalTo(MESSAGING_OPERATION, "process")), span -> span.hasName("child") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v5_0/AbstractRocketMqClientTest.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v5_0/AbstractRocketMqClientTest.java index 1acb96f61268..541f042aecc9 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v5_0/AbstractRocketMqClientTest.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v5_0/AbstractRocketMqClientTest.java @@ -11,6 +11,8 @@ import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_CLIENT_GROUP; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_GROUP; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_KEYS; @@ -421,7 +423,7 @@ private static SpanDataAssert assertProducerSpan( equalTo(MESSAGING_SYSTEM, "rocketmq"), equalTo(MESSAGING_MESSAGE_ID, sendReceipt.getMessageId().toString()), equalTo(MESSAGING_DESTINATION_NAME, topic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"))); + equalTo(MESSAGING_OPERATION, "publish"))); attributeAssertions.addAll(Arrays.asList(extraAttributes)); return span.hasKind(SpanKind.PRODUCER) @@ -453,7 +455,7 @@ private static SpanDataAssert assertProducerSpanWithFifoMessage( equalTo(MESSAGING_SYSTEM, "rocketmq"), equalTo(MESSAGING_MESSAGE_ID, sendReceipt.getMessageId().toString()), equalTo(MESSAGING_DESTINATION_NAME, topic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"))); + equalTo(MESSAGING_OPERATION, "publish"))); attributeAssertions.addAll(Arrays.asList(extraAttributes)); return span.hasKind(SpanKind.PRODUCER) @@ -485,7 +487,7 @@ private static SpanDataAssert assertProducerSpanWithDelayMessage( equalTo(MESSAGING_SYSTEM, "rocketmq"), equalTo(MESSAGING_MESSAGE_ID, sendReceipt.getMessageId().toString()), equalTo(MESSAGING_DESTINATION_NAME, topic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"))); + equalTo(MESSAGING_OPERATION, "publish"))); attributeAssertions.addAll(Arrays.asList(extraAttributes)); return span.hasKind(SpanKind.PRODUCER) @@ -500,10 +502,10 @@ private static SpanDataAssert assertReceiveSpan( .hasName(topic + " receive") .hasStatus(StatusData.unset()) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_CLIENT_GROUP, consumerGroup), + equalTo(MESSAGING_ROCKETMQ_CLIENT_GROUP, consumerGroup), equalTo(MESSAGING_SYSTEM, "rocketmq"), equalTo(MESSAGING_DESTINATION_NAME, topic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_OPERATION, "receive"), equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1)); } @@ -520,15 +522,14 @@ private static SpanDataAssert assertProcessSpan( List attributeAssertions = new ArrayList<>( Arrays.asList( - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_CLIENT_GROUP, consumerGroup), + equalTo(MESSAGING_ROCKETMQ_CLIENT_GROUP, consumerGroup), equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, tag), equalTo(MESSAGING_ROCKETMQ_MESSAGE_KEYS, Arrays.asList(keys)), equalTo(MESSAGING_MESSAGE_BODY_SIZE, (long) body.length), equalTo(MESSAGING_SYSTEM, "rocketmq"), equalTo(MESSAGING_MESSAGE_ID, sendReceipt.getMessageId().toString()), equalTo(MESSAGING_DESTINATION_NAME, topic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"))); + equalTo(MESSAGING_OPERATION, "process"))); attributeAssertions.addAll(Arrays.asList(extraAttributes)); return span.hasKind(SpanKind.CONSUMER) @@ -553,8 +554,7 @@ private static SpanDataAssert assertProcessSpanWithFifoMessage( List attributeAssertions = new ArrayList<>( Arrays.asList( - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_CLIENT_GROUP, consumerGroup), + equalTo(MESSAGING_ROCKETMQ_CLIENT_GROUP, consumerGroup), equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, tag), equalTo(MESSAGING_ROCKETMQ_MESSAGE_KEYS, Arrays.asList(keys)), equalTo(MESSAGING_ROCKETMQ_MESSAGE_GROUP, messageGroup), @@ -562,7 +562,7 @@ private static SpanDataAssert assertProcessSpanWithFifoMessage( equalTo(MESSAGING_SYSTEM, "rocketmq"), equalTo(MESSAGING_MESSAGE_ID, sendReceipt.getMessageId().toString()), equalTo(MESSAGING_DESTINATION_NAME, topic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"))); + equalTo(MESSAGING_OPERATION, "process"))); attributeAssertions.addAll(Arrays.asList(extraAttributes)); return span.hasKind(SpanKind.CONSUMER) @@ -587,8 +587,7 @@ private static SpanDataAssert assertProcessSpanWithDelayMessage( List attributeAssertions = new ArrayList<>( Arrays.asList( - equalTo( - MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_CLIENT_GROUP, consumerGroup), + equalTo(MESSAGING_ROCKETMQ_CLIENT_GROUP, consumerGroup), equalTo(MESSAGING_ROCKETMQ_MESSAGE_TAG, tag), equalTo(MESSAGING_ROCKETMQ_MESSAGE_KEYS, Arrays.asList(keys)), equalTo(MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP, deliveryTimestamp), @@ -596,7 +595,7 @@ private static SpanDataAssert assertProcessSpanWithDelayMessage( equalTo(MESSAGING_SYSTEM, "rocketmq"), equalTo(MESSAGING_MESSAGE_ID, sendReceipt.getMessageId().toString()), equalTo(MESSAGING_DESTINATION_NAME, topic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"))); + equalTo(MESSAGING_OPERATION, "process"))); attributeAssertions.addAll(Arrays.asList(extraAttributes)); return span.hasKind(SpanKind.CONSUMER) diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java8/ThreadsStableSemconvTest.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java8/ThreadsStableSemconvTest.java index 5e2364b394f0..55fb6b35e802 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java8/ThreadsStableSemconvTest.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java8/ThreadsStableSemconvTest.java @@ -8,13 +8,14 @@ import static io.opentelemetry.instrumentation.runtimemetrics.java8.ScopeUtil.EXPECTED_SCOPE; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.JvmAttributes.JVM_THREAD_DAEMON; +import static io.opentelemetry.semconv.JvmAttributes.JVM_THREAD_STATE; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; -import io.opentelemetry.semconv.JvmAttributes; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; import org.junit.jupiter.api.Test; @@ -66,14 +67,12 @@ void registerObservers_Java8() { point .hasValue(2) .hasAttributesSatisfying( - equalTo(JvmAttributes.JVM_THREAD_DAEMON, true)), + equalTo(JVM_THREAD_DAEMON, true)), point -> point .hasValue(5) .hasAttributesSatisfying( - equalTo( - JvmAttributes.JVM_THREAD_DAEMON, - false)))))); + equalTo(JVM_THREAD_DAEMON, false)))))); } @Test @@ -111,18 +110,14 @@ void registerObservers_Java9AndNewer() { point .hasValue(1) .hasAttributesSatisfying( - equalTo(JvmAttributes.JVM_THREAD_DAEMON, false), - equalTo( - JvmAttributes.JVM_THREAD_STATE, - "runnable")), + equalTo(JVM_THREAD_DAEMON, false), + equalTo(JVM_THREAD_STATE, "runnable")), point -> point .hasValue(1) .hasAttributesSatisfying( - equalTo(JvmAttributes.JVM_THREAD_DAEMON, true), - equalTo( - JvmAttributes.JVM_THREAD_STATE, - "waiting")))))); + equalTo(JVM_THREAD_DAEMON, true), + equalTo(JVM_THREAD_STATE, "waiting")))))); } static final class ThreadInfoAnswer implements Answer { diff --git a/instrumentation/servlet/servlet-3.0/testing/src/test/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/jetty/JettyServletHandlerTest.java b/instrumentation/servlet/servlet-3.0/testing/src/test/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/jetty/JettyServletHandlerTest.java index 7c1632b100d3..529793e48da2 100644 --- a/instrumentation/servlet/servlet-3.0/testing/src/test/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/jetty/JettyServletHandlerTest.java +++ b/instrumentation/servlet/servlet-3.0/testing/src/test/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/jetty/JettyServletHandlerTest.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.servlet.v3_0.jetty; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.EXCEPTION; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.AttributeKey; @@ -18,7 +19,6 @@ import io.opentelemetry.javaagent.instrumentation.servlet.v3_0.TestServlet3; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.HttpAttributes; import java.io.IOException; import java.io.Writer; import java.util.HashSet; @@ -45,7 +45,7 @@ protected void configure(HttpServerTestOptions options) { serverEndpoint -> { Set> attributes = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(HttpAttributes.HTTP_ROUTE); + attributes.remove(HTTP_ROUTE); return attributes; }); } diff --git a/instrumentation/servlet/servlet-5.0/jetty11-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/jetty/JettyServletHandlerTest.java b/instrumentation/servlet/servlet-5.0/jetty11-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/jetty/JettyServletHandlerTest.java index 6383de5093a1..814e328a5392 100644 --- a/instrumentation/servlet/servlet-5.0/jetty11-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/jetty/JettyServletHandlerTest.java +++ b/instrumentation/servlet/servlet-5.0/jetty11-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/jetty/JettyServletHandlerTest.java @@ -5,13 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.servlet.v5_0.jetty; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; + import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; import io.opentelemetry.javaagent.instrumentation.servlet.v5_0.AbstractServlet5Test; import io.opentelemetry.javaagent.instrumentation.servlet.v5_0.TestServlet5; -import io.opentelemetry.semconv.HttpAttributes; import jakarta.servlet.Servlet; import jakarta.servlet.http.HttpServletRequest; import java.io.IOException; @@ -38,7 +39,7 @@ protected void configure(HttpServerTestOptions options) { serverEndpoint -> { Set> attributes = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(HttpAttributes.HTTP_ROUTE); + attributes.remove(HTTP_ROUTE); return attributes; }); } diff --git a/instrumentation/spark-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkJavaBasedTest.java b/instrumentation/spark-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkJavaBasedTest.java index e47834f18872..95e3a5b75e17 100644 --- a/instrumentation/spark-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkJavaBasedTest.java +++ b/instrumentation/spark-2.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkJavaBasedTest.java @@ -7,6 +7,18 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ClientAttributes.CLIENT_ADDRESS; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; +import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; @@ -14,12 +26,6 @@ import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.ClientAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import io.opentelemetry.testing.internal.armeria.client.WebClient; import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpResponse; import org.junit.jupiter.api.AfterAll; @@ -62,21 +68,17 @@ void generatesSpans() { .hasKind(SpanKind.SERVER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(UrlAttributes.URL_SCHEME, "http"), - equalTo(UrlAttributes.URL_PATH, "/param/asdf1234"), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - satisfies( - UserAgentAttributes.USER_AGENT_ORIGINAL, - val -> val.isInstanceOf(String.class)), - equalTo(HttpAttributes.HTTP_ROUTE, "/param/:param"), - equalTo(NetworkAttributes.NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(ClientAttributes.CLIENT_ADDRESS, "127.0.0.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class))))); + equalTo(URL_SCHEME, "http"), + equalTo(URL_PATH, "/param/asdf1234"), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), + equalTo(HTTP_ROUTE, "/param/:param"), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, port), + equalTo(CLIENT_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class))))); } } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/r2dbc/R2DbcInstrumentationAutoConfigurationTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/r2dbc/R2DbcInstrumentationAutoConfigurationTest.java index a0fba64cf1f6..c25aefdc0da5 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/r2dbc/R2DbcInstrumentationAutoConfigurationTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/r2dbc/R2DbcInstrumentationAutoConfigurationTest.java @@ -5,11 +5,12 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.r2dbc; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; + import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.Collections; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -51,14 +52,12 @@ void statementSanitizerEnabledByDefault() { trace.hasSpansSatisfyingExactly( span -> span.hasAttribute( - DbIncubatingAttributes.DB_STATEMENT, + DB_STATEMENT, "CREATE TABLE IF NOT EXISTS player(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(?), age INT, PRIMARY KEY (id))")), trace -> trace.hasSpansSatisfyingExactly( span -> - span.hasAttribute( - DbIncubatingAttributes.DB_STATEMENT, - "SELECT * FROM player WHERE id = ?"))); + span.hasAttribute(DB_STATEMENT, "SELECT * FROM player WHERE id = ?"))); }); } } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringResourceProviderTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringResourceProviderTest.java index 0298b26d868a..5de21d9bcc9d 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringResourceProviderTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringResourceProviderTest.java @@ -6,6 +6,8 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.internal.resources; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; +import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_NAME; +import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_VERSION; import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelResourceProperties; @@ -15,7 +17,6 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.testing.assertj.AttributesAssert; -import io.opentelemetry.semconv.ServiceAttributes; import java.util.Collections; import java.util.Properties; import org.junit.jupiter.api.DisplayName; @@ -42,8 +43,7 @@ void shouldDetermineServiceNameBySpringApplicationName() { .withPropertyValues("spring.application.name=myapp-backend") .run( context -> - assertResourceAttributes(context) - .containsEntry(ServiceAttributes.SERVICE_NAME, "myapp-backend")); + assertResourceAttributes(context).containsEntry(SERVICE_NAME, "myapp-backend")); } @Test @@ -58,8 +58,8 @@ void shouldDetermineServiceNameAndVersionBySpringApplicationVersion() { .run( context -> assertResourceAttributes(context) - .containsEntry(ServiceAttributes.SERVICE_NAME, "demo") - .containsEntry(ServiceAttributes.SERVICE_VERSION, "0.3")); + .containsEntry(SERVICE_NAME, "demo") + .containsEntry(SERVICE_VERSION, "0.3")); } private static AttributesAssert assertResourceAttributes(AssertableApplicationContext context) { diff --git a/instrumentation/spring/spring-boot-resources/javaagent/src/test/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceNameDetectorTest.java b/instrumentation/spring/spring-boot-resources/javaagent/src/test/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceNameDetectorTest.java index d8abfe890de8..d202e508abed 100644 --- a/instrumentation/spring/spring-boot-resources/javaagent/src/test/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceNameDetectorTest.java +++ b/instrumentation/spring/spring-boot-resources/javaagent/src/test/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceNameDetectorTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.spring.resources; +import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_NAME; import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Collections.singletonMap; import static org.assertj.core.api.Assertions.assertThat; @@ -13,7 +14,6 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.ServiceAttributes; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; @@ -173,8 +173,7 @@ void shouldApply() { void shouldNotApplyWhenResourceHasServiceName() { SpringBootServiceNameDetector guesser = new SpringBootServiceNameDetector(system); Resource resource = - Resource.getDefault() - .merge(Resource.create(Attributes.of(ServiceAttributes.SERVICE_NAME, "test-service"))); + Resource.getDefault().merge(Resource.create(Attributes.of(SERVICE_NAME, "test-service"))); assertThat(guesser.shouldApply(config, resource)).isFalse(); } @@ -189,12 +188,12 @@ void shouldNotApplyIfConfigHasServiceName() { void shouldNotApplyIfConfigHasServiceNameResourceAttribute() { SpringBootServiceNameDetector guesser = new SpringBootServiceNameDetector(system); when(config.getMap("otel.resource.attributes")) - .thenReturn(singletonMap(ServiceAttributes.SERVICE_NAME.getKey(), "test-service")); + .thenReturn(singletonMap(SERVICE_NAME.getKey(), "test-service")); assertThat(guesser.shouldApply(config, Resource.getDefault())).isFalse(); } private static void expectServiceName(Resource result, String expected) { - assertThat(result.getAttribute(ServiceAttributes.SERVICE_NAME)).isEqualTo(expected); + assertThat(result.getAttribute(SERVICE_NAME)).isEqualTo(expected); } private static void writeString(Path path, String value) throws Exception { diff --git a/instrumentation/spring/spring-boot-resources/javaagent/src/test/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceVersionDetectorTest.java b/instrumentation/spring/spring-boot-resources/javaagent/src/test/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceVersionDetectorTest.java index 8482af0f08ee..6c027e3ff4b8 100644 --- a/instrumentation/spring/spring-boot-resources/javaagent/src/test/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceVersionDetectorTest.java +++ b/instrumentation/spring/spring-boot-resources/javaagent/src/test/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceVersionDetectorTest.java @@ -5,12 +5,12 @@ package io.opentelemetry.instrumentation.spring.resources; +import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_VERSION; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.ServiceAttributes; import java.io.InputStream; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -33,7 +33,7 @@ void givenBuildVersionIsPresentInBuildInfProperties_thenReturnBuildVersion() { SpringBootServiceVersionDetector guesser = new SpringBootServiceVersionDetector(system); Resource result = guesser.createResource(config); - assertThat(result.getAttribute(ServiceAttributes.SERVICE_VERSION)).isEqualTo("0.0.2"); + assertThat(result.getAttribute(SERVICE_VERSION)).isEqualTo("0.0.2"); } @Test diff --git a/instrumentation/spring/spring-cloud-aws-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/aws/AwsSqsTest.java b/instrumentation/spring/spring-cloud-aws-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/aws/AwsSqsTest.java index 9a50ab4a49a3..cc0cc91ff260 100644 --- a/instrumentation/spring/spring-cloud-aws-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/aws/AwsSqsTest.java +++ b/instrumentation/spring/spring-cloud-aws-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/aws/AwsSqsTest.java @@ -8,6 +8,15 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.awspring.cloud.sqs.operations.SqsTemplate; @@ -16,8 +25,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; @@ -87,13 +94,12 @@ void sqsListener() throws InterruptedException, ExecutionException, TimeoutExcep equalTo(RpcIncubatingAttributes.RPC_METHOD, "GetQueueUrl"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo( - HttpAttributes.HTTP_REQUEST_METHOD, - HttpAttributes.HttpRequestMethodValues.POST), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, AwsSqsTestApplication.sqsPort), + HTTP_REQUEST_METHOD, HttpAttributes.HttpRequestMethodValues.POST), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, AwsSqsTestApplication.sqsPort), satisfies( - UrlAttributes.URL_FULL, + URL_FULL, v -> v.startsWith( "http://localhost:" + AwsSqsTestApplication.sqsPort)), @@ -110,27 +116,22 @@ void sqsListener() throws InterruptedException, ExecutionException, TimeoutExcep equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo( - HttpAttributes.HTTP_REQUEST_METHOD, - HttpAttributes.HttpRequestMethodValues.POST), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, AwsSqsTestApplication.sqsPort), + HTTP_REQUEST_METHOD, HttpAttributes.HttpRequestMethodValues.POST), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, AwsSqsTestApplication.sqsPort), satisfies( - UrlAttributes.URL_FULL, + URL_FULL, v -> v.startsWith( "http://localhost:" + AwsSqsTestApplication.sqsPort)), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "test-queue"), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank), + equalTo(MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_DESTINATION_NAME, "test-queue"), equalTo( stringKey("aws.queue.url"), "http://localhost:" @@ -148,27 +149,22 @@ void sqsListener() throws InterruptedException, ExecutionException, TimeoutExcep equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo( - HttpAttributes.HTTP_REQUEST_METHOD, - HttpAttributes.HttpRequestMethodValues.POST), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, AwsSqsTestApplication.sqsPort), + HTTP_REQUEST_METHOD, HttpAttributes.HttpRequestMethodValues.POST), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, AwsSqsTestApplication.sqsPort), satisfies( - UrlAttributes.URL_FULL, + URL_FULL, v -> v.startsWith( "http://localhost:" + AwsSqsTestApplication.sqsPort)), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MESSAGING_SYSTEM, MessagingIncubatingAttributes.MessagingSystemIncubatingValues .AWS_SQS), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "test-queue")), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_DESTINATION_NAME, "test-queue")), span -> span.hasName("callback").hasKind(SpanKind.INTERNAL).hasParent(trace.getSpan(3)), span -> @@ -180,13 +176,12 @@ void sqsListener() throws InterruptedException, ExecutionException, TimeoutExcep equalTo(RpcIncubatingAttributes.RPC_METHOD, "DeleteMessageBatch"), equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), equalTo( - HttpAttributes.HTTP_REQUEST_METHOD, - HttpAttributes.HttpRequestMethodValues.POST), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, AwsSqsTestApplication.sqsPort), + HTTP_REQUEST_METHOD, HttpAttributes.HttpRequestMethodValues.POST), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, AwsSqsTestApplication.sqsPort), satisfies( - UrlAttributes.URL_FULL, + URL_FULL, v -> v.startsWith( "http://localhost:" + AwsSqsTestApplication.sqsPort)), diff --git a/instrumentation/spring/spring-data/spring-data-3.0/testing/src/reactiveTest/java/io/opentelemetry/javaagent/instrumentation/spring/data/v3_0/ReactiveSpringDataTest.java b/instrumentation/spring/spring-data/spring-data-3.0/testing/src/reactiveTest/java/io/opentelemetry/javaagent/instrumentation/spring/data/v3_0/ReactiveSpringDataTest.java index 826bf0877497..d5eb076edefa 100644 --- a/instrumentation/spring/spring-data/spring-data-3.0/testing/src/reactiveTest/java/io/opentelemetry/javaagent/instrumentation/spring/data/v3_0/ReactiveSpringDataTest.java +++ b/instrumentation/spring/spring-data/spring-data-3.0/testing/src/reactiveTest/java/io/opentelemetry/javaagent/instrumentation/spring/data/v3_0/ReactiveSpringDataTest.java @@ -49,7 +49,7 @@ static void cleanUp() { applicationContext.close(); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testFindAll() { long count = diff --git a/instrumentation/spring/spring-data/spring-data-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/AbstractSpringJpaTest.java b/instrumentation/spring/spring-data/spring-data-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/AbstractSpringJpaTest.java index 730fc05da074..06a2159168cd 100644 --- a/instrumentation/spring/spring-data/spring-data-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/AbstractSpringJpaTest.java +++ b/instrumentation/spring/spring-data/spring-data-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/AbstractSpringJpaTest.java @@ -7,6 +7,13 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import static org.assertj.core.api.Assertions.catchThrowableOfType; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -20,7 +27,6 @@ import io.opentelemetry.sdk.testing.assertj.TraceAssert; import io.opentelemetry.sdk.trace.data.StatusData; import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.List; import java.util.Optional; import org.hibernate.Version; @@ -68,7 +74,7 @@ void testObjectMethod() { span -> span.hasName("toString test").hasTotalAttributeCount(0))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation static void assertHibernate4Trace(TraceAssert trace, String repoClassName) { trace.hasSpansSatisfyingExactly( span -> @@ -82,17 +88,16 @@ static void assertHibernate4Trace(TraceAssert trace, String repoClassName) { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, val -> val.startsWith("insert ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "INSERT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer"))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("insert ")), + equalTo(DB_OPERATION, "INSERT"), + equalTo(DB_SQL_TABLE, "JpaCustomer"))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation static void assertHibernateTrace(TraceAssert trace, String repoClassName) { trace.hasSpansSatisfyingExactly( span -> @@ -105,30 +110,27 @@ static void assertHibernateTrace(TraceAssert trace, String repoClassName) { span.hasName("CALL test") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("call next value for ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "CALL")), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("call next value for ")), + equalTo(DB_OPERATION, "CALL")), span -> span.hasName("INSERT test.JpaCustomer") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, val -> val.startsWith("insert ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "INSERT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer"))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("insert ")), + equalTo(DB_OPERATION, "INSERT"), + equalTo(DB_SQL_TABLE, "JpaCustomer"))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testCrud() { boolean isHibernate4 = Version.getVersionString().startsWith("4."); @@ -154,15 +156,13 @@ void testCrud() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("select ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer")))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("select ")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "JpaCustomer")))); clearData(); repo.save(customer); @@ -192,29 +192,25 @@ void testCrud() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("select ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer")), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("select ")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "JpaCustomer")), span -> span.hasName("UPDATE test.JpaCustomer") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("update ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "UPDATE"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer")))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("update ")), + equalTo(DB_OPERATION, "UPDATE"), + equalTo(DB_SQL_TABLE, "JpaCustomer")))); clearData(); customer = findByLastName(repo, "Anonymous").get(0); @@ -232,15 +228,13 @@ void testCrud() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("select ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer")))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("select ")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "JpaCustomer")))); clearData(); repo.delete(customer); @@ -258,32 +252,28 @@ void testCrud() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("select ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer")), + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("select ")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "JpaCustomer")), span -> span.hasName("DELETE test.JpaCustomer") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("delete ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "DELETE"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer")))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("delete ")), + equalTo(DB_OPERATION, "DELETE"), + equalTo(DB_SQL_TABLE, "JpaCustomer")))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testCustomRepositoryMethod() { REPOSITORY repo = repository(); @@ -307,18 +297,16 @@ void testCustomRepositoryMethod() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("select ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer")))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("select ")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "JpaCustomer")))); } - @SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation + @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @Test void testFailedRepositoryMethod() { // given @@ -354,14 +342,12 @@ void testFailedRepositoryMethod() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_SYSTEM, "hsqldb"), - equalTo(DbIncubatingAttributes.DB_NAME, "test"), - equalTo(DbIncubatingAttributes.DB_USER, "sa"), - equalTo(DbIncubatingAttributes.DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies( - DbIncubatingAttributes.DB_STATEMENT, - val -> val.startsWith("select ")), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "JpaCustomer")))); + equalTo(DB_SYSTEM, "hsqldb"), + equalTo(DB_NAME, "test"), + equalTo(DB_USER, "sa"), + equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + satisfies(DB_STATEMENT, val -> val.startsWith("select ")), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "JpaCustomer")))); } } diff --git a/instrumentation/spring/spring-integration-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/integration/v4_1/SpringIntegrationAndRabbitTest.java b/instrumentation/spring/spring-integration-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/integration/v4_1/SpringIntegrationAndRabbitTest.java index 2960c927ab5b..6f1bbba173b4 100644 --- a/instrumentation/spring/spring-integration-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/integration/v4_1/SpringIntegrationAndRabbitTest.java +++ b/instrumentation/spring/spring-integration-4.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/integration/v4_1/SpringIntegrationAndRabbitTest.java @@ -8,12 +8,19 @@ import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.NetworkAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -50,14 +57,11 @@ void shouldCooperateWithExistingRabbitMqInstrumentation() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, s -> s.isIn("127.0.0.1", "0:0:0:0:0:0:0:1", null)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - l -> l.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_TYPE, s -> s.isIn("ipv4", "ipv6", null)), - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rabbitmq")), + satisfies(NETWORK_PEER_PORT, l -> l.isInstanceOf(Long.class)), + satisfies(NETWORK_TYPE, s -> s.isIn("ipv4", "ipv6", null)), + equalTo(MESSAGING_SYSTEM, "rabbitmq")), span -> span.hasName("queue.declare"), span -> span.hasName("queue.bind"), span -> @@ -66,21 +70,14 @@ void shouldCooperateWithExistingRabbitMqInstrumentation() { .hasKind(SpanKind.PRODUCER) .hasAttributesSatisfyingExactly( satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, s -> s.isIn("127.0.0.1", "0:0:0:0:0:0:0:1", null)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - l -> l.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_TYPE, s -> s.isIn("ipv4", "ipv6", null)), - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rabbitmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - l -> l.isInstanceOf(Long.class)), + satisfies(NETWORK_PEER_PORT, l -> l.isInstanceOf(Long.class)), + satisfies(NETWORK_TYPE, s -> s.isIn("ipv4", "ipv6", null)), + equalTo(MESSAGING_SYSTEM, "rabbitmq"), + equalTo(MESSAGING_DESTINATION_NAME, "testTopic"), + equalTo(MESSAGING_OPERATION, "publish"), + satisfies(MESSAGING_MESSAGE_BODY_SIZE, l -> l.isInstanceOf(Long.class)), satisfies( MessagingIncubatingAttributes .MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY, @@ -98,21 +95,14 @@ void shouldCooperateWithExistingRabbitMqInstrumentation() { .hasKind(SpanKind.CONSUMER) .hasAttributesSatisfyingExactly( satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, s -> s.isIn("127.0.0.1", "0:0:0:0:0:0:0:1", null)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - l -> l.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_TYPE, s -> s.isIn("ipv4", "ipv6", null)), - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rabbitmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - l -> l.isInstanceOf(Long.class)), + satisfies(NETWORK_PEER_PORT, l -> l.isInstanceOf(Long.class)), + satisfies(NETWORK_TYPE, s -> s.isIn("ipv4", "ipv6", null)), + equalTo(MESSAGING_SYSTEM, "rabbitmq"), + equalTo(MESSAGING_DESTINATION_NAME, "testTopic"), + equalTo(MESSAGING_OPERATION, "process"), + satisfies(MESSAGING_MESSAGE_BODY_SIZE, l -> l.isInstanceOf(Long.class)), satisfies( MessagingIncubatingAttributes .MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY, @@ -124,17 +114,12 @@ void shouldCooperateWithExistingRabbitMqInstrumentation() { .hasParent(trace.getSpan(6)) .hasKind(SpanKind.CONSUMER) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rabbitmq"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - s -> s.isInstanceOf(String.class)), + equalTo(MESSAGING_SYSTEM, "rabbitmq"), + equalTo(MESSAGING_DESTINATION_NAME, "testTopic"), + equalTo(MESSAGING_OPERATION, "process"), + satisfies(MESSAGING_MESSAGE_ID, s -> s.isInstanceOf(String.class)), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - l -> l.isInstanceOf(Long.class))), + MESSAGING_MESSAGE_BODY_SIZE, l -> l.isInstanceOf(Long.class))), span -> span.hasName("consumer").hasParent(trace.getSpan(8)).hasTotalAttributeCount(0)), trace -> @@ -144,13 +129,10 @@ void shouldCooperateWithExistingRabbitMqInstrumentation() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( satisfies( - NetworkAttributes.NETWORK_PEER_ADDRESS, + NETWORK_PEER_ADDRESS, s -> s.isIn("127.0.0.1", "0:0:0:0:0:0:0:1", null)), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - l -> l.isInstanceOf(Long.class)), - satisfies( - NetworkAttributes.NETWORK_TYPE, s -> s.isIn("ipv4", "ipv6", null)), - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rabbitmq")))); + satisfies(NETWORK_PEER_PORT, l -> l.isInstanceOf(Long.class)), + satisfies(NETWORK_TYPE, s -> s.isIn("ipv4", "ipv6", null)), + equalTo(MESSAGING_SYSTEM, "rabbitmq")))); } } diff --git a/instrumentation/spring/spring-jms/spring-jms-2.0/testing/src/main/java/io/opentelemetry/instrumentation/spring/jms/v2_0/AbstractJmsTest.java b/instrumentation/spring/spring-jms/spring-jms-2.0/testing/src/main/java/io/opentelemetry/instrumentation/spring/jms/v2_0/AbstractJmsTest.java index 8db2a8d26fae..8db8726f79dd 100644 --- a/instrumentation/spring/spring-jms/spring-jms-2.0/testing/src/main/java/io/opentelemetry/instrumentation/spring/jms/v2_0/AbstractJmsTest.java +++ b/instrumentation/spring/spring-jms/spring-jms-2.0/testing/src/main/java/io/opentelemetry/instrumentation/spring/jms/v2_0/AbstractJmsTest.java @@ -10,13 +10,17 @@ import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static java.util.Arrays.asList; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -39,15 +43,12 @@ protected List producerAttributeAssertions( List attributeAssertions = new ArrayList<>( asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class)))); + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, "publish"), + satisfies(MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class)))); if (destinationName.equals("(temporary)")) { - attributeAssertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY, true)); + attributeAssertions.add(equalTo(MESSAGING_DESTINATION_TEMPORARY, true)); } if (testHeaders) { attributeAssertions.add( @@ -89,20 +90,17 @@ protected List consumerAttributeAssertions( List attributeAssertions = new ArrayList<>( asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, destinationName), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, operation))); + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, destinationName), + equalTo(MESSAGING_OPERATION, operation))); if (msgId != null) { - attributeAssertions.add(equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, msgId)); + attributeAssertions.add(equalTo(MESSAGING_MESSAGE_ID, msgId)); } else { attributeAssertions.add( - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - val -> val.isInstanceOf(String.class))); + satisfies(MESSAGING_MESSAGE_ID, val -> val.isInstanceOf(String.class))); } if (destinationName.equals("(temporary)")) { - attributeAssertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_TEMPORARY, true)); + attributeAssertions.add(equalTo(MESSAGING_DESTINATION_TEMPORARY, true)); } if (testHeaders) { attributeAssertions.add( diff --git a/instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v6_0/SpringJmsListenerTest.java b/instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v6_0/SpringJmsListenerTest.java index 366f9514cc51..2daf9a2b0cec 100644 --- a/instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v6_0/SpringJmsListenerTest.java +++ b/instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v6_0/SpringJmsListenerTest.java @@ -12,12 +12,15 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanKind; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import jakarta.jms.ConnectionFactory; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -47,14 +50,10 @@ void assertSpringJmsListener() { .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "spring-jms-listener"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank))); + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, "spring-jms-listener"), + equalTo(MESSAGING_OPERATION, "publish"), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank))); producerSpan.set(trace.getSpan(1)); }, @@ -66,28 +65,20 @@ void assertSpringJmsListener() { .hasNoParent() .hasLinks(LinkData.create(producerSpan.get().getSpanContext())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "spring-jms-listener"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank)), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, "spring-jms-listener"), + equalTo(MESSAGING_OPERATION, "receive"), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank)), span -> span.hasName("spring-jms-listener process") .hasKind(CONSUMER) .hasParent(trace.getSpan(0)) .hasLinks(LinkData.create(producerSpan.get().getSpanContext())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "spring-jms-listener"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank)), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, "spring-jms-listener"), + equalTo(MESSAGING_OPERATION, "process"), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank)), span -> span.hasName("consumer").hasParent(trace.getSpan(1)))); } @@ -133,14 +124,10 @@ void shouldCaptureHeaders(Class configClass) .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "spring-jms-listener"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, "spring-jms-listener"), + equalTo(MESSAGING_OPERATION, "publish"), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank), equalTo( stringArrayKey("messaging.header.test_message_header"), singletonList("test")), @@ -154,14 +141,10 @@ void shouldCaptureHeaders(Class configClass) .hasKind(CONSUMER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "spring-jms-listener"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, "spring-jms-listener"), + equalTo(MESSAGING_OPERATION, "receive"), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank), equalTo( stringArrayKey("messaging.header.test_message_header"), singletonList("test")), @@ -173,14 +156,10 @@ void shouldCaptureHeaders(Class configClass) .hasKind(CONSUMER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "spring-jms-listener"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, "spring-jms-listener"), + equalTo(MESSAGING_OPERATION, "process"), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank), equalTo( stringArrayKey("messaging.header.test_message_header"), singletonList("test")), diff --git a/instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v6_0/SpringListenerSuppressReceiveSpansTest.java b/instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v6_0/SpringListenerSuppressReceiveSpansTest.java index 6e8677579779..2c84d93cd638 100644 --- a/instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v6_0/SpringListenerSuppressReceiveSpansTest.java +++ b/instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v6_0/SpringListenerSuppressReceiveSpansTest.java @@ -9,8 +9,11 @@ import static io.opentelemetry.api.trace.SpanKind.PRODUCER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import org.assertj.core.api.AbstractStringAssert; class SpringListenerSuppressReceiveSpansTest extends AbstractSpringJmsListenerTest { @@ -27,28 +30,20 @@ void assertSpringJmsListener() { .hasKind(PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "spring-jms-listener"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank)), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, "spring-jms-listener"), + equalTo(MESSAGING_OPERATION, "publish"), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank)), span -> span.hasName("spring-jms-listener process") .hasKind(CONSUMER) .hasParent(trace.getSpan(1)) .hasTotalRecordedLinks(0) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "jms"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "spring-jms-listener"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, - AbstractStringAssert::isNotBlank)), + equalTo(MESSAGING_SYSTEM, "jms"), + equalTo(MESSAGING_DESTINATION_NAME, "spring-jms-listener"), + equalTo(MESSAGING_OPERATION, "process"), + satisfies(MESSAGING_MESSAGE_ID, AbstractStringAssert::isNotBlank)), span -> span.hasName("consumer").hasParent(trace.getSpan(2)))); } } diff --git a/instrumentation/spring/spring-kafka-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/kafka/v2_7/SpringKafkaTest.java b/instrumentation/spring/spring-kafka-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/kafka/v2_7/SpringKafkaTest.java index b43f479cab0e..6818653482ef 100644 --- a/instrumentation/spring/spring-kafka-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/kafka/v2_7/SpringKafkaTest.java +++ b/instrumentation/spring/spring-kafka-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/kafka/v2_7/SpringKafkaTest.java @@ -9,6 +9,15 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanKind; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static java.util.Collections.emptyList; import io.opentelemetry.api.trace.SpanKind; @@ -20,7 +29,6 @@ import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import io.opentelemetry.testing.AbstractSpringKafkaTest; import java.util.ArrayList; import java.util.Arrays; @@ -74,18 +82,14 @@ void shouldCreateSpansForSingleRecordProcess() { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSingleTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")))); @@ -99,44 +103,32 @@ void shouldCreateSpansForSingleRecordProcess() { .hasKind(SpanKind.CONSUMER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSingleTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "testSingleListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testSingleListener"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1)), + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1)), span -> span.hasName("testSingleTopic process") .hasKind(SpanKind.CONSUMER) .hasParent(trace.getSpan(0)) .hasLinks(LinkData.create(producer.get().getSpanContext())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSingleTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - AbstractLongAssert::isNotNegative), + MESSAGING_MESSAGE_BODY_SIZE, AbstractLongAssert::isNotNegative), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "testSingleListener"), + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testSingleListener"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), @@ -164,34 +156,23 @@ void shouldHandleFailureInKafkaListener() { .hasKind(SpanKind.CONSUMER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSingleTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "testSingleListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testSingleListener"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo(MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1)); + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1)); List processAttributes = Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSingleTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - AbstractLongAssert::isNotNegative), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "testSingleListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "process"), + satisfies(MESSAGING_MESSAGE_BODY_SIZE, AbstractLongAssert::isNotNegative), + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testSingleListener"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), satisfies(longKey("kafka.record.queue_time_ms"), AbstractLongAssert::isNotNegative)); @@ -206,18 +187,14 @@ void shouldHandleFailureInKafkaListener() { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSingleTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")))); @@ -280,18 +257,14 @@ void shouldCreateSpansForBatchReceiveAndProcess() throws InterruptedException { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer"))), @@ -300,18 +273,14 @@ void shouldCreateSpansForBatchReceiveAndProcess() throws InterruptedException { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "20"), + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "20"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")))); @@ -326,19 +295,14 @@ void shouldCreateSpansForBatchReceiveAndProcess() throws InterruptedException { .hasKind(SpanKind.CONSUMER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "testBatchListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testBatchListener"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 2)), + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 2)), span -> span.hasName("testBatchTopic process") .hasKind(SpanKind.CONSUMER) @@ -347,19 +311,14 @@ void shouldCreateSpansForBatchReceiveAndProcess() throws InterruptedException { LinkData.create(producer1.get().getSpanContext()), LinkData.create(producer2.get().getSpanContext())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "testBatchListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testBatchListener"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 2)), + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 2)), span -> span.hasName("consumer").hasParent(trace.getSpan(1)))); } @@ -387,18 +346,14 @@ void shouldHandleFailureInKafkaBatchListener() { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")))); @@ -447,13 +402,12 @@ private static void assertReceiveSpan(SpanDataAssert span) { .hasKind(SpanKind.CONSUMER) .hasNoParent() .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "testBatchListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "receive"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testBatchListener"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo(MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1)); + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1)); } private static void assertProcessSpan( @@ -463,13 +417,12 @@ private static void assertProcessSpan( .hasParent(trace.getSpan(0)) .hasLinks(LinkData.create(producer.getSpanContext())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "testBatchListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testBatchListener"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo(MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1)); + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1)); if (failed) { span.hasStatus(StatusData.error()).hasException(new IllegalArgumentException("boom")); } diff --git a/instrumentation/spring/spring-kafka-2.7/testing/src/main/java/io/opentelemetry/testing/AbstractSpringKafkaNoReceiveTelemetryTest.java b/instrumentation/spring/spring-kafka-2.7/testing/src/main/java/io/opentelemetry/testing/AbstractSpringKafkaNoReceiveTelemetryTest.java index 97dc95a800e0..bcb57ad88c69 100644 --- a/instrumentation/spring/spring-kafka-2.7/testing/src/main/java/io/opentelemetry/testing/AbstractSpringKafkaNoReceiveTelemetryTest.java +++ b/instrumentation/spring/spring-kafka-2.7/testing/src/main/java/io/opentelemetry/testing/AbstractSpringKafkaNoReceiveTelemetryTest.java @@ -9,6 +9,15 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; @@ -52,12 +61,9 @@ void shouldCreateSpansForSingleRecordProcess() { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSingleTopic"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")), @@ -66,38 +72,28 @@ void shouldCreateSpansForSingleRecordProcess() { .MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, - "10")), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10")), span -> span.hasName("testSingleTopic process") .hasKind(SpanKind.CONSUMER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSingleTopic"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "process"), satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - AbstractLongAssert::isNotNegative), + MESSAGING_MESSAGE_BODY_SIZE, AbstractLongAssert::isNotNegative), satisfies( MessagingIncubatingAttributes .MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, - "10"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "testSingleListener"), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testSingleListener"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer"))), @@ -119,21 +115,14 @@ void shouldHandleFailureInKafkaListener() { List processAttributes = Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSingleTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - AbstractLongAssert::isNotNegative), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "testSingleListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "process"), + satisfies(MESSAGING_MESSAGE_BODY_SIZE, AbstractLongAssert::isNotNegative), + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testSingleListener"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer"))); testing() @@ -146,12 +135,9 @@ void shouldHandleFailureInKafkaListener() { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testSingleTopic"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testSingleTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")), @@ -160,11 +146,9 @@ void shouldHandleFailureInKafkaListener() { .MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, - "10")), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10")), span -> span.hasName("testSingleTopic process") .hasKind(SpanKind.CONSUMER) @@ -211,44 +195,37 @@ void shouldCreateSpansForBatchReceiveAndProcess() throws InterruptedException { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, "10")), + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10")), span -> span.hasName("testBatchTopic publish") .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, - "20"))); + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "20"))); producer1.set(trace.getSpan(1)); producer2.set(trace.getSpan(2)); @@ -264,21 +241,14 @@ void shouldCreateSpansForBatchReceiveAndProcess() throws InterruptedException { producer1.get().getSpanContext(), producer2.get().getSpanContext())) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testBatchTopic"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, - "testBatchListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testBatchListener"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, - 2)), + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 2)), span -> span.hasName("consumer").hasParent(trace.getSpan(0)))); } @@ -299,13 +269,12 @@ void shouldHandleFailureInKafkaBatchListener() { List processAttributes = Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "testBatchListener"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "testBatchListener"), satisfies(MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("consumer")), - equalTo(MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, 1)); + equalTo(MESSAGING_BATCH_MESSAGE_COUNT, 1)); testing() .waitAndAssertSortedTraces( @@ -318,23 +287,19 @@ void shouldHandleFailureInKafkaBatchListener() { .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, - "testBatchTopic"), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, "testBatchTopic"), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( MESSAGING_CLIENT_ID, stringAssert -> stringAssert.startsWith("producer")), satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, + MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, + MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative), - equalTo( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, - "10"))); + equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "10"))); producer.set(trace.getSpan(1)); }, diff --git a/instrumentation/spring/spring-rabbit-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMqTest.java b/instrumentation/spring/spring-rabbit-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMqTest.java index 98b41f0b698a..38b05dcb9be0 100644 --- a/instrumentation/spring/spring-rabbit-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMqTest.java +++ b/instrumentation/spring/spring-rabbit-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rabbit/v1_0/SpringRabbitMqTest.java @@ -7,6 +7,14 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; @@ -18,7 +26,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.semconv.NetworkAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; @@ -105,25 +112,20 @@ private static List getAssertions( List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rabbitmq"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, destination), - satisfies( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - AbstractLongAssert::isNotNegative))); + equalTo(MESSAGING_SYSTEM, "rabbitmq"), + equalTo(MESSAGING_DESTINATION_NAME, destination), + satisfies(MESSAGING_MESSAGE_BODY_SIZE, AbstractLongAssert::isNotNegative))); if (operation != null) { - assertions.add(equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, operation)); + assertions.add(equalTo(MESSAGING_OPERATION, operation)); } if (peerAddress != null) { - assertions.add(equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4")); - assertions.add(equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, peerAddress)); - assertions.add( - satisfies(NetworkAttributes.NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)); + assertions.add(equalTo(NETWORK_TYPE, "ipv4")); + assertions.add(equalTo(NETWORK_PEER_ADDRESS, peerAddress)); + assertions.add(satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative)); } if (routingKey) { assertions.add( - satisfies( - MessagingIncubatingAttributes.MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY, - AbstractStringAssert::isNotBlank)); + satisfies(MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY, AbstractStringAssert::isNotBlank)); } if (testHeaders) { assertions.add( @@ -213,12 +215,10 @@ public void testContextPropagation(boolean testHeaders) throws Exception { span.hasName("basic.ack") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(NetworkAttributes.NETWORK_TYPE, "ipv4"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - AbstractLongAssert::isNotNegative), - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "rabbitmq"))); + equalTo(NETWORK_TYPE, "ipv4"), + equalTo(NETWORK_PEER_ADDRESS, ip), + satisfies(NETWORK_PEER_PORT, AbstractLongAssert::isNotNegative), + equalTo(MESSAGING_SYSTEM, "rabbitmq"))); }); } } diff --git a/instrumentation/spring/spring-rmi-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/SpringRmiTest.java b/instrumentation/spring/spring-rmi-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/SpringRmiTest.java index 2009d762b4d7..97b2784bab4b 100644 --- a/instrumentation/spring/spring-rmi-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/SpringRmiTest.java +++ b/instrumentation/spring/spring-rmi-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/SpringRmiTest.java @@ -7,6 +7,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -16,7 +19,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ExceptionAttributes; import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.rmi.RemoteException; import java.util.ArrayList; @@ -199,14 +201,10 @@ void throwsException(TestSource testSource) { event .hasName("exception") .hasAttributesSatisfying( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - error.getClass().getCanonicalName()), - equalTo( - ExceptionAttributes.EXCEPTION_MESSAGE, - error.getMessage()), + equalTo(EXCEPTION_TYPE, error.getClass().getCanonicalName()), + equalTo(EXCEPTION_MESSAGE, error.getMessage()), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, + EXCEPTION_STACKTRACE, val -> val.isInstanceOf(String.class))))); assertions.add( span -> @@ -219,14 +217,10 @@ void throwsException(TestSource testSource) { event .hasName("exception") .hasAttributesSatisfying( - equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - error.getClass().getCanonicalName()), - equalTo( - ExceptionAttributes.EXCEPTION_MESSAGE, - error.getMessage()), + equalTo(EXCEPTION_TYPE, error.getClass().getCanonicalName()), + equalTo(EXCEPTION_MESSAGE, error.getMessage()), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, + EXCEPTION_STACKTRACE, val -> val.isInstanceOf(String.class)))) .hasAttributesSatisfying( equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "spring_rmi"), @@ -247,13 +241,10 @@ void throwsException(TestSource testSource) { .hasName("exception") .hasAttributesSatisfying( equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - error.getClass().getCanonicalName()), - equalTo( - ExceptionAttributes.EXCEPTION_MESSAGE, - error.getMessage()), + EXCEPTION_TYPE, error.getClass().getCanonicalName()), + equalTo(EXCEPTION_MESSAGE, error.getMessage()), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, + EXCEPTION_STACKTRACE, val -> val.isInstanceOf(String.class)))) .hasAttributesSatisfying( equalTo(RpcIncubatingAttributes.RPC_SYSTEM, testSource.serverSystem), diff --git a/instrumentation/spring/spring-scheduling-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/v3_1/SpringSchedulingTest.java b/instrumentation/spring/spring-scheduling-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/v3_1/SpringSchedulingTest.java index eea1a23a4498..5061c0cf378c 100644 --- a/instrumentation/spring/spring-scheduling-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/v3_1/SpringSchedulingTest.java +++ b/instrumentation/spring/spring-scheduling-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/v3_1/SpringSchedulingTest.java @@ -8,6 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FUNCTION; import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_NAMESPACE; @@ -26,7 +29,6 @@ import io.opentelemetry.javaagent.instrumentation.spring.scheduling.v3_1.spring.config.TriggerTaskConfig; import io.opentelemetry.javaagent.instrumentation.spring.scheduling.v3_1.spring.service.LambdaTaskConfigurer; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ExceptionAttributes; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; @@ -166,11 +168,11 @@ void taskWithErrorTest() throws InterruptedException { .hasName("exception") .hasAttributesSatisfying( equalTo( - ExceptionAttributes.EXCEPTION_TYPE, + EXCEPTION_TYPE, IllegalStateException.class.getName()), - equalTo(ExceptionAttributes.EXCEPTION_MESSAGE, "failure"), + equalTo(EXCEPTION_MESSAGE, "failure"), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, + EXCEPTION_STACKTRACE, value -> value.isInstanceOf(String.class)))), span -> span.hasName("error-handler").hasParent(trace.getSpan(0)))); } diff --git a/instrumentation/spring/spring-web/spring-web-3.1/library/src/test/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebInstrumentationTest.java b/instrumentation/spring/spring-web/spring-web-3.1/library/src/test/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebInstrumentationTest.java index 6b40a8745475..1f6631c55d24 100644 --- a/instrumentation/spring/spring-web/spring-web-3.1/library/src/test/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebInstrumentationTest.java +++ b/instrumentation/spring/spring-web/spring-web-3.1/library/src/test/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebInstrumentationTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.spring.web.v3_1; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; import static java.util.Collections.singletonList; import io.opentelemetry.api.common.AttributeKey; @@ -13,7 +14,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import java.net.URI; import java.util.Collections; import java.util.HashSet; @@ -105,7 +105,7 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { uri -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); return attributes; }); } diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/SpringWebfluxTest.java b/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/SpringWebfluxTest.java index 2748191b7e83..ed267f43e832 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/SpringWebfluxTest.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/SpringWebfluxTest.java @@ -17,9 +17,13 @@ import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; +import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import static org.junit.jupiter.api.Named.named; @@ -29,8 +33,6 @@ import io.opentelemetry.sdk.testing.assertj.EventDataAssert; import io.opentelemetry.sdk.testing.assertj.TraceAssert; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.UrlAttributes; import io.opentelemetry.testing.internal.armeria.client.WebClient; import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpResponse; import io.opentelemetry.testing.internal.armeria.common.HttpStatus; @@ -112,17 +114,15 @@ void basicGetTest(Parameter parameter) { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, parameter.urlPath), + equalTo(URL_PATH, parameter.urlPath), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, parameter.urlPathWithVariables)), span -> { @@ -233,17 +233,15 @@ void getAsyncResponseTest(Parameter parameter) { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, parameter.urlPath), + equalTo(URL_PATH, parameter.urlPath), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, parameter.urlPathWithVariables)), span -> { @@ -341,17 +339,15 @@ void createSpanDuringHandlerFunctionTest(Parameter parameter) { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, parameter.urlPath), + equalTo(URL_PATH, parameter.urlPath), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, parameter.urlPathWithVariables)), span -> { @@ -414,17 +410,15 @@ void get404Test() { .hasStatus(StatusData.unset()) .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, "/notfoundgreet"), + equalTo(URL_PATH, "/notfoundgreet"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(HTTP_RESPONSE_STATUS_CODE, 404), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, "/**")), span -> @@ -475,17 +469,15 @@ void basicPostTest() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, "/echo"), + equalTo(URL_PATH, "/echo"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 202), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, "/echo")), span -> @@ -516,17 +508,15 @@ void getToBadEndpointTest(Parameter parameter) { .hasStatus(StatusData.error()) .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, parameter.urlPath), + equalTo(URL_PATH, parameter.urlPath), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(HTTP_RESPONSE_STATUS_CODE, 500), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, parameter.urlPathWithVariables), equalTo(ERROR_TYPE, "500")), @@ -597,17 +587,15 @@ void redirectTest() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, "/double-greet-redirect"), + equalTo(URL_PATH, "/double-greet-redirect"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(HTTP_RESPONSE_STATUS_CODE, 307), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, "/double-greet-redirect")), span -> @@ -626,17 +614,15 @@ void redirectTest() { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, "/double-greet"), + equalTo(URL_PATH, "/double-greet"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, "/double-greet")), span -> { @@ -678,17 +664,15 @@ void multipleGetsToDelayingRoute(Parameter parameter) { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, parameter.urlPath), + equalTo(URL_PATH, parameter.urlPath), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, parameter.urlPathWithVariables)), span -> { @@ -760,16 +744,14 @@ void cancelRequestTest() throws Exception { .hasStatus(StatusData.unset()) .hasAttributesSatisfyingExactly( equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - val -> val.isInstanceOf(Long.class)), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, val -> val.isInstanceOf(Long.class)), equalTo(CLIENT_ADDRESS, "127.0.0.1"), - equalTo(UrlAttributes.URL_PATH, "/slow"), + equalTo(URL_PATH, "/slow"), equalTo(HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_SCHEME, "http"), + equalTo(URL_SCHEME, "http"), satisfies(USER_AGENT_ORIGINAL, val -> val.isInstanceOf(String.class)), equalTo(HTTP_ROUTE, "/slow"), equalTo(ERROR_TYPE, "_OTHER")), diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.3/testing/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/AbstractSpringWebfluxClientInstrumentationTest.java b/instrumentation/spring/spring-webflux/spring-webflux-5.3/testing/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/AbstractSpringWebfluxClientInstrumentationTest.java index d7794f3e4469..671fd96996f8 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.3/testing/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/AbstractSpringWebfluxClientInstrumentationTest.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.3/testing/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/AbstractSpringWebfluxClientInstrumentationTest.java @@ -7,6 +7,12 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static java.util.Collections.emptyMap; import static java.util.Objects.requireNonNull; import static org.assertj.core.api.Assertions.catchThrowable; @@ -17,11 +23,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.ErrorAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; @@ -89,7 +90,7 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { uri -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + attributes.remove(NETWORK_PROTOCOL_VERSION); return attributes; }); @@ -184,11 +185,11 @@ void shouldEndSpanOnMonoTimeout() { .hasKind(CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(UrlAttributes.URL_FULL, uri.toString()), - equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(ErrorAttributes.ERROR_TYPE, "cancelled")), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(URL_FULL, uri.toString()), + equalTo(SERVER_ADDRESS, "localhost"), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(ERROR_TYPE, "cancelled")), span -> span.hasName("test-http-server") .hasKind(SpanKind.SERVER) diff --git a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedTest.java b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedTest.java index c3206e60b68c..dfbc7e3d7720 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedTest.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedTest.java @@ -12,6 +12,8 @@ import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static java.util.Collections.emptyMap; import static java.util.Collections.singletonMap; import static net.spy.memcached.ConnectionFactoryBuilder.Protocol.BINARY; @@ -144,9 +146,9 @@ void getHit() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -166,9 +168,9 @@ void getMiss() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(stringKey("spymemcached.result"), "miss")))); } @@ -201,9 +203,9 @@ void getCancel() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(booleanKey("spymemcached.command.cancelled"), true)))); } @@ -256,9 +258,9 @@ void getTimeout() throws InterruptedException { val -> val.isInstanceOf(String.class)))) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get")))); + equalTo(DB_OPERATION, "get")))); } @Test @@ -284,9 +286,9 @@ void bulkGet() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "getBulk")))); + equalTo(DB_OPERATION, "getBulk")))); } @Test @@ -308,9 +310,9 @@ void set() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "set")))); + equalTo(DB_OPERATION, "set")))); } @Test @@ -344,9 +346,9 @@ void setCancel() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "set"), + equalTo(DB_OPERATION, "set"), equalTo(booleanKey("spymemcached.command.cancelled"), true)))); } @@ -370,18 +372,18 @@ void add() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "add")), + equalTo(DB_OPERATION, "add")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -406,18 +408,18 @@ void secondAdd() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "add")), + equalTo(DB_OPERATION, "add")), span -> span.hasName("add") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "add")))); + equalTo(DB_OPERATION, "add")))); } @Test @@ -440,18 +442,18 @@ void delete() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "delete")), + equalTo(DB_OPERATION, "delete")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(stringKey("spymemcached.result"), "miss")))); } @@ -474,9 +476,9 @@ void deleteNonExistent() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "delete")))); + equalTo(DB_OPERATION, "delete")))); } @Test @@ -500,18 +502,18 @@ void replace() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "replace")), + equalTo(DB_OPERATION, "replace")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -538,9 +540,9 @@ void replaceNonExistent() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "replace")))); + equalTo(DB_OPERATION, "replace")))); } @Test @@ -565,27 +567,27 @@ void append() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "gets")), + equalTo(DB_OPERATION, "gets")), span -> span.hasName("append") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "append")), + equalTo(DB_OPERATION, "append")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -611,27 +613,27 @@ void prepend() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "gets")), + equalTo(DB_OPERATION, "gets")), span -> span.hasName("prepend") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "prepend")), + equalTo(DB_OPERATION, "prepend")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -657,18 +659,18 @@ void cas() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "gets")), + equalTo(DB_OPERATION, "gets")), span -> span.hasName("cas") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "cas")))); + equalTo(DB_OPERATION, "cas")))); } @Test @@ -692,9 +694,9 @@ void casNotFound() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "cas")))); + equalTo(DB_OPERATION, "cas")))); } @Test @@ -716,9 +718,9 @@ void touch() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "touch")))); + equalTo(DB_OPERATION, "touch")))); } @Test @@ -741,9 +743,9 @@ void touchNonExistent() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "touch")))); + equalTo(DB_OPERATION, "touch")))); } @Test @@ -766,9 +768,9 @@ void getAndTouch() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "getAndTouch")))); + equalTo(DB_OPERATION, "getAndTouch")))); } @Test @@ -791,9 +793,9 @@ void getAndTouchNonExistent() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "getAndTouch")))); + equalTo(DB_OPERATION, "getAndTouch")))); } @Test @@ -820,18 +822,18 @@ it needs values to be strings (with digits in them) and it returns actual long f .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "decr")), + equalTo(DB_OPERATION, "decr")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -854,9 +856,9 @@ void decrNonExistent() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "decr")))); + equalTo(DB_OPERATION, "decr")))); } @Test @@ -877,9 +879,9 @@ void decrException() { new IllegalArgumentException("Key is too long (maxlen = 250)")) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "decr")))); + equalTo(DB_OPERATION, "decr")))); } @Test @@ -906,18 +908,18 @@ it needs values to be strings (with digits in them) and it returns actual long f .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "incr")), + equalTo(DB_OPERATION, "incr")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "get"), + equalTo(DB_OPERATION, "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -940,9 +942,9 @@ void incrNonExistent() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "incr")))); + equalTo(DB_OPERATION, "incr")))); } @Test @@ -963,9 +965,9 @@ void incrException() { new IllegalArgumentException("Key is too long (maxlen = 250)")) .hasAttributesSatisfyingExactly( equalTo( - DbIncubatingAttributes.DB_SYSTEM, + DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DbIncubatingAttributes.DB_OPERATION, "incr")))); + equalTo(DB_OPERATION, "incr")))); } private static String key(String k) { diff --git a/instrumentation/undertow-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowServerDispatchTest.java b/instrumentation/undertow-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowServerDispatchTest.java index 3bc1df859e5b..79267290fd50 100644 --- a/instrumentation/undertow-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowServerDispatchTest.java +++ b/instrumentation/undertow-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowServerDispatchTest.java @@ -11,13 +11,13 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.QUERY_PARAM; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.REDIRECT; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; import com.google.common.collect.ImmutableSet; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; -import io.opentelemetry.semconv.NetworkAttributes; import io.undertow.Handlers; import io.undertow.Undertow; import io.undertow.util.Headers; @@ -130,6 +130,6 @@ protected void configure(HttpServerTestOptions options) { options.setTestException(false); options.setHasResponseCustomizer(endpoint -> true); - options.setHttpAttributes(endpoint -> ImmutableSet.of(NetworkAttributes.NETWORK_PEER_PORT)); + options.setHttpAttributes(endpoint -> ImmutableSet.of(NETWORK_PEER_PORT)); } } diff --git a/instrumentation/undertow-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowServerTest.java b/instrumentation/undertow-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowServerTest.java index 442a2d0418de..c9bd2e31a7e5 100644 --- a/instrumentation/undertow-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowServerTest.java +++ b/instrumentation/undertow-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowServerTest.java @@ -14,6 +14,20 @@ import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.ClientAttributes.CLIENT_ADDRESS; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; +import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; +import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.collect.ImmutableSet; @@ -23,13 +37,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; -import io.opentelemetry.semconv.ClientAttributes; -import io.opentelemetry.semconv.ExceptionAttributes; -import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.UserAgentAttributes; import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpResponse; import io.undertow.Handlers; import io.undertow.Undertow; @@ -161,7 +168,7 @@ public void stopServer(Undertow undertow) { @Override protected void configure(HttpServerTestOptions options) { super.configure(options); - options.setHttpAttributes(endpoint -> ImmutableSet.of(NetworkAttributes.NETWORK_PEER_PORT)); + options.setHttpAttributes(endpoint -> ImmutableSet.of(NETWORK_PEER_PORT)); options.setHasResponseCustomizer(serverEndpoint -> true); options.setUseHttp2(useHttp2()); } @@ -192,21 +199,17 @@ void testSendResponse() { event -> event.hasName("before-event"), event -> event.hasName("after-event")) .hasAttributesSatisfyingExactly( - equalTo(ClientAttributes.CLIENT_ADDRESS, TEST_CLIENT_IP), - equalTo(UrlAttributes.URL_SCHEME, uri.getScheme()), - equalTo(UrlAttributes.URL_PATH, uri.getPath()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UserAgentAttributes.USER_AGENT_ORIGINAL, TEST_USER_AGENT), - equalTo( - NetworkAttributes.NETWORK_PROTOCOL_VERSION, - useHttp2() ? "2" : "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - k -> k.isInstanceOf(Long.class))), + equalTo(CLIENT_ADDRESS, TEST_CLIENT_IP), + equalTo(URL_SCHEME, uri.getScheme()), + equalTo(URL_PATH, uri.getPath()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(USER_AGENT_ORIGINAL, TEST_USER_AGENT), + equalTo(NETWORK_PROTOCOL_VERSION, useHttp2() ? "2" : "1.1"), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class))), span -> span.hasName("sendResponse") .hasKind(SpanKind.INTERNAL) @@ -236,31 +239,24 @@ void testSendResponseWithException() { event .hasName("exception") .hasAttributesSatisfyingExactly( + equalTo(EXCEPTION_TYPE, Exception.class.getName()), equalTo( - ExceptionAttributes.EXCEPTION_TYPE, - Exception.class.getName()), - equalTo( - ExceptionAttributes.EXCEPTION_MESSAGE, - "exception after sending response"), + EXCEPTION_MESSAGE, "exception after sending response"), satisfies( - ExceptionAttributes.EXCEPTION_STACKTRACE, + EXCEPTION_STACKTRACE, val -> val.isInstanceOf(String.class)))) .hasAttributesSatisfyingExactly( - equalTo(ClientAttributes.CLIENT_ADDRESS, TEST_CLIENT_IP), - equalTo(UrlAttributes.URL_SCHEME, uri.getScheme()), - equalTo(UrlAttributes.URL_PATH, uri.getPath()), - equalTo(HttpAttributes.HTTP_REQUEST_METHOD, "GET"), - equalTo(HttpAttributes.HTTP_RESPONSE_STATUS_CODE, 200), - equalTo(UserAgentAttributes.USER_AGENT_ORIGINAL, TEST_USER_AGENT), - equalTo( - NetworkAttributes.NETWORK_PROTOCOL_VERSION, - useHttp2() ? "2" : "1.1"), - equalTo(ServerAttributes.SERVER_ADDRESS, uri.getHost()), - equalTo(ServerAttributes.SERVER_PORT, uri.getPort()), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"), - satisfies( - NetworkAttributes.NETWORK_PEER_PORT, - k -> k.isInstanceOf(Long.class))), + equalTo(CLIENT_ADDRESS, TEST_CLIENT_IP), + equalTo(URL_SCHEME, uri.getScheme()), + equalTo(URL_PATH, uri.getPath()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(USER_AGENT_ORIGINAL, TEST_USER_AGENT), + equalTo(NETWORK_PROTOCOL_VERSION, useHttp2() ? "2" : "1.1"), + equalTo(SERVER_ADDRESS, uri.getHost()), + equalTo(SERVER_PORT, uri.getPort()), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class))), span -> span.hasName("sendResponseWithException") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/VertxHttpClientTest.java b/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/VertxHttpClientTest.java index 6699579bb757..c012b3996da8 100644 --- a/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/VertxHttpClientTest.java +++ b/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/VertxHttpClientTest.java @@ -5,6 +5,10 @@ package io.opentelemetry.javaagent.instrumentation.vertx.v3_0.client; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; + import client.VertxSingleConnection; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -13,8 +17,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; import io.opentelemetry.instrumentation.testing.junit.http.SingleConnection; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; import io.vertx.core.Vertx; import io.vertx.core.VertxOptions; import io.vertx.core.http.HttpClient; @@ -90,9 +92,9 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { uri -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); - attributes.remove(ServerAttributes.SERVER_ADDRESS); - attributes.remove(ServerAttributes.SERVER_PORT); + attributes.remove(NETWORK_PROTOCOL_VERSION); + attributes.remove(SERVER_ADDRESS); + attributes.remove(SERVER_PORT); return attributes; }); diff --git a/instrumentation/vertx/vertx-kafka-client-3.6/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/kafka/v3_6/AbstractVertxKafkaTest.java b/instrumentation/vertx/vertx-kafka-client-3.6/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/kafka/v3_6/AbstractVertxKafkaTest.java index ecc5c91d0b76..986b6e964b96 100644 --- a/instrumentation/vertx/vertx-kafka-client-3.6/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/kafka/v3_6/AbstractVertxKafkaTest.java +++ b/instrumentation/vertx/vertx-kafka-client-3.6/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/kafka/v3_6/AbstractVertxKafkaTest.java @@ -7,13 +7,21 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import static org.junit.jupiter.api.Assertions.assertTrue; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import io.vertx.core.AsyncResult; import io.vertx.core.Handler; import io.vertx.core.Vertx; @@ -201,22 +209,17 @@ protected static List sendAttributes( List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, record.topic()), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "publish"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, record.topic()), + equalTo(MESSAGING_OPERATION, "publish"), satisfies( AttributeKey.stringKey("messaging.client_id"), stringAssert -> stringAssert.startsWith("producer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative))); + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative))); String messageKey = record.key(); if (messageKey != null) { - assertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); + assertions.add(equalTo(MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); } return assertions; } @@ -234,18 +237,16 @@ private static List batchConsumerAttributes(String topic, St List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, topic), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, operation), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, topic), + equalTo(MESSAGING_OPERATION, operation), satisfies( AttributeKey.stringKey("messaging.client_id"), stringAssert -> stringAssert.startsWith("consumer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_BATCH_MESSAGE_COUNT, - AbstractLongAssert::isPositive))); + satisfies(MESSAGING_BATCH_MESSAGE_COUNT, AbstractLongAssert::isPositive))); // consumer group is not available in version 0.11 if (Boolean.getBoolean("testLatestDeps")) { - assertions.add(equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test")); } return assertions; } @@ -256,18 +257,14 @@ protected static List processAttributes( List assertions = new ArrayList<>( Arrays.asList( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "kafka"), - equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, record.topic()), - equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), + equalTo(MESSAGING_SYSTEM, "kafka"), + equalTo(MESSAGING_DESTINATION_NAME, record.topic()), + equalTo(MESSAGING_OPERATION, "process"), satisfies( AttributeKey.stringKey("messaging.client_id"), stringAssert -> stringAssert.startsWith("consumer")), - satisfies( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - AbstractStringAssert::isNotEmpty), - satisfies( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, - AbstractLongAssert::isNotNegative))); + satisfies(MESSAGING_DESTINATION_PARTITION_ID, AbstractStringAssert::isNotEmpty), + satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractLongAssert::isNotNegative))); if (Boolean.getBoolean("otel.instrumentation.kafka.experimental-span-attributes")) { assertions.add( satisfies( @@ -276,19 +273,17 @@ protected static List processAttributes( } // consumer group is not available in version 0.11 if (Boolean.getBoolean("testLatestDeps")) { - assertions.add(equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, "test")); + assertions.add(equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test")); } String messageKey = record.key(); if (messageKey != null) { - assertions.add( - equalTo(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); + assertions.add(equalTo(MESSAGING_KAFKA_MESSAGE_KEY, messageKey)); } String messageValue = record.value(); if (messageValue != null) { assertions.add( equalTo( - MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE, - messageValue.getBytes(StandardCharsets.UTF_8).length)); + MESSAGING_MESSAGE_BODY_SIZE, messageValue.getBytes(StandardCharsets.UTF_8).length)); } return assertions; } diff --git a/instrumentation/vertx/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/redis/VertxRedisClientTest.java b/instrumentation/vertx/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/redis/VertxRedisClientTest.java index 5df51cf79108..945e8f523828 100644 --- a/instrumentation/vertx/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/redis/VertxRedisClientTest.java +++ b/instrumentation/vertx/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/redis/VertxRedisClientTest.java @@ -6,6 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.vertx.v4_0.redis; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_REDIS_DATABASE_INDEX; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.AttributeKey; @@ -14,9 +22,6 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.NetworkAttributes; -import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import io.vertx.core.Vertx; import io.vertx.redis.client.Redis; import io.vertx.redis.client.RedisAPI; @@ -206,25 +211,25 @@ private static AttributeAssertion[] redisSpanAttributes(String operation, String // not testing database/dup if (SemconvStability.emitStableDatabaseSemconv()) { return new AttributeAssertion[] { - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), + equalTo(DB_SYSTEM, "redis"), equalTo(AttributeKey.stringKey("db.query.text"), statement), equalTo(AttributeKey.stringKey("db.operation.name"), operation), equalTo(AttributeKey.stringKey("db.namespace"), "1"), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip) + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(NETWORK_PEER_PORT, port), + equalTo(NETWORK_PEER_ADDRESS, ip) }; } else { return new AttributeAssertion[] { - equalTo(DbIncubatingAttributes.DB_SYSTEM, "redis"), - equalTo(DbIncubatingAttributes.DB_STATEMENT, statement), - equalTo(DbIncubatingAttributes.DB_OPERATION, operation), - equalTo(DbIncubatingAttributes.DB_REDIS_DATABASE_INDEX, 1), - equalTo(ServerAttributes.SERVER_ADDRESS, host), - equalTo(ServerAttributes.SERVER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_PORT, port), - equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, ip) + equalTo(DB_SYSTEM, "redis"), + equalTo(DB_STATEMENT, statement), + equalTo(DB_OPERATION, operation), + equalTo(DB_REDIS_DATABASE_INDEX, 1), + equalTo(SERVER_ADDRESS, host), + equalTo(SERVER_PORT, port), + equalTo(NETWORK_PEER_PORT, port), + equalTo(NETWORK_PEER_ADDRESS, ip) }; } } diff --git a/instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientTest.java b/instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientTest.java index c870b6b87230..7b8a6d3de97a 100644 --- a/instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientTest.java +++ b/instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientTest.java @@ -12,6 +12,11 @@ import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SQL_TABLE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_USER; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; @@ -19,7 +24,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.TraceAssert; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import io.vertx.core.Vertx; import io.vertx.pgclient.PgConnectOptions; import io.vertx.pgclient.PgException; @@ -134,11 +138,11 @@ void testSimpleSelect() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_NAME, DB), - equalTo(DbIncubatingAttributes.DB_USER, USER_DB), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "select * from test"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "test"), + equalTo(DB_NAME, DB), + equalTo(DB_USER, USER_DB), + equalTo(DB_STATEMENT, "select * from test"), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> @@ -190,9 +194,9 @@ void testInvalidQuery() throws Exception { EXCEPTION_STACKTRACE, val -> val.isInstanceOf(String.class)))) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_NAME, DB), - equalTo(DbIncubatingAttributes.DB_USER, USER_DB), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "invalid"), + equalTo(DB_NAME, DB), + equalTo(DB_USER, USER_DB), + equalTo(DB_STATEMENT, "invalid"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> @@ -224,13 +228,11 @@ private static void assertPreparedSelect() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_NAME, DB), - equalTo(DbIncubatingAttributes.DB_USER, USER_DB), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "select * from test where id = $1"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "test"), + equalTo(DB_NAME, DB), + equalTo(DB_USER, USER_DB), + equalTo(DB_STATEMENT, "select * from test where id = $1"), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)))); } @@ -256,13 +258,11 @@ void testBatch() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_NAME, DB), - equalTo(DbIncubatingAttributes.DB_USER, USER_DB), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "insert into test values ($1, $2) returning *"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "INSERT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "test"), + equalTo(DB_NAME, DB), + equalTo(DB_USER, USER_DB), + equalTo(DB_STATEMENT, "insert into test values ($1, $2) returning *"), + equalTo(DB_OPERATION, "INSERT"), + equalTo(DB_SQL_TABLE, "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)))); } @@ -344,11 +344,11 @@ void testManyQueries() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_NAME, DB), - equalTo(DbIncubatingAttributes.DB_USER, USER_DB), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "select * from test"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "test"), + equalTo(DB_NAME, DB), + equalTo(DB_USER, USER_DB), + equalTo(DB_STATEMENT, "select * from test"), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> @@ -409,13 +409,11 @@ void testConcurrency() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DbIncubatingAttributes.DB_NAME, DB), - equalTo(DbIncubatingAttributes.DB_USER, USER_DB), - equalTo( - DbIncubatingAttributes.DB_STATEMENT, - "select * from test where id = $1"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT"), - equalTo(DbIncubatingAttributes.DB_SQL_TABLE, "test"), + equalTo(DB_NAME, DB), + equalTo(DB_USER, USER_DB), + equalTo(DB_STATEMENT, "select * from test where id = $1"), + equalTo(DB_OPERATION, "SELECT"), + equalTo(DB_SQL_TABLE, "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> From a0abd638af8c76f415ff704f64975dc1c8e2e4e4 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 6 Nov 2024 10:23:03 -0800 Subject: [PATCH 05/40] Fix the build (#12579) --- .../instrumentation/resources/JarServiceNameDetectorTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java index a2d785bd6eb8..36ff088695bb 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/JarServiceNameDetectorTest.java @@ -82,9 +82,7 @@ void createResource_processHandleJarExtraFlag() { Resource resource = serviceNameProvider.createResource(config); - assertThat(resource.getAttributes()) - .hasSize(1) - .containsEntry(ServiceAttributes.SERVICE_NAME, "my-service"); + assertThat(resource.getAttributes()).hasSize(1).containsEntry(SERVICE_NAME, "my-service"); } @Test From 6a9654d2ce68e1c2cbdcfc5ecbb286a09fdc7f37 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 6 Nov 2024 21:14:21 +0200 Subject: [PATCH 06/40] Unify aws lambda flush handling (#12576) Co-authored-by: Trask Stalnaker --- .../aws-lambda-core-1.0/javaagent/README.md | 5 +++ .../v1_0/AwsLambdaInstrumentationHelper.java | 13 ++++++++ ...wsLambdaRequestHandlerInstrumentation.java | 3 +- .../aws-lambda-core-1.0/library/README.md | 2 +- .../aws-lambda-events-2.2/javaagent/README.md | 5 +++ .../v2_2/AwsLambdaInstrumentationHelper.java | 33 ++++++++++++------- ...wsLambdaRequestHandlerInstrumentation.java | 3 +- .../aws-lambda-events-2.2/library/README.md | 2 +- .../bootstrap/OpenTelemetrySdkAccess.java | 10 ++++-- 9 files changed, 58 insertions(+), 18 deletions(-) create mode 100644 instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/README.md create mode 100644 instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/README.md diff --git a/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/README.md b/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/README.md new file mode 100644 index 000000000000..94f6359eaf28 --- /dev/null +++ b/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/README.md @@ -0,0 +1,5 @@ +# Settings for the AWS Lambda Instrumentation + +| System property | Type | Default | Description | +|-------------------------------------------------|---------|---------|--------------------------------| +| `otel.instrumentation.aws-lambda.flush-timeout` | Integer | 10000 | Flush timeout in milliseconds. | diff --git a/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaInstrumentationHelper.java b/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaInstrumentationHelper.java index 48a828463707..bc37e29f6bc8 100644 --- a/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaInstrumentationHelper.java +++ b/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaInstrumentationHelper.java @@ -8,15 +8,28 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.AwsLambdaFunctionInstrumenter; import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.AwsLambdaFunctionInstrumenterFactory; +import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.WrapperConfiguration; +import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; +import java.time.Duration; public final class AwsLambdaInstrumentationHelper { private static final AwsLambdaFunctionInstrumenter FUNCTION_INSTRUMENTER = AwsLambdaFunctionInstrumenterFactory.createInstrumenter(GlobalOpenTelemetry.get()); + private static final Duration FLUSH_TIMEOUT = + Duration.ofMillis( + AgentInstrumentationConfig.get() + .getLong( + "otel.instrumentation.aws-lambda.flush-timeout", + WrapperConfiguration.OTEL_LAMBDA_FLUSH_TIMEOUT_DEFAULT.toMillis())); public static AwsLambdaFunctionInstrumenter functionInstrumenter() { return FUNCTION_INSTRUMENTER; } + public static Duration flushTimeout() { + return FLUSH_TIMEOUT; + } + private AwsLambdaInstrumentationHelper() {} } diff --git a/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaRequestHandlerInstrumentation.java b/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaRequestHandlerInstrumentation.java index dfc70b368fc4..93071e04d25e 100644 --- a/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaRequestHandlerInstrumentation.java +++ b/instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaRequestHandlerInstrumentation.java @@ -7,6 +7,7 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; +import static io.opentelemetry.javaagent.instrumentation.awslambdacore.v1_0.AwsLambdaInstrumentationHelper.flushTimeout; import static io.opentelemetry.javaagent.instrumentation.awslambdacore.v1_0.AwsLambdaInstrumentationHelper.functionInstrumenter; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -90,7 +91,7 @@ public static void stopSpan( functionInstrumenter().end(functionContext, input, null, throwable); } - OpenTelemetrySdkAccess.forceFlush(1, TimeUnit.SECONDS); + OpenTelemetrySdkAccess.forceFlush(flushTimeout().toNanos(), TimeUnit.NANOSECONDS); } } } diff --git a/instrumentation/aws-lambda/aws-lambda-core-1.0/library/README.md b/instrumentation/aws-lambda/aws-lambda-core-1.0/library/README.md index 932bb41978ea..0af6179dd320 100644 --- a/instrumentation/aws-lambda/aws-lambda-core-1.0/library/README.md +++ b/instrumentation/aws-lambda/aws-lambda-core-1.0/library/README.md @@ -7,7 +7,7 @@ This package contains libraries to help instrument AWS lambda functions in your To use the instrumentation, configure `OTEL_INSTRUMENTATION_AWS_LAMBDA_HANDLER` env property to your lambda handler method in following format `package.ClassName::methodName` and use one of wrappers as your lambda `Handler`. -In order to configure a span flush timeout (default is set to 1 second), please configure `OTEL_INSTRUMENTATION_AWS_LAMBDA_FLUSH_TIMEOUT` env property. The value is in seconds. +In order to configure a span flush timeout (default is set to 10 seconds), please configure `OTEL_INSTRUMENTATION_AWS_LAMBDA_FLUSH_TIMEOUT` env property. The value is in milliseconds. Available wrappers: diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/README.md b/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/README.md new file mode 100644 index 000000000000..94f6359eaf28 --- /dev/null +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/README.md @@ -0,0 +1,5 @@ +# Settings for the AWS Lambda Instrumentation + +| System property | Type | Default | Description | +|-------------------------------------------------|---------|---------|--------------------------------| +| `otel.instrumentation.aws-lambda.flush-timeout` | Integer | 10000 | Flush timeout in milliseconds. | diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaInstrumentationHelper.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaInstrumentationHelper.java index d55898e75053..bf10ab374ed6 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaInstrumentationHelper.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaInstrumentationHelper.java @@ -8,30 +8,39 @@ import com.amazonaws.services.lambda.runtime.events.SQSEvent; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.AwsLambdaFunctionInstrumenter; +import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.WrapperConfiguration; import io.opentelemetry.instrumentation.awslambdaevents.v2_2.internal.AwsLambdaEventsInstrumenterFactory; import io.opentelemetry.instrumentation.awslambdaevents.v2_2.internal.AwsLambdaSqsInstrumenterFactory; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; +import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; +import java.time.Duration; public final class AwsLambdaInstrumentationHelper { - private static final io.opentelemetry.instrumentation.awslambdacore.v1_0.internal - .AwsLambdaFunctionInstrumenter - FUNCTION_INSTRUMENTER = - AwsLambdaEventsInstrumenterFactory.createInstrumenter( - GlobalOpenTelemetry.get(), AgentCommonConfig.get().getKnownHttpRequestMethods()); - - public static io.opentelemetry.instrumentation.awslambdacore.v1_0.internal - .AwsLambdaFunctionInstrumenter - functionInstrumenter() { - return FUNCTION_INSTRUMENTER; - } - + private static final AwsLambdaFunctionInstrumenter FUNCTION_INSTRUMENTER = + AwsLambdaEventsInstrumenterFactory.createInstrumenter( + GlobalOpenTelemetry.get(), AgentCommonConfig.get().getKnownHttpRequestMethods()); private static final Instrumenter MESSAGE_TRACER = AwsLambdaSqsInstrumenterFactory.forEvent(GlobalOpenTelemetry.get()); + private static final Duration FLUSH_TIMEOUT = + Duration.ofMillis( + AgentInstrumentationConfig.get() + .getLong( + "otel.instrumentation.aws-lambda.flush-timeout", + WrapperConfiguration.OTEL_LAMBDA_FLUSH_TIMEOUT_DEFAULT.toMillis())); + + public static AwsLambdaFunctionInstrumenter functionInstrumenter() { + return FUNCTION_INSTRUMENTER; + } public static Instrumenter messageInstrumenter() { return MESSAGE_TRACER; } + public static Duration flushTimeout() { + return FLUSH_TIMEOUT; + } + private AwsLambdaInstrumentationHelper() {} } diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaRequestHandlerInstrumentation.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaRequestHandlerInstrumentation.java index b8bb2663bfb1..e05925080782 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaRequestHandlerInstrumentation.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaRequestHandlerInstrumentation.java @@ -7,6 +7,7 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; +import static io.opentelemetry.javaagent.instrumentation.awslambdaevents.v2_2.AwsLambdaInstrumentationHelper.flushTimeout; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -114,7 +115,7 @@ public static void stopSpan( .end(functionContext, input, result, throwable); } - OpenTelemetrySdkAccess.forceFlush(1, TimeUnit.SECONDS); + OpenTelemetrySdkAccess.forceFlush(flushTimeout().toNanos(), TimeUnit.NANOSECONDS); } } } diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/README.md b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/README.md index 10beb9fe7299..0f33c6df923a 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/README.md +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/README.md @@ -7,7 +7,7 @@ This package contains libraries to help instrument AWS lambda functions in your To use the instrumentation, configure `OTEL_INSTRUMENTATION_AWS_LAMBDA_HANDLER` env property to your lambda handler method in following format `package.ClassName::methodName` and use one of wrappers as your lambda `Handler`. -In order to configure a span flush timeout (default is set to 1 second), please configure `OTEL_INSTRUMENTATION_AWS_LAMBDA_FLUSH_TIMEOUT` env property. The value is in seconds. +In order to configure a span flush timeout (default is set to 10 seconds), please configure `OTEL_INSTRUMENTATION_AWS_LAMBDA_FLUSH_TIMEOUT` env property. The value is in milliseconds. Available wrappers: diff --git a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/OpenTelemetrySdkAccess.java b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/OpenTelemetrySdkAccess.java index 2a966b3e665a..1dc7ce6d1cc7 100644 --- a/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/OpenTelemetrySdkAccess.java +++ b/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/OpenTelemetrySdkAccess.java @@ -22,13 +22,19 @@ public final class OpenTelemetrySdkAccess { */ public interface ForceFlusher { /** Executes force flush. */ - void run(int timeout, TimeUnit unit); + void run(long timeout, TimeUnit unit); } private static volatile ForceFlusher forceFlush; - /** Forces flushing of pending spans. */ + /** Forces flushing of pending telemetry. */ + @Deprecated public static void forceFlush(int timeout, TimeUnit unit) { + forceFlush((long) timeout, unit); + } + + /** Forces flushing of pending telemetry. */ + public static void forceFlush(long timeout, TimeUnit unit) { forceFlush.run(timeout, unit); } From fb87a8308eb296c3b6c249548faef56d422eedc1 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 6 Nov 2024 22:45:01 -0800 Subject: [PATCH 07/40] Static import RPC semconv constants in tests (#12578) --- .../apachedubbo/v2_7/AbstractDubboTest.java | 31 +- .../v2_7/AbstractDubboTraceChainTest.java | 45 ++- .../armeria/grpc/v1_14/ArmeriaGrpcTest.java | 25 +- .../AbstractSqsSuppressReceiveSpansTest.java | 46 +-- .../awssdk/v1_11/AbstractSqsTracingTest.java | 58 ++-- ...AbstractAws2ClientRecordHttpErrorTest.java | 10 +- .../v2_2/AbstractAws2SqsTracingTest.java | 52 +-- .../grpc/v1_6/AbstractGrpcStreamingTest.java | 49 ++- .../grpc/v1_6/AbstractGrpcTest.java | 296 +++++++----------- .../instrumentation/gwt/GwtTest.java | 20 +- .../instrumentation/rmi/RmiTest.java | 28 +- .../spring/aws/AwsSqsTest.java | 28 +- .../spring/rmi/v4_0/SpringRmiTest.java | 34 +- 13 files changed, 325 insertions(+), 397 deletions(-) diff --git a/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTest.java b/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTest.java index b5aac93905d6..c1051d03faff 100644 --- a/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTest.java +++ b/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTest.java @@ -13,6 +13,9 @@ import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; @@ -132,12 +135,10 @@ void testApacheDubboBase() throws ReflectiveOperationException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "org.apache.dubbo.rpc.service.GenericService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invoke"), + equalTo(RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), + equalTo(RPC_METHOD, "$invoke"), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( @@ -166,12 +167,12 @@ void testApacheDubboBase() throws ReflectiveOperationException { .hasParent(trace.getSpan(1)) .hasAttributesSatisfying( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), equalTo( - RpcIncubatingAttributes.RPC_SERVICE, + RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), + equalTo(RPC_METHOD, "hello"), satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), satisfies(NETWORK_TYPE, AbstractAssert::isNull)))); @@ -226,12 +227,10 @@ void testApacheDubboTest() .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "org.apache.dubbo.rpc.service.GenericService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invokeAsync"), + equalTo(RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), + equalTo(RPC_METHOD, "$invokeAsync"), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( @@ -260,12 +259,12 @@ void testApacheDubboTest() .hasParent(trace.getSpan(1)) .hasAttributesSatisfying( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), equalTo( - RpcIncubatingAttributes.RPC_SERVICE, + RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), + equalTo(RPC_METHOD, "hello"), satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( diff --git a/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTraceChainTest.java b/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTraceChainTest.java index a792c8e71279..f1d7a28dd75d 100644 --- a/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTraceChainTest.java +++ b/instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTraceChainTest.java @@ -13,6 +13,9 @@ import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; @@ -175,12 +178,10 @@ void testDubboChain() throws ReflectiveOperationException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "org.apache.dubbo.rpc.service.GenericService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invoke"), + equalTo(RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), + equalTo(RPC_METHOD, "$invoke"), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( @@ -209,12 +210,12 @@ void testDubboChain() throws ReflectiveOperationException { .hasParent(trace.getSpan(1)) .hasAttributesSatisfying( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), equalTo( - RpcIncubatingAttributes.RPC_SERVICE, + RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.MiddleService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), + equalTo(RPC_METHOD, "hello"), satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( @@ -230,12 +231,10 @@ void testDubboChain() throws ReflectiveOperationException { .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "org.apache.dubbo.rpc.service.GenericService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invoke"), + equalTo(RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), + equalTo(RPC_METHOD, "$invoke"), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( @@ -264,12 +263,12 @@ void testDubboChain() throws ReflectiveOperationException { .hasParent(trace.getSpan(3)) .hasAttributesSatisfying( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), equalTo( - RpcIncubatingAttributes.RPC_SERVICE, + RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), + equalTo(RPC_METHOD, "hello"), satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( @@ -346,12 +345,10 @@ void testDubboChainInJvm() throws ReflectiveOperationException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "org.apache.dubbo.rpc.service.GenericService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "$invoke"), + equalTo(RPC_SERVICE, "org.apache.dubbo.rpc.service.GenericService"), + equalTo(RPC_METHOD, "$invoke"), equalTo(SERVER_ADDRESS, "localhost"), satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( @@ -380,12 +377,12 @@ void testDubboChainInJvm() throws ReflectiveOperationException { .hasParent(trace.getSpan(1)) .hasAttributesSatisfying( equalTo( - RpcIncubatingAttributes.RPC_SYSTEM, + RPC_SYSTEM, RpcIncubatingAttributes.RpcSystemIncubatingValues.APACHE_DUBBO), equalTo( - RpcIncubatingAttributes.RPC_SERVICE, + RPC_SERVICE, "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.MiddleService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"), + equalTo(RPC_METHOD, "hello"), satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( diff --git a/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/grpc/v1_14/ArmeriaGrpcTest.java b/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/grpc/v1_14/ArmeriaGrpcTest.java index 97bb4aea78e1..275981b80849 100644 --- a/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/grpc/v1_14/ArmeriaGrpcTest.java +++ b/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/grpc/v1_14/ArmeriaGrpcTest.java @@ -8,6 +8,10 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import com.linecorp.armeria.client.grpc.GrpcClients; @@ -21,7 +25,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.semconv.incubating.MessageIncubatingAttributes; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -76,12 +79,10 @@ void grpcInstrumentation() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "127.0.0.1"), equalTo(SERVER_PORT, (long) server.httpPort())) .hasEventsSatisfyingExactly( @@ -103,12 +104,10 @@ void grpcInstrumentation() { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "127.0.0.1"), equalTo(SERVER_PORT, server.httpPort())) .hasEventsSatisfyingExactly( diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java index 8f290b779690..74ab20759001 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java @@ -18,6 +18,9 @@ import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import com.amazonaws.auth.AWSStaticCredentialsProvider; @@ -36,7 +39,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import org.elasticmq.rest.sqs.SQSRestServer; import org.elasticmq.rest.sqs.SQSRestServerBuilder; import org.junit.jupiter.api.AfterEach; @@ -108,9 +110,9 @@ void testSimpleSqsProducerConsumerServices() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "CreateQueue"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -132,9 +134,9 @@ void testSimpleSqsProducerConsumerServices() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "SendMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -162,9 +164,9 @@ void testSimpleSqsProducerConsumerServices() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -220,9 +222,9 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "CreateQueue"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -244,9 +246,9 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "SendMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -274,9 +276,9 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -315,9 +317,9 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java index 083a52a2f127..92a9e88384bd 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java @@ -20,6 +20,9 @@ import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import com.amazonaws.auth.AWSStaticCredentialsProvider; @@ -43,7 +46,6 @@ import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -142,9 +144,9 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "CreateQueue"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -165,9 +167,9 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "SendMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -209,9 +211,9 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -250,9 +252,9 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -320,9 +322,9 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "CreateQueue"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -344,9 +346,9 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "SendMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -388,9 +390,9 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -413,9 +415,9 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), @@ -448,9 +450,9 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { satisfies( AwsIncubatingAttributes.AWS_REQUEST_ID, val -> val.isInstanceOf(String.class)), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "AmazonSQS"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "AmazonSQS"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo(URL_FULL, "http://localhost:" + sqsPort), diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java index 60d015f50fed..9ab563a0c0ac 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java @@ -14,12 +14,14 @@ import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import io.opentelemetry.testing.internal.armeria.common.HttpResponse; import io.opentelemetry.testing.internal.armeria.common.HttpStatus; import io.opentelemetry.testing.internal.armeria.common.MediaType; @@ -175,9 +177,9 @@ public void testSendDynamoDbRequestWithRetries() { equalTo(HTTP_RESPONSE_STATUS_CODE, 200), equalTo( stringKey("url.full"), "http://127.0.0.1:" + server.httpPort() + "/"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, service), - equalTo(RpcIncubatingAttributes.RPC_METHOD, operation), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, service), + equalTo(RPC_METHOD, operation), equalTo(stringKey("aws.agent"), "java-aws-sdk"), equalTo(AwsIncubatingAttributes.AWS_REQUEST_ID, requestId), equalTo(stringKey("aws.table.name"), "sometable"), diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java index e61bd5ab7da0..e8085e14eccf 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java @@ -19,6 +19,9 @@ import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.Attributes; @@ -30,7 +33,6 @@ import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import io.opentelemetry.testing.internal.armeria.internal.shaded.guava.collect.ImmutableList; import java.net.URI; import java.net.URISyntaxException; @@ -183,9 +185,9 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { .isEqualTo( "00000000-0000-0000-0000-000000000000"), v -> assertThat(v).isEqualTo("UNKNOWN"))), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "CreateQueue"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Sqs"), + equalTo(RPC_METHOD, "CreateQueue"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( @@ -212,9 +214,9 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { .isEqualTo( "00000000-0000-0000-0000-000000000000"), v -> assertThat(v).isEqualTo("UNKNOWN"))), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Sqs"), + equalTo(RPC_METHOD, "SendMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( @@ -272,9 +274,9 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { .isEqualTo( "00000000-0000-0000-0000-000000000000"), v -> assertThat(v).isEqualTo("UNKNOWN"))), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Sqs"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( @@ -290,9 +292,9 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { new ArrayList<>( Arrays.asList( equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Sqs"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( @@ -330,9 +332,9 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { new ArrayList<>( Arrays.asList( equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Sqs"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( @@ -505,9 +507,9 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException { .isEqualTo( "00000000-0000-0000-0000-000000000000"), v -> assertThat(v.trim()).isEqualTo("UNKNOWN"))), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessageBatch"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Sqs"), + equalTo(RPC_METHOD, "SendMessageBatch"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies(URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), @@ -530,9 +532,9 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException { .hasTotalRecordedLinks(0) .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Sqs"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies(URL_FULL, v -> v.startsWith("http://localhost:" + sqsPort)), @@ -573,9 +575,9 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(stringKey("aws.agent"), "java-aws-sdk"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Sqs"), + equalTo(RPC_METHOD, "ReceiveMessage"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), satisfies( diff --git a/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcStreamingTest.java b/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcStreamingTest.java index e867b98134b6..21bf17544044 100644 --- a/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcStreamingTest.java +++ b/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcStreamingTest.java @@ -14,6 +14,10 @@ import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import example.GreeterGrpc; import example.Helloworld; @@ -31,7 +35,6 @@ import io.opentelemetry.instrumentation.testing.util.ThrowingRunnable; import io.opentelemetry.sdk.trace.data.EventData; import io.opentelemetry.semconv.incubating.MessageIncubatingAttributes; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.util.ArrayList; import java.util.List; import java.util.Queue; @@ -187,12 +190,10 @@ public void onCompleted() { .hasNoParent() .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "Conversation"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "Conversation"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) .satisfies( @@ -204,12 +205,10 @@ public void onCompleted() { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "Conversation"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "Conversation"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), @@ -234,15 +233,11 @@ public void onCompleted() { point -> point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), + equalTo(RPC_METHOD, "Conversation"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, - "Conversation"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value())))))); testing() .waitAndAssertMetrics( @@ -260,15 +255,11 @@ public void onCompleted() { point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), + equalTo(RPC_METHOD, "Conversation"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, - "Conversation"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value())))))); } diff --git a/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcTest.java b/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcTest.java index f76a91c26488..801a9ad82df4 100644 --- a/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcTest.java +++ b/instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcTest.java @@ -13,6 +13,10 @@ import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.params.provider.Arguments.arguments; @@ -53,7 +57,6 @@ import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.trace.data.StatusData; import io.opentelemetry.semconv.incubating.MessageIncubatingAttributes; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -139,12 +142,10 @@ public void sayHello( .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( @@ -168,12 +169,10 @@ public void sayHello( .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), @@ -210,14 +209,11 @@ public void sayHello( point -> point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value())))))); testing() .waitAndAssertMetrics( @@ -235,14 +231,11 @@ public void sayHello( point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value())))))); } @@ -302,12 +295,10 @@ public void sayHello( .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( @@ -331,12 +322,10 @@ public void sayHello( .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), @@ -377,14 +366,11 @@ public void sayHello( point -> point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value())))))); testing() .waitAndAssertMetrics( @@ -402,14 +388,11 @@ public void sayHello( point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value())))))); } @@ -477,12 +460,10 @@ public void onCompleted() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( @@ -506,12 +487,10 @@ public void onCompleted() { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), @@ -552,14 +531,11 @@ public void onCompleted() { point -> point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value())))))); testing() .waitAndAssertMetrics( @@ -577,14 +553,11 @@ public void onCompleted() { point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value())))))); } @@ -627,12 +600,10 @@ public void sayHello( .hasStatus(StatusData.error()) .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) status.getCode().value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) status.getCode().value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( @@ -649,12 +620,10 @@ public void sayHello( .hasParent(trace.getSpan(0)) .hasStatus(isServerError ? StatusData.error() : StatusData.unset()) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) status.getCode().value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) status.getCode().value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), @@ -691,14 +660,11 @@ public void sayHello( point -> point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) status.getCode().value())))))); testing() .waitAndAssertMetrics( @@ -716,14 +682,11 @@ public void sayHello( point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) status.getCode().value())))))); } @@ -774,11 +737,11 @@ public void sayHello( .hasStatus(StatusData.error()) .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.UNKNOWN.getCode().value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) @@ -796,12 +759,10 @@ public void sayHello( .hasParent(trace.getSpan(0)) .hasStatus(StatusData.error()) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.UNKNOWN.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.UNKNOWN.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), @@ -833,14 +794,11 @@ public void sayHello( point -> point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.UNKNOWN.value())))))); testing() .waitAndAssertMetrics( @@ -858,14 +816,11 @@ public void sayHello( point.hasAttributesSatisfying( equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RPC_GRPC_STATUS_CODE, (long) Status.Code.UNKNOWN.value())))))); } @@ -1017,12 +972,10 @@ public void onCompleted() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( @@ -1046,12 +999,10 @@ public void onCompleted() { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), @@ -1138,12 +1089,11 @@ public void onCompleted() { .hasStatus(StatusData.error()) .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayMultipleHello"), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayMultipleHello"), equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.CANCELLED.value()), + RPC_GRPC_STATUS_CODE, (long) Status.Code.CANCELLED.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfying( @@ -1167,12 +1117,10 @@ public void onCompleted() { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayMultipleHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.CANCELLED.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayMultipleHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.CANCELLED.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), @@ -1255,15 +1203,11 @@ public void onCompleted() { .hasNoParent() .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), + equalTo(RPC_SYSTEM, "grpc"), equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "grpc.reflection.v1alpha.ServerReflection"), - equalTo( - RpcIncubatingAttributes.RPC_METHOD, "ServerReflectionInfo"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + RPC_SERVICE, "grpc.reflection.v1alpha.ServerReflection"), + equalTo(RPC_METHOD, "ServerReflectionInfo"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( @@ -1288,14 +1232,10 @@ public void onCompleted() { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "grpc.reflection.v1alpha.ServerReflection"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ServerReflectionInfo"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "grpc.reflection.v1alpha.ServerReflection"), + equalTo(RPC_METHOD, "ServerReflectionInfo"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), @@ -1366,12 +1306,10 @@ public void sayHello( .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( addExtraClientAttributes( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, (long) server.getPort()))) .hasEventsSatisfyingExactly( @@ -1395,12 +1333,10 @@ public void sayHello( .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "grpc"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "example.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SayHello"), - equalTo( - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, - (long) Status.Code.OK.value()), + equalTo(RPC_SYSTEM, "grpc"), + equalTo(RPC_SERVICE, "example.Greeter"), + equalTo(RPC_METHOD, "SayHello"), + equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()), equalTo(SERVER_ADDRESS, "localhost"), equalTo(SERVER_PORT, server.getPort()), equalTo(NETWORK_TYPE, "ipv4"), diff --git a/instrumentation/gwt-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtTest.java b/instrumentation/gwt-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtTest.java index 711d627c3ddb..426bc25b6dbd 100644 --- a/instrumentation/gwt-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtTest.java +++ b/instrumentation/gwt-2.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtTest.java @@ -7,13 +7,15 @@ import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.io.File; import java.io.IOException; import java.net.URI; @@ -157,11 +159,9 @@ void testGwt() { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "gwt"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "test.gwt.shared.MessageService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "sendMessage")))); + equalTo(RPC_SYSTEM, "gwt"), + equalTo(RPC_SERVICE, "test.gwt.shared.MessageService"), + equalTo(RPC_METHOD, "sendMessage")))); testing.clearData(); @@ -182,11 +182,9 @@ void testGwt() { .hasParent(trace.getSpan(0)) .hasException(new IOException()) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "gwt"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "test.gwt.shared.MessageService"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "sendMessage")))); + equalTo(RPC_SYSTEM, "gwt"), + equalTo(RPC_SERVICE, "test.gwt.shared.MessageService"), + equalTo(RPC_METHOD, "sendMessage")))); driver.close(); } diff --git a/instrumentation/rmi/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rmi/RmiTest.java b/instrumentation/rmi/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rmi/RmiTest.java index 8563a15d2b4b..3ea0b017985a 100644 --- a/instrumentation/rmi/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rmi/RmiTest.java +++ b/instrumentation/rmi/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/rmi/RmiTest.java @@ -11,6 +11,9 @@ import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.assertj.core.api.Assertions.catchThrowableOfType; import io.opentelemetry.api.trace.SpanId; @@ -18,7 +21,6 @@ import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; @@ -84,17 +86,17 @@ void clientCallCreatesSpans() throws Exception { .hasKind(SpanKind.CLIENT) .hasParentSpanId(trace.get(0).getSpanId()) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "java_rmi"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "rmi.app.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello")), + equalTo(RPC_SYSTEM, "java_rmi"), + equalTo(RPC_SERVICE, "rmi.app.Greeter"), + equalTo(RPC_METHOD, "hello")), span -> assertThat(span) .hasName("rmi.app.Server/hello") .hasKind(SpanKind.SERVER) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "java_rmi"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "rmi.app.Server"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello")))); + equalTo(RPC_SYSTEM, "java_rmi"), + equalTo(RPC_SERVICE, "rmi.app.Server"), + equalTo(RPC_METHOD, "hello")))); } @Test @@ -158,9 +160,9 @@ void serviceThrownException() throws Exception { EXCEPTION_STACKTRACE, AbstractAssert::isNotNull))) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "java_rmi"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "rmi.app.Greeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "exceptional")), + equalTo(RPC_SYSTEM, "java_rmi"), + equalTo(RPC_SERVICE, "rmi.app.Greeter"), + equalTo(RPC_METHOD, "exceptional")), span -> assertThat(span) .hasName("rmi.app.Server/exceptional") @@ -178,8 +180,8 @@ void serviceThrownException() throws Exception { EXCEPTION_STACKTRACE, AbstractAssert::isNotNull))) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "java_rmi"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "rmi.app.Server"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "exceptional")))); + equalTo(RPC_SYSTEM, "java_rmi"), + equalTo(RPC_SERVICE, "rmi.app.Server"), + equalTo(RPC_METHOD, "exceptional")))); } } diff --git a/instrumentation/spring/spring-cloud-aws-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/aws/AwsSqsTest.java b/instrumentation/spring/spring-cloud-aws-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/aws/AwsSqsTest.java index cc0cc91ff260..4c35dc6776dd 100644 --- a/instrumentation/spring/spring-cloud-aws-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/aws/AwsSqsTest.java +++ b/instrumentation/spring/spring-cloud-aws-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/aws/AwsSqsTest.java @@ -17,6 +17,9 @@ import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.assertj.core.api.Assertions.assertThat; import io.awspring.cloud.sqs.operations.SqsTemplate; @@ -27,7 +30,6 @@ import io.opentelemetry.semconv.HttpAttributes; import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes; import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -90,9 +92,9 @@ void sqsListener() throws InterruptedException, ExecutionException, TimeoutExcep .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "GetQueueUrl"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_METHOD, "GetQueueUrl"), + equalTo(RPC_SERVICE, "Sqs"), equalTo( HTTP_REQUEST_METHOD, HttpAttributes.HttpRequestMethodValues.POST), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), @@ -112,9 +114,9 @@ void sqsListener() throws InterruptedException, ExecutionException, TimeoutExcep .hasKind(SpanKind.PRODUCER) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "SendMessage"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_METHOD, "SendMessage"), + equalTo(RPC_SERVICE, "Sqs"), equalTo( HTTP_REQUEST_METHOD, HttpAttributes.HttpRequestMethodValues.POST), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), @@ -145,9 +147,9 @@ void sqsListener() throws InterruptedException, ExecutionException, TimeoutExcep .hasKind(SpanKind.CONSUMER) .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "ReceiveMessage"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_METHOD, "ReceiveMessage"), + equalTo(RPC_SERVICE, "Sqs"), equalTo( HTTP_REQUEST_METHOD, HttpAttributes.HttpRequestMethodValues.POST), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), @@ -172,9 +174,9 @@ void sqsListener() throws InterruptedException, ExecutionException, TimeoutExcep .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "aws-api"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "DeleteMessageBatch"), - equalTo(RpcIncubatingAttributes.RPC_SERVICE, "Sqs"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_METHOD, "DeleteMessageBatch"), + equalTo(RPC_SERVICE, "Sqs"), equalTo( HTTP_REQUEST_METHOD, HttpAttributes.HttpRequestMethodValues.POST), equalTo(HTTP_RESPONSE_STATUS_CODE, 200), diff --git a/instrumentation/spring/spring-rmi-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/SpringRmiTest.java b/instrumentation/spring/spring-rmi-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/SpringRmiTest.java index 97b2784bab4b..4d1570932d02 100644 --- a/instrumentation/spring/spring-rmi-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/SpringRmiTest.java +++ b/instrumentation/spring/spring-rmi-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/SpringRmiTest.java @@ -10,6 +10,9 @@ import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -19,7 +22,6 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.sdk.trace.data.StatusData; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.HashMap; @@ -158,11 +160,9 @@ void clientCallCreatesSpans(TestSource testSource) throws RemoteException { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "spring_rmi"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "springrmi.app.SpringRmiGreeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"))); + equalTo(RPC_SYSTEM, "spring_rmi"), + equalTo(RPC_SERVICE, "springrmi.app.SpringRmiGreeter"), + equalTo(RPC_METHOD, "hello"))); if (testSource == TestSource.RMI) { assertions.add( span -> @@ -170,10 +170,9 @@ void clientCallCreatesSpans(TestSource testSource) throws RemoteException { .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasAttributesSatisfying( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, testSource.serverSystem), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, testSource.remoteClassName), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "hello"))); + equalTo(RPC_SYSTEM, testSource.serverSystem), + equalTo(RPC_SERVICE, testSource.remoteClassName), + equalTo(RPC_METHOD, "hello"))); } trace.hasSpansSatisfyingExactly(assertions); @@ -223,11 +222,9 @@ void throwsException(TestSource testSource) { EXCEPTION_STACKTRACE, val -> val.isInstanceOf(String.class)))) .hasAttributesSatisfying( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, "spring_rmi"), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, - "springrmi.app.SpringRmiGreeter"), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "exceptional"))); + equalTo(RPC_SYSTEM, "spring_rmi"), + equalTo(RPC_SERVICE, "springrmi.app.SpringRmiGreeter"), + equalTo(RPC_METHOD, "exceptional"))); if (testSource == TestSource.RMI) { assertions.add( span -> @@ -247,10 +244,9 @@ void throwsException(TestSource testSource) { EXCEPTION_STACKTRACE, val -> val.isInstanceOf(String.class)))) .hasAttributesSatisfying( - equalTo(RpcIncubatingAttributes.RPC_SYSTEM, testSource.serverSystem), - equalTo( - RpcIncubatingAttributes.RPC_SERVICE, testSource.remoteClassName), - equalTo(RpcIncubatingAttributes.RPC_METHOD, "exceptional"))); + equalTo(RPC_SYSTEM, testSource.serverSystem), + equalTo(RPC_SERVICE, testSource.remoteClassName), + equalTo(RPC_METHOD, "exceptional"))); } trace.hasSpansSatisfyingExactly(assertions); From c8bd230c9e76d80dbad2e19d956380318a9a9913 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 6 Nov 2024 23:29:49 -0800 Subject: [PATCH 08/40] Improve database semconv stability test formatting (#12580) --- .../src/test/java/CassandraClientTest.java | 66 +++++------------ .../v4/common/AbstractCassandraTest.java | 34 +++------ .../v4_4/AbstractCassandra44Test.java | 18 ++--- .../AbstractCouchbaseAsyncClientTest.java | 18 ++--- .../AbstractCouchbaseClientTest.java | 10 +-- .../couchbase/AbstractCouchbaseTest.java | 10 +-- .../AbstractRedissonAsyncClientTest.java | 25 +++---- .../redisson/AbstractRedissonClientTest.java | 73 ++++++++----------- .../v4_0/redis/VertxRedisClientTest.java | 4 +- .../junit/db/SemconvStabilityUtil.java | 4 +- 10 files changed, 85 insertions(+), 177 deletions(-) diff --git a/instrumentation/cassandra/cassandra-3.0/javaagent/src/test/java/CassandraClientTest.java b/instrumentation/cassandra/cassandra-3.0/javaagent/src/test/java/CassandraClientTest.java index 15b8f19c06d7..3373c0e76277 100644 --- a/instrumentation/cassandra/cassandra-3.0/javaagent/src/test/java/CassandraClientTest.java +++ b/instrumentation/cassandra/cassandra-3.0/javaagent/src/test/java/CassandraClientTest.java @@ -3,6 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; @@ -22,7 +23,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; @@ -108,9 +108,7 @@ void syncTest(Parameter parameter) { equalTo(NETWORK_PEER_ADDRESS, cassandraIp), equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - "USE " + parameter.keyspace))), + equalTo(maybeStable(DB_STATEMENT), "USE " + parameter.keyspace))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -124,18 +122,10 @@ void syncTest(Parameter parameter) { equalTo(NETWORK_PEER_ADDRESS, cassandraIp), equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_NAME), - parameter.keyspace), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - parameter.expectedStatement), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - parameter.operation), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), - parameter.table)))); + equalTo(maybeStable(DB_NAME), parameter.keyspace), + equalTo(maybeStable(DB_STATEMENT), parameter.expectedStatement), + equalTo(maybeStable(DB_OPERATION), parameter.operation), + equalTo(maybeStable(DB_CASSANDRA_TABLE), parameter.table)))); } else { testing.waitAndAssertTraces( trace -> @@ -151,15 +141,9 @@ void syncTest(Parameter parameter) { equalTo(NETWORK_PEER_ADDRESS, cassandraIp), equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - parameter.expectedStatement), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - parameter.operation), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), - parameter.table)))); + equalTo(maybeStable(DB_STATEMENT), parameter.expectedStatement), + equalTo(maybeStable(DB_OPERATION), parameter.operation), + equalTo(maybeStable(DB_CASSANDRA_TABLE), parameter.table)))); } session.close(); @@ -196,9 +180,7 @@ void asyncTest(Parameter parameter) { equalTo(NETWORK_PEER_ADDRESS, cassandraIp), equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - "USE " + parameter.keyspace))), + equalTo(maybeStable(DB_STATEMENT), "USE " + parameter.keyspace))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), @@ -213,18 +195,10 @@ void asyncTest(Parameter parameter) { equalTo(NETWORK_PEER_ADDRESS, cassandraIp), equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_NAME), - parameter.keyspace), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - parameter.expectedStatement), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - parameter.operation), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), - parameter.table)), + equalTo(maybeStable(DB_NAME), parameter.keyspace), + equalTo(maybeStable(DB_STATEMENT), parameter.expectedStatement), + equalTo(maybeStable(DB_OPERATION), parameter.operation), + equalTo(maybeStable(DB_CASSANDRA_TABLE), parameter.table)), span -> span.hasName("callbackListener") .hasKind(SpanKind.INTERNAL) @@ -245,15 +219,9 @@ void asyncTest(Parameter parameter) { equalTo(NETWORK_PEER_ADDRESS, cassandraIp), equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - parameter.expectedStatement), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - parameter.operation), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), - parameter.table)), + equalTo(maybeStable(DB_STATEMENT), parameter.expectedStatement), + equalTo(maybeStable(DB_OPERATION), parameter.operation), + equalTo(maybeStable(DB_CASSANDRA_TABLE), parameter.table)), span -> span.hasName("callbackListener") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/cassandra/cassandra-4-common/testing/src/main/java/io/opentelemetry/cassandra/v4/common/AbstractCassandraTest.java b/instrumentation/cassandra/cassandra-4-common/testing/src/main/java/io/opentelemetry/cassandra/v4/common/AbstractCassandraTest.java index 61caa713d17f..b49fb7da01ab 100644 --- a/instrumentation/cassandra/cassandra-4-common/testing/src/main/java/io/opentelemetry/cassandra/v4/common/AbstractCassandraTest.java +++ b/instrumentation/cassandra/cassandra-4-common/testing/src/main/java/io/opentelemetry/cassandra/v4/common/AbstractCassandraTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.cassandra.v4.common; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -33,7 +34,6 @@ import com.datastax.oss.driver.internal.core.config.typesafe.DefaultDriverConfigLoader; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; @@ -113,15 +113,9 @@ void syncTest(Parameter parameter) { equalTo(NETWORK_PEER_ADDRESS, cassandraIp), equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_NAME), - parameter.keyspace), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - parameter.expectedStatement), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - parameter.operation), + equalTo(maybeStable(DB_NAME), parameter.keyspace), + equalTo(maybeStable(DB_STATEMENT), parameter.expectedStatement), + equalTo(maybeStable(DB_OPERATION), parameter.operation), equalTo(DB_CASSANDRA_CONSISTENCY_LEVEL, "LOCAL_ONE"), equalTo(DB_CASSANDRA_COORDINATOR_DC, "datacenter1"), satisfies( @@ -132,9 +126,7 @@ void syncTest(Parameter parameter) { val -> val.isInstanceOf(Boolean.class)), equalTo(DB_CASSANDRA_PAGE_SIZE, 5000), equalTo(DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, 0), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), - parameter.table)))); + equalTo(maybeStable(DB_CASSANDRA_TABLE), parameter.table)))); session.close(); } @@ -175,15 +167,9 @@ void asyncTest(Parameter parameter) throws Exception { equalTo(NETWORK_PEER_ADDRESS, cassandraIp), equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_NAME), - parameter.keyspace), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - parameter.expectedStatement), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - parameter.operation), + equalTo(maybeStable(DB_NAME), parameter.keyspace), + equalTo(maybeStable(DB_STATEMENT), parameter.expectedStatement), + equalTo(maybeStable(DB_OPERATION), parameter.operation), equalTo(DB_CASSANDRA_CONSISTENCY_LEVEL, "LOCAL_ONE"), equalTo(DB_CASSANDRA_COORDINATOR_DC, "datacenter1"), satisfies( @@ -194,9 +180,7 @@ void asyncTest(Parameter parameter) throws Exception { val -> val.isInstanceOf(Boolean.class)), equalTo(DB_CASSANDRA_PAGE_SIZE, 5000), equalTo(DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, 0), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), - parameter.table)), + equalTo(maybeStable(DB_CASSANDRA_TABLE), parameter.table)), span -> span.hasName("child") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/cassandra/cassandra-4.4/testing/src/main/java/io/opentelemetry/testing/cassandra/v4_4/AbstractCassandra44Test.java b/instrumentation/cassandra/cassandra-4.4/testing/src/main/java/io/opentelemetry/testing/cassandra/v4_4/AbstractCassandra44Test.java index 1e393b692abf..a5319f49df4e 100644 --- a/instrumentation/cassandra/cassandra-4.4/testing/src/main/java/io/opentelemetry/testing/cassandra/v4_4/AbstractCassandra44Test.java +++ b/instrumentation/cassandra/cassandra-4.4/testing/src/main/java/io/opentelemetry/testing/cassandra/v4_4/AbstractCassandra44Test.java @@ -5,6 +5,7 @@ package io.opentelemetry.testing.cassandra.v4_4; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -29,7 +30,6 @@ import com.datastax.oss.driver.api.core.CqlSession; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.cassandra.v4.common.AbstractCassandraTest; -import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -73,15 +73,9 @@ void reactiveTest(Parameter parameter) { equalTo(NETWORK_PEER_ADDRESS, cassandraIp), equalTo(NETWORK_PEER_PORT, cassandraPort), equalTo(DB_SYSTEM, "cassandra"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_NAME), - parameter.keyspace), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - parameter.expectedStatement), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - parameter.operation), + equalTo(maybeStable(DB_NAME), parameter.keyspace), + equalTo(maybeStable(DB_STATEMENT), parameter.expectedStatement), + equalTo(maybeStable(DB_OPERATION), parameter.operation), equalTo(DB_CASSANDRA_CONSISTENCY_LEVEL, "LOCAL_ONE"), equalTo(DB_CASSANDRA_COORDINATOR_DC, "datacenter1"), satisfies( @@ -92,9 +86,7 @@ void reactiveTest(Parameter parameter) { val -> val.isInstanceOf(Boolean.class)), equalTo(DB_CASSANDRA_PAGE_SIZE, 5000), equalTo(DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, 0), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_CASSANDRA_TABLE), - parameter.table)), + equalTo(maybeStable(DB_CASSANDRA_TABLE), parameter.table)), span -> span.hasName("child") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseAsyncClientTest.java b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseAsyncClientTest.java index 4962dca118fe..0c6116f2bace 100644 --- a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseAsyncClientTest.java +++ b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseAsyncClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.couchbase; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; @@ -23,7 +24,6 @@ import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.Collections; import java.util.concurrent.CompletableFuture; @@ -93,9 +93,7 @@ void hasBucket(BucketSettings bucketSettings) equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - "Cluster.openBucket")), + equalTo(maybeStable(DB_OPERATION), "Cluster.openBucket")), span -> assertCouchbaseSpan(span, "ClusterManager.hasBucket") .hasParent(trace.getSpan(0)))); @@ -136,9 +134,7 @@ void upsert(BucketSettings bucketSettings) equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - "Cluster.openBucket")), + equalTo(maybeStable(DB_OPERATION), "Cluster.openBucket")), span -> assertCouchbaseSpan(span, "Bucket.upsert", bucketSettings.name()) .hasParent(trace.getSpan(1)))); @@ -186,9 +182,7 @@ void upsertAndGet(BucketSettings bucketSettings) equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - "Cluster.openBucket")), + equalTo(maybeStable(DB_OPERATION), "Cluster.openBucket")), span -> assertCouchbaseSpan(span, "Bucket.upsert", bucketSettings.name()) .hasParent(trace.getSpan(1)), @@ -233,9 +227,7 @@ void query() throws ExecutionException, InterruptedException, TimeoutException { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - "Cluster.openBucket")), + equalTo(maybeStable(DB_OPERATION), "Cluster.openBucket")), span -> assertCouchbaseSpan( span, diff --git a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseClientTest.java b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseClientTest.java index 28995e26ec93..2c1db076ce39 100644 --- a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseClientTest.java +++ b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.couchbase; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; @@ -24,7 +25,6 @@ import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.util.Collections; import java.util.concurrent.atomic.AtomicReference; @@ -112,9 +112,7 @@ void upsertAndGet(BucketSettings bucketSettings) { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - "Cluster.openBucket"))), + equalTo(maybeStable(DB_OPERATION), "Cluster.openBucket"))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("someTrace").hasKind(SpanKind.INTERNAL).hasNoParent(), @@ -150,9 +148,7 @@ void query() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_OPERATION), - "Cluster.openBucket"))), + equalTo(maybeStable(DB_OPERATION), "Cluster.openBucket"))), trace -> trace.hasSpansSatisfyingExactly( span -> diff --git a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseTest.java b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseTest.java index 62a5164259ea..719f8d037d91 100644 --- a/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseTest.java +++ b/instrumentation/couchbase/couchbase-common/testing/src/main/java/io/opentelemetry/instrumentation/couchbase/AbstractCouchbaseTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.couchbase; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; @@ -23,7 +24,6 @@ import com.couchbase.mock.httpio.HttpServer; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.test.utils.PortUtils; -import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; @@ -127,15 +127,13 @@ protected SpanDataAssert assertCouchbaseSpan( List assertions = new ArrayList<>(); assertions.add(equalTo(DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.COUCHBASE)); if (operation != null) { - assertions.add(equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), operation)); + assertions.add(equalTo(maybeStable(DB_OPERATION), operation)); } if (bucketName != null) { - assertions.add(equalTo(SemconvStabilityUtil.getAttributeKey(DB_NAME), bucketName)); + assertions.add(equalTo(maybeStable(DB_NAME), bucketName)); } if (statement != null) { - assertions.add( - satisfies( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), s -> s.startsWith(statement))); + assertions.add(satisfies(maybeStable(DB_STATEMENT), s -> s.startsWith(statement))); } assertions.addAll(couchbaseAttributes()); diff --git a/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonAsyncClientTest.java b/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonAsyncClientTest.java index d73414841ca0..219884a0415f 100644 --- a/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonAsyncClientTest.java +++ b/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonAsyncClientTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanKind; import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -22,7 +23,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; @@ -125,9 +125,8 @@ void futureSet() throws ExecutionException, InterruptedException, TimeoutExcepti equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SET foo ?"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SET")))); + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET")))); } @Test @@ -159,9 +158,8 @@ void futureWhenComplete() throws ExecutionException, InterruptedException, Timeo equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SADD set1 ?"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SADD")) + equalTo(maybeStable(DB_STATEMENT), "SADD set1 ?"), + equalTo(maybeStable(DB_OPERATION), "SADD")) .hasParent(trace.getSpan(0)), span -> span.hasName("callback").hasKind(INTERNAL).hasParent(trace.getSpan(0)))); } @@ -234,9 +232,7 @@ void atomicBatchCommand() throws ExecutionException, InterruptedException, Timeo equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - "MULTI;SET batch1 ?")) + equalTo(maybeStable(DB_STATEMENT), "MULTI;SET batch1 ?")) .hasParent(trace.getSpan(0)), span -> span.hasName("SET") @@ -246,9 +242,8 @@ void atomicBatchCommand() throws ExecutionException, InterruptedException, Timeo equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SET batch2 ?"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SET")) + equalTo(maybeStable(DB_STATEMENT), "SET batch2 ?"), + equalTo(maybeStable(DB_OPERATION), "SET")) .hasParent(trace.getSpan(0)), span -> span.hasName("EXEC") @@ -258,8 +253,8 @@ void atomicBatchCommand() throws ExecutionException, InterruptedException, Timeo equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "EXEC"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EXEC")) + equalTo(maybeStable(DB_STATEMENT), "EXEC"), + equalTo(maybeStable(DB_OPERATION), "EXEC")) .hasParent(trace.getSpan(0)), span -> span.hasName("callback").hasKind(INTERNAL).hasParent(trace.getSpan(0)))); } diff --git a/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonClientTest.java b/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonClientTest.java index b0cf6e659bf7..81360d8edb1c 100644 --- a/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonClientTest.java +++ b/instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonClientTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanKind; import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -22,7 +23,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil; import io.opentelemetry.sdk.testing.assertj.TraceAssert; import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; @@ -128,9 +128,8 @@ void stringCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SET foo ?"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SET"))), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -141,8 +140,8 @@ void stringCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "GET foo"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "GET")))); + equalTo(maybeStable(DB_STATEMENT), "GET foo"), + equalTo(maybeStable(DB_OPERATION), "GET")))); } @Test @@ -167,9 +166,7 @@ void batchCommand() equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - "SET batch1 ?;SET batch2 ?")))); + equalTo(maybeStable(DB_STATEMENT), "SET batch1 ?;SET batch2 ?")))); } private static void invokeExecute(RBatch batch) @@ -209,9 +206,7 @@ void atomicBatchCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - "MULTI;SET batch1 ?")) + equalTo(maybeStable(DB_STATEMENT), "MULTI;SET batch1 ?")) .hasParent(trace.getSpan(0)), span -> span.hasName("SET") @@ -221,9 +216,8 @@ void atomicBatchCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SET batch2 ?"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SET")) + equalTo(maybeStable(DB_STATEMENT), "SET batch2 ?"), + equalTo(maybeStable(DB_OPERATION), "SET")) .hasParent(trace.getSpan(0)), span -> span.hasName("EXEC") @@ -233,8 +227,8 @@ void atomicBatchCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "EXEC"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EXEC")) + equalTo(maybeStable(DB_STATEMENT), "EXEC"), + equalTo(maybeStable(DB_OPERATION), "EXEC")) .hasParent(trace.getSpan(0)))); } @@ -255,10 +249,8 @@ void listCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - "RPUSH list1 ?"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "RPUSH")) + equalTo(maybeStable(DB_STATEMENT), "RPUSH list1 ?"), + equalTo(maybeStable(DB_OPERATION), "RPUSH")) .hasNoParent())); } @@ -283,9 +275,9 @@ void hashCommand() { equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), + maybeStable(DB_STATEMENT), String.format("EVAL %s 1 map1 ? ?", script)), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EVAL"))), + equalTo(maybeStable(DB_OPERATION), "EVAL"))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -296,10 +288,8 @@ void hashCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - "HGET map1 key1"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "HGET")))); + equalTo(maybeStable(DB_STATEMENT), "HGET map1 key1"), + equalTo(maybeStable(DB_OPERATION), "HGET")))); } @Test @@ -319,9 +309,8 @@ void setCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), "SADD set1 ?"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "SADD")))); + equalTo(maybeStable(DB_STATEMENT), "SADD set1 ?"), + equalTo(maybeStable(DB_OPERATION), "SADD")))); } @Test @@ -348,10 +337,8 @@ void sortedSetCommand() equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - "ZADD sort_set1 ? ? ? ? ? ?"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "ZADD")))); + equalTo(maybeStable(DB_STATEMENT), "ZADD sort_set1 ? ? ? ? ? ?"), + equalTo(maybeStable(DB_OPERATION), "ZADD")))); } private static void invokeAddAll(RScoredSortedSet object, Map arg) @@ -376,10 +363,8 @@ void atomicLongCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), - "INCR AtomicLong"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "INCR")))); + equalTo(maybeStable(DB_STATEMENT), "INCR AtomicLong"), + equalTo(maybeStable(DB_OPERATION), "INCR")))); } @Test @@ -404,9 +389,9 @@ void lockCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EVAL"), + equalTo(maybeStable(DB_OPERATION), "EVAL"), satisfies( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), + maybeStable(DB_STATEMENT), stringAssert -> stringAssert.startsWith("EVAL"))))); traceAsserts.add( trace -> @@ -419,9 +404,9 @@ void lockCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "EVAL"), + equalTo(maybeStable(DB_OPERATION), "EVAL"), satisfies( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), + maybeStable(DB_STATEMENT), stringAssert -> stringAssert.startsWith("EVAL"))))); if (lockHas3Traces()) { traceAsserts.add( @@ -435,9 +420,9 @@ void lockCommand() { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_SYSTEM, "redis"), - equalTo(SemconvStabilityUtil.getAttributeKey(DB_OPERATION), "DEL"), + equalTo(maybeStable(DB_OPERATION), "DEL"), satisfies( - SemconvStabilityUtil.getAttributeKey(DB_STATEMENT), + maybeStable(DB_STATEMENT), stringAssert -> stringAssert.startsWith("DEL"))))); } diff --git a/instrumentation/vertx/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/redis/VertxRedisClientTest.java b/instrumentation/vertx/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/redis/VertxRedisClientTest.java index 945e8f523828..b9fe12edad39 100644 --- a/instrumentation/vertx/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/redis/VertxRedisClientTest.java +++ b/instrumentation/vertx/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/redis/VertxRedisClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.vertx.v4_0.redis; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; @@ -18,7 +19,6 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.instrumentation.api.internal.SemconvStability; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; @@ -209,7 +209,7 @@ void commandWithNoArguments() throws Exception { @SuppressWarnings("deprecation") // using deprecated semconv private static AttributeAssertion[] redisSpanAttributes(String operation, String statement) { // not testing database/dup - if (SemconvStability.emitStableDatabaseSemconv()) { + if (emitStableDatabaseSemconv()) { return new AttributeAssertion[] { equalTo(DB_SYSTEM, "redis"), equalTo(AttributeKey.stringKey("db.query.text"), statement), diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/db/SemconvStabilityUtil.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/db/SemconvStabilityUtil.java index 06d25bd9ec79..282bc92042c9 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/db/SemconvStabilityUtil.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/db/SemconvStabilityUtil.java @@ -6,7 +6,6 @@ package io.opentelemetry.instrumentation.testing.junit.db; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CASSANDRA_TABLE; -import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_COSMOSDB_CONTAINER; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_MONGODB_COLLECTION; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; @@ -39,14 +38,13 @@ private static Map, AttributeKey> buildMap() { map.put(DB_SQL_TABLE, DB_COLLECTION_NAME); map.put(DB_CASSANDRA_TABLE, DB_COLLECTION_NAME); map.put(DB_MONGODB_COLLECTION, DB_COLLECTION_NAME); - map.put(DB_COSMOSDB_CONTAINER, DB_COLLECTION_NAME); return map; } private SemconvStabilityUtil() {} @SuppressWarnings("unchecked") - public static AttributeKey getAttributeKey(AttributeKey oldKey) { + public static AttributeKey maybeStable(AttributeKey oldKey) { // not testing database/dup if (SemconvStability.emitStableDatabaseSemconv()) { return (AttributeKey) oldToNewMap.get(oldKey); From 59e3318d9d833eb090cceae0563d36e6aa6e8d8f Mon Sep 17 00:00:00 2001 From: Lumian Zhang <84360903+Cirilla-zmh@users.noreply.github.com> Date: Thu, 7 Nov 2024 23:59:07 +0800 Subject: [PATCH 09/40] fix: Kafka initialization occasionally failed due to concurrent injection of OpenTelemetryMetricsReporter (to #12538) (#12583) --- .../KafkaMetricsConsumerInstrumentation.java | 22 +++++++++++++++---- .../KafkaMetricsProducerInstrumentation.java | 22 +++++++++++++++---- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/metrics/KafkaMetricsConsumerInstrumentation.java b/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/metrics/KafkaMetricsConsumerInstrumentation.java index c9775596465d..45c0d6078d4a 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/metrics/KafkaMetricsConsumerInstrumentation.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/metrics/KafkaMetricsConsumerInstrumentation.java @@ -42,10 +42,24 @@ public static class ConstructorMapAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static void onEnter( @Advice.Argument(value = 0, readOnly = false) Map config) { - // ensure config is a mutable map - if (config.getClass() != HashMap.class) { - config = new HashMap<>(config); - } + + // In versions of spring-kafka prior to 2.5.0.RC1, when the `ProducerPerThread` + // of DefaultKafkaProducerFactory is set to true, the `config` object entering + // this advice block can be shared across multiple threads. Directly modifying + // `config` could lead to unexpected item loss due to race conditions, where + // some entries might be lost as different threads attempt to modify it + // concurrently. + // + // To prevent such issues, a copy of the `config` should be created here before + // any modifications are made. This ensures that each thread operates on its + // own independent copy of the configuration, thereby eliminating the risk of + // configurations corruption. + // + // More detailed information: + // https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/12538 + + // ensure config is a mutable map and avoid concurrency conflicts + config = new HashMap<>(config); enhanceConfig(config); } } diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/metrics/KafkaMetricsProducerInstrumentation.java b/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/metrics/KafkaMetricsProducerInstrumentation.java index 821bb8443a1d..3c199255522f 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/metrics/KafkaMetricsProducerInstrumentation.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/metrics/KafkaMetricsProducerInstrumentation.java @@ -42,10 +42,24 @@ public static class ConstructorMapAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static void onEnter( @Advice.Argument(value = 0, readOnly = false) Map config) { - // ensure config is a mutable map - if (config.getClass() != HashMap.class) { - config = new HashMap<>(config); - } + + // In versions of spring-kafka prior to 2.5.0.RC1, when the `ProducerPerThread` + // of DefaultKafkaProducerFactory is set to true, the `config` object entering + // this advice block can be shared across multiple threads. Directly modifying + // `config` could lead to unexpected item loss due to race conditions, where + // some entries might be lost as different threads attempt to modify it + // concurrently. + // + // To prevent such issues, a copy of the `config` should be created here before + // any modifications are made. This ensures that each thread operates on its + // own independent copy of the configuration, thereby eliminating the risk of + // configurations corruption. + // + // More detailed information: + // https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/12538 + + // ensure config is a mutable map and avoid concurrency conflicts + config = new HashMap<>(config); enhanceConfig(config); } } From 0f47c849b8d34b38b61d047cfa375e9e80215340 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 7 Nov 2024 22:56:55 +0200 Subject: [PATCH 10/40] Enable transform safe logging for tests in the javaagent module (#12586) --- javaagent/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/javaagent/build.gradle.kts b/javaagent/build.gradle.kts index 2fc622d2b38e..e2437327b834 100644 --- a/javaagent/build.gradle.kts +++ b/javaagent/build.gradle.kts @@ -421,5 +421,6 @@ class JavaagentProvider( ) : CommandLineArgumentProvider { override fun asArguments(): Iterable = listOf( "-javaagent:${file(agentJar).absolutePath}", + "-Dotel.javaagent.testing.transform-safe-logging.enabled=true" ) } From 3c48d8525027f2e6d5f1d367e3486378aaac07b5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 21:33:57 +0000 Subject: [PATCH 11/40] fix(deps): update dependency checkstyle to v10.20.1 (#12587) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- conventions/src/main/kotlin/otel.java-conventions.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conventions/src/main/kotlin/otel.java-conventions.gradle.kts b/conventions/src/main/kotlin/otel.java-conventions.gradle.kts index 3f20f0ed8216..6d89c1ba1966 100644 --- a/conventions/src/main/kotlin/otel.java-conventions.gradle.kts +++ b/conventions/src/main/kotlin/otel.java-conventions.gradle.kts @@ -434,7 +434,7 @@ codenarc { checkstyle { configFile = rootProject.file("buildscripts/checkstyle.xml") // this version should match the version of google_checks.xml used as basis for above configuration - toolVersion = "10.20.0" + toolVersion = "10.20.1" maxWarnings = 0 } From 1b8466a6e50001c3471d81074e8228e2e32ec02c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 02:29:11 +0000 Subject: [PATCH 12/40] fix(deps): update dependency me.champeau.gradle:japicmp-gradle-plugin to v0.4.5 (#12589) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- conventions/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conventions/build.gradle.kts b/conventions/build.gradle.kts index 894632110425..8aff20a27861 100644 --- a/conventions/build.gradle.kts +++ b/conventions/build.gradle.kts @@ -69,7 +69,7 @@ dependencies { implementation("me.champeau.jmh:jmh-gradle-plugin:0.7.2") implementation("net.ltgt.gradle:gradle-errorprone-plugin:4.1.0") implementation("net.ltgt.gradle:gradle-nullaway-plugin:2.1.0") - implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.4") + implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.5") testImplementation(enforcedPlatform("org.junit:junit-bom:5.11.3")) testImplementation("org.junit.jupiter:junit-jupiter-api") From 0c2d5041c527853079236a513c05aa5c2fe37b0f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 07:52:24 +0200 Subject: [PATCH 13/40] fix(deps): update groovy monorepo to v4.0.24 (patch) (#12590) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- dependencyManagement/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index 56ecaa54ae01..ebd8b0530bc3 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -13,7 +13,7 @@ val otelContribVersion = "1.40.0-alpha" val otelSdkAlphaVersion = otelSdkVersion.replaceFirst("(-SNAPSHOT)?$".toRegex(), "-alpha$1") // Need both BOM and groovy jars -val groovyVersion = "4.0.23" +val groovyVersion = "4.0.24" // We don't force libraries we instrument to new versions since we compile and test against specific // old baseline versions but we do try to force those libraries' transitive dependencies to new From 51b4051a6700539b94d9f50a98a60cd79913dea9 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 8 Nov 2024 07:53:48 +0200 Subject: [PATCH 14/40] Fix warning about setting VirtualField supplier twice (#12584) --- .../opentelemetry/javaagent/tooling/AgentInstaller.java | 2 +- .../field/VirtualFieldImplementationInstallerFactory.java | 8 +++++++- .../instrumentation/InstrumentationModuleInstaller.java | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java index 8cf043d0e4d3..4d13036dab24 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java @@ -224,7 +224,7 @@ private static void installEarlyInstrumentation( (builder, typeDescription, classLoader, module, protectionDomain) -> builder); VirtualFieldImplementationInstallerFactory virtualFieldInstallerFactory = - new VirtualFieldImplementationInstallerFactory(); + VirtualFieldImplementationInstallerFactory.getInstance(); for (EarlyInstrumentationModule earlyInstrumentationModule : loadOrdered(EarlyInstrumentationModule.class, Utils.getExtensionsClassLoader())) { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldImplementationInstallerFactory.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldImplementationInstallerFactory.java index 3da93ab694c2..c83aa3797843 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldImplementationInstallerFactory.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldImplementationInstallerFactory.java @@ -18,11 +18,17 @@ public final class VirtualFieldImplementationInstallerFactory { private static final TransformSafeLogger logger = TransformSafeLogger.getLogger(VirtualFieldImplementationInstallerFactory.class); + private static final VirtualFieldImplementationInstallerFactory INSTANCE = + new VirtualFieldImplementationInstallerFactory(); - public VirtualFieldImplementationInstallerFactory() { + private VirtualFieldImplementationInstallerFactory() { RuntimeVirtualFieldSupplier.set(new RuntimeFieldBasedImplementationSupplier()); } + public static VirtualFieldImplementationInstallerFactory getInstance() { + return INSTANCE; + } + public VirtualFieldImplementationInstaller create(InstrumentationModule instrumentationModule) { VirtualFieldMappingsBuilderImpl builder = new VirtualFieldMappingsBuilderImpl(); if (instrumentationModule instanceof InstrumentationModuleMuzzle) { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java index b4ea4b948639..09bc519812a9 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java @@ -54,7 +54,7 @@ public final class InstrumentationModuleInstaller { private final Instrumentation instrumentation; private final VirtualFieldImplementationInstallerFactory virtualFieldInstallerFactory = - new VirtualFieldImplementationInstallerFactory(); + VirtualFieldImplementationInstallerFactory.getInstance(); public InstrumentationModuleInstaller(Instrumentation instrumentation) { this.instrumentation = instrumentation; From 41405652529ddd24338a9337b06b16d9d9875a6d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 12:26:09 +0200 Subject: [PATCH 15/40] fix(deps): update dependency org.codehaus.groovy:groovy-bom to v3.0.23 (#12591) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- conventions/src/main/kotlin/otel.java-conventions.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conventions/src/main/kotlin/otel.java-conventions.gradle.kts b/conventions/src/main/kotlin/otel.java-conventions.gradle.kts index 6d89c1ba1966..299c5a2981fd 100644 --- a/conventions/src/main/kotlin/otel.java-conventions.gradle.kts +++ b/conventions/src/main/kotlin/otel.java-conventions.gradle.kts @@ -161,7 +161,7 @@ dependencies { compileOnly("com.google.errorprone:error_prone_annotations") codenarc("org.codenarc:CodeNarc:3.5.0") - codenarc(platform("org.codehaus.groovy:groovy-bom:3.0.22")) + codenarc(platform("org.codehaus.groovy:groovy-bom:3.0.23")) modules { // checkstyle uses the very old google-collections which causes Java 9 module conflict with From b8c20a330337ea853959a36180913e21d625af7e Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 8 Nov 2024 16:47:11 +0200 Subject: [PATCH 16/40] Correct javadoc (#12593) --- .../appender/v1_0/internal/LoggingEventMapper.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/instrumentation/logback/logback-appender-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/appender/v1_0/internal/LoggingEventMapper.java b/instrumentation/logback/logback-appender-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/appender/v1_0/internal/LoggingEventMapper.java index 8f0af6048202..9707126d51dd 100644 --- a/instrumentation/logback/logback-appender-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/appender/v1_0/internal/LoggingEventMapper.java +++ b/instrumentation/logback/logback-appender-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/appender/v1_0/internal/LoggingEventMapper.java @@ -96,16 +96,7 @@ public void emit(LoggerProvider loggerProvider, ILoggingEvent event, long thread builder.emit(); } - /** - * Map the {@link ILoggingEvent} data model onto the {@link LogRecordBuilder}. Unmapped fields - * include: - * - *
    - *
  • Thread name - {@link ILoggingEvent#getThreadName()} - *
  • Marker - {@link ILoggingEvent#getMarker()} - *
  • Mapped diagnostic context - {@link ILoggingEvent#getMDCPropertyMap()} - *
- */ + /** Map the {@link ILoggingEvent} data model onto the {@link LogRecordBuilder}. */ private void mapLoggingEvent( LogRecordBuilder builder, ILoggingEvent loggingEvent, long threadId) { // message From 29da88e7cf6b8898805c0c8ddc8095477d475ce6 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 8 Nov 2024 16:48:08 +0200 Subject: [PATCH 17/40] Add warning to discourage disabling shadow renaming (#12594) --- docs/contributing/debugging.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/contributing/debugging.md b/docs/contributing/debugging.md index 4885c26412f9..ba9cbedce2b5 100644 --- a/docs/contributing/debugging.md +++ b/docs/contributing/debugging.md @@ -64,6 +64,10 @@ builds by adding the following to `~/.gradle/gradle.properties` before building. disableShadowRelocate=true ``` +WARNING: disabling shadow renaming will make some of the tests fail. In some cases it can also make +tests pass when they really should be failing. Use with caution and be prepared for unexpected +behavior. + ## Missing GraalVM hints Enable the GraalVM tracing agent: From c90dd97c68d4cca50e58667e4fbe4581c5fa70b5 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Sat, 9 Nov 2024 21:01:11 +0200 Subject: [PATCH 18/40] Fix latest dep tests (#12596) --- .../hibernate-reactive-1.0/javaagent/build.gradle.kts | 6 +++--- .../spring-cloud-aws-3.0/javaagent/build.gradle.kts | 9 ++++++++- .../vertx-kafka-client-3.6/javaagent/build.gradle.kts | 4 ++-- .../vertx/vertx-rx-java-3.5/javaagent/build.gradle.kts | 10 +++++----- .../vertx/vertx-web-3.0/javaagent/build.gradle.kts | 6 +++--- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/build.gradle.kts b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/build.gradle.kts index fbe70f17463c..5588958488f7 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/build.gradle.kts +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/build.gradle.kts @@ -33,7 +33,7 @@ testing { implementation("org.testcontainers:testcontainers") if (latestDepTest) { implementation("org.hibernate.reactive:hibernate-reactive-core:1.+") - implementation("io.vertx:vertx-pg-client:+") + implementation("io.vertx:vertx-pg-client:4.+") } else { implementation("org.hibernate.reactive:hibernate-reactive-core:1.0.0.Final") implementation("io.vertx:vertx-pg-client:4.1.5") @@ -46,8 +46,8 @@ testing { dependencies { implementation("org.testcontainers:testcontainers") if (latestDepTest) { - implementation("org.hibernate.reactive:hibernate-reactive-core:2.+") - implementation("io.vertx:vertx-pg-client:+") + implementation("org.hibernate.reactive:hibernate-reactive-core:latest.release") + implementation("io.vertx:vertx-pg-client:latest.release") } else { implementation("org.hibernate.reactive:hibernate-reactive-core:2.0.0.Final") implementation("io.vertx:vertx-pg-client:4.4.2") diff --git a/instrumentation/spring/spring-cloud-aws-3.0/javaagent/build.gradle.kts b/instrumentation/spring/spring-cloud-aws-3.0/javaagent/build.gradle.kts index 2e1aac948038..67ceebcfbfd4 100644 --- a/instrumentation/spring/spring-cloud-aws-3.0/javaagent/build.gradle.kts +++ b/instrumentation/spring/spring-cloud-aws-3.0/javaagent/build.gradle.kts @@ -12,15 +12,22 @@ muzzle { } dependencies { - library("io.awspring.cloud:spring-cloud-aws-starter-sqs:3.0.0") + // current latest release 3.3.0-M1 has parent that is from central because of that we can't use + // library here and have to use compileOnly + testImplementation to avoid resolving the broken + // version + compileOnly("io.awspring.cloud:spring-cloud-aws-starter-sqs:3.0.0") implementation(project(":instrumentation:aws-sdk:aws-sdk-2.2:library")) testInstrumentation(project(":instrumentation:aws-sdk:aws-sdk-2.2:javaagent")) testImplementation("org.elasticmq:elasticmq-rest-sqs_2.13") + testImplementation("io.awspring.cloud:spring-cloud-aws-starter-sqs:3.0.0") testLibrary("org.springframework.boot:spring-boot-starter-test:3.0.0") testLibrary("org.springframework.boot:spring-boot-starter-web:3.0.0") + + // current latest release 3.3.0-M1 has parent that is from central + latestDepTestLibrary("io.awspring.cloud:spring-cloud-aws-starter-sqs:3.2.1") } otelJava { diff --git a/instrumentation/vertx/vertx-kafka-client-3.6/javaagent/build.gradle.kts b/instrumentation/vertx/vertx-kafka-client-3.6/javaagent/build.gradle.kts index 7bb1ac162fbc..5d0909919feb 100644 --- a/instrumentation/vertx/vertx-kafka-client-3.6/javaagent/build.gradle.kts +++ b/instrumentation/vertx/vertx-kafka-client-3.6/javaagent/build.gradle.kts @@ -34,8 +34,8 @@ testing { // the "library" configuration is not recognized by the test suite plugin if (latestDepTest) { - implementation("io.vertx:vertx-kafka-client:+") - implementation("io.vertx:vertx-codegen:+") + implementation("io.vertx:vertx-kafka-client:latest.release") + implementation("io.vertx:vertx-codegen:latest.release") } else { implementation("io.vertx:vertx-kafka-client:3.6.0") implementation("io.vertx:vertx-codegen:3.6.0") diff --git a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/build.gradle.kts b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/build.gradle.kts index 4637b180ed07..b6f3ce7536d6 100644 --- a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/build.gradle.kts +++ b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/build.gradle.kts @@ -44,11 +44,11 @@ testing { dependencies { implementation("org.hsqldb:hsqldb:2.3.4") - implementation("io.vertx:vertx-web:+") - implementation("io.vertx:vertx-rx-java2:+") - implementation("io.vertx:vertx-web-client:+") - implementation("io.vertx:vertx-jdbc-client:+") - implementation("io.vertx:vertx-circuit-breaker:+") + implementation("io.vertx:vertx-web:latest.release") + implementation("io.vertx:vertx-rx-java2:latest.release") + implementation("io.vertx:vertx-web-client:latest.release") + implementation("io.vertx:vertx-jdbc-client:latest.release") + implementation("io.vertx:vertx-circuit-breaker:latest.release") } } } diff --git a/instrumentation/vertx/vertx-web-3.0/javaagent/build.gradle.kts b/instrumentation/vertx/vertx-web-3.0/javaagent/build.gradle.kts index 7a58ec9e2662..8d359cbe462b 100644 --- a/instrumentation/vertx/vertx-web-3.0/javaagent/build.gradle.kts +++ b/instrumentation/vertx/vertx-web-3.0/javaagent/build.gradle.kts @@ -37,9 +37,9 @@ testing { dependencies { implementation(project(":instrumentation:vertx:vertx-web-3.0:testing")) - implementation("io.vertx:vertx-web:+") - implementation("io.vertx:vertx-jdbc-client:+") - implementation("io.vertx:vertx-codegen:+") + implementation("io.vertx:vertx-web:latest.release") + implementation("io.vertx:vertx-jdbc-client:latest.release") + implementation("io.vertx:vertx-codegen:latest.release") } } } From 0e099b281baaf3ad146b81543e9226294661bdaf Mon Sep 17 00:00:00 2001 From: OpenTelemetry Bot <107717825+opentelemetrybot@users.noreply.github.com> Date: Sat, 9 Nov 2024 21:29:43 -0600 Subject: [PATCH 19/40] Update the OpenTelemetry SDK version to 1.44.1 (#12603) Co-authored-by: Trask Stalnaker --- dependencyManagement/build.gradle.kts | 2 +- examples/distro/build.gradle | 2 +- examples/extension/build.gradle | 2 +- .../internal/DeclarativeConfigTest.java | 2 +- licenses/licenses.md | 101 +++++++++--------- 5 files changed, 53 insertions(+), 56 deletions(-) diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index ebd8b0530bc3..8b478a3d7917 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -8,7 +8,7 @@ val dependencyVersions = hashMapOf() rootProject.extra["versions"] = dependencyVersions // this line is managed by .github/scripts/update-sdk-version.sh -val otelSdkVersion = "1.43.0" +val otelSdkVersion = "1.44.1" val otelContribVersion = "1.40.0-alpha" val otelSdkAlphaVersion = otelSdkVersion.replaceFirst("(-SNAPSHOT)?$".toRegex(), "-alpha$1") diff --git a/examples/distro/build.gradle b/examples/distro/build.gradle index 272edd1ad024..919ab23f50b1 100644 --- a/examples/distro/build.gradle +++ b/examples/distro/build.gradle @@ -27,7 +27,7 @@ subprojects { ext { versions = [ // this line is managed by .github/scripts/update-sdk-version.sh - opentelemetrySdk : "1.43.0", + opentelemetrySdk : "1.44.1", // these lines are managed by .github/scripts/update-version.sh opentelemetryJavaagent : "2.10.0-SNAPSHOT", diff --git a/examples/extension/build.gradle b/examples/extension/build.gradle index d0fd2791bb7e..610fd82184b7 100644 --- a/examples/extension/build.gradle +++ b/examples/extension/build.gradle @@ -23,7 +23,7 @@ version '1.0' ext { versions = [ // this line is managed by .github/scripts/update-sdk-version.sh - opentelemetrySdk : "1.43.0", + opentelemetrySdk : "1.44.1", // these lines are managed by .github/scripts/update-version.sh opentelemetryJavaagent : "2.10.0-SNAPSHOT", diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/internal/DeclarativeConfigTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/internal/DeclarativeConfigTest.java index 02b4f27a360d..c6dfe036c25b 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/internal/DeclarativeConfigTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/internal/DeclarativeConfigTest.java @@ -24,7 +24,7 @@ class DeclarativeConfigTest { @Test void endToEnd() { String yaml = - "file_format: 0.1\n" + "file_format: 0.3\n" + "resource:\n" + " attributes:\n" + " - name: service.name\n" diff --git a/licenses/licenses.md b/licenses/licenses.md index 092ac23dcaa8..39d5f6003bf1 100644 --- a/licenses/licenses.md +++ b/licenses/licenses.md @@ -59,91 +59,91 @@ > - **POM Project URL**: [https://github.com/square/okio/](https://github.com/square/okio/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**11** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api` **Version:** `1.43.0` +**11** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) -**12** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api-incubator` **Version:** `1.43.0-alpha` +**12** **Group:** `io.opentelemetry` **Name:** `opentelemetry-api-incubator` **Version:** `1.44.1-alpha` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) -**13** **Group:** `io.opentelemetry` **Name:** `opentelemetry-context` **Version:** `1.43.0` +**13** **Group:** `io.opentelemetry` **Name:** `opentelemetry-context` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) -**14** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-common` **Version:** `1.43.0` +**14** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-common` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**15** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-logging` **Version:** `1.43.0` +**15** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-logging` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**16** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-logging-otlp` **Version:** `1.43.0` +**16** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-logging-otlp` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**17** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-otlp` **Version:** `1.43.0` +**17** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-otlp` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**18** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-otlp-common` **Version:** `1.43.0` +**18** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-otlp-common` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**19** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-prometheus` **Version:** `1.43.0-alpha` +**19** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-prometheus` **Version:** `1.44.1-alpha` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**20** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-sender-okhttp` **Version:** `1.43.0` +**20** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-sender-okhttp` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**21** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-zipkin` **Version:** `1.43.0` +**21** **Group:** `io.opentelemetry` **Name:** `opentelemetry-exporter-zipkin` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**22** **Group:** `io.opentelemetry` **Name:** `opentelemetry-extension-kotlin` **Version:** `1.43.0` +**22** **Group:** `io.opentelemetry` **Name:** `opentelemetry-extension-kotlin` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**23** **Group:** `io.opentelemetry` **Name:** `opentelemetry-extension-trace-propagators` **Version:** `1.43.0` +**23** **Group:** `io.opentelemetry` **Name:** `opentelemetry-extension-trace-propagators` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**24** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk` **Version:** `1.43.0` +**24** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**25** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-common` **Version:** `1.43.0` +**25** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-common` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**26** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure` **Version:** `1.43.0` +**26** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**27** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure-spi` **Version:** `1.43.0` +**27** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-autoconfigure-spi` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**28** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-incubator` **Version:** `1.43.0-alpha` +**28** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-incubator` **Version:** `1.44.1-alpha` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**29** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-jaeger-remote-sampler` **Version:** `1.43.0` +**29** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-extension-jaeger-remote-sampler` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**30** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-logs` **Version:** `1.43.0` +**30** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-logs` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**31** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-metrics` **Version:** `1.43.0` +**31** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-metrics` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**32** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-trace` **Version:** `1.43.0` +**32** **Group:** `io.opentelemetry` **Name:** `opentelemetry-sdk-trace` **Version:** `1.44.1` > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) @@ -171,156 +171,153 @@ > - **POM Project URL**: [https://github.com/open-telemetry/semantic-conventions-java](https://github.com/open-telemetry/semantic-conventions-java) > - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) -**39** **Group:** `io.prometheus` **Name:** `prometheus-metrics-config` **Version:** `1.3.1` +**39** **Group:** `io.prometheus` **Name:** `prometheus-metrics-config` **Version:** `1.3.3` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**40** **Group:** `io.prometheus` **Name:** `prometheus-metrics-exporter-common` **Version:** `1.3.1` +**40** **Group:** `io.prometheus` **Name:** `prometheus-metrics-exporter-common` **Version:** `1.3.3` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**41** **Group:** `io.prometheus` **Name:** `prometheus-metrics-exporter-httpserver` **Version:** `1.3.1` +**41** **Group:** `io.prometheus` **Name:** `prometheus-metrics-exporter-httpserver` **Version:** `1.3.3` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**42** **Group:** `io.prometheus` **Name:** `prometheus-metrics-exposition-formats` **Version:** `1.3.1` +**42** **Group:** `io.prometheus` **Name:** `prometheus-metrics-exposition-formats` **Version:** `1.3.3` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**43** **Group:** `io.prometheus` **Name:** `prometheus-metrics-model` **Version:** `1.3.1` +**43** **Group:** `io.prometheus` **Name:** `prometheus-metrics-model` **Version:** `1.3.3` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**44** **Group:** `io.prometheus` **Name:** `prometheus-metrics-shaded-protobuf` **Version:** `1.3.1` -> - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) - -**45** **Group:** `io.zipkin.reporter2` **Name:** `zipkin-reporter` **Version:** `3.4.2` +**44** **Group:** `io.zipkin.reporter2` **Name:** `zipkin-reporter` **Version:** `3.4.2` > - **Manifest Project URL**: [https://zipkin.io/](https://zipkin.io/) > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **Embedded license files**: [zipkin-reporter-3.4.2.jar/META-INF/LICENSE](zipkin-reporter-3.4.2.jar/META-INF/LICENSE) -**46** **Group:** `io.zipkin.reporter2` **Name:** `zipkin-sender-okhttp3` **Version:** `3.4.2` +**45** **Group:** `io.zipkin.reporter2` **Name:** `zipkin-sender-okhttp3` **Version:** `3.4.2` > - **Manifest Project URL**: [https://zipkin.io/](https://zipkin.io/) > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **Embedded license files**: [zipkin-sender-okhttp3-3.4.2.jar/META-INF/LICENSE](zipkin-sender-okhttp3-3.4.2.jar/META-INF/LICENSE) -**47** **Group:** `io.zipkin.zipkin2` **Name:** `zipkin` **Version:** `2.27.1` +**46** **Group:** `io.zipkin.zipkin2` **Name:** `zipkin` **Version:** `2.27.1` > - **Manifest Project URL**: [http://zipkin.io/](http://zipkin.io/) > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **Embedded license files**: [zipkin-2.27.1.jar/META-INF/LICENSE](zipkin-2.27.1.jar/META-INF/LICENSE) -**48** **Group:** `net.bytebuddy` **Name:** `byte-buddy-dep` **Version:** `1.15.10` +**47** **Group:** `net.bytebuddy` **Name:** `byte-buddy-dep` **Version:** `1.15.10` > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **Embedded license files**: [byte-buddy-dep-1.15.10.jar/META-INF/LICENSE](byte-buddy-dep-1.15.10.jar/META-INF/LICENSE) - [byte-buddy-dep-1.15.10.jar/META-INF/NOTICE](byte-buddy-dep-1.15.10.jar/META-INF/NOTICE) -**49** **Group:** `org.jetbrains` **Name:** `annotations` **Version:** `13.0` +**48** **Group:** `org.jetbrains` **Name:** `annotations` **Version:** `13.0` > - **POM Project URL**: [http://www.jetbrains.org](http://www.jetbrains.org) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**50** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib` **Version:** `2.0.21` +**49** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib` **Version:** `2.0.21` > - **POM Project URL**: [https://kotlinlang.org/](https://kotlinlang.org/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**51** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib-jdk7` **Version:** `2.0.21` +**50** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib-jdk7` **Version:** `2.0.21` > - **POM Project URL**: [https://kotlinlang.org/](https://kotlinlang.org/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**52** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib-jdk8` **Version:** `2.0.21` +**51** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib-jdk8` **Version:** `2.0.21` > - **POM Project URL**: [https://kotlinlang.org/](https://kotlinlang.org/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**53** **Group:** `org.ow2.asm` **Name:** `asm` **Version:** `9.7.1` +**52** **Group:** `org.ow2.asm` **Name:** `asm` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: The 3-Clause BSD License - [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) -**54** **Group:** `org.ow2.asm` **Name:** `asm-analysis` **Version:** `9.7.1` +**53** **Group:** `org.ow2.asm` **Name:** `asm-analysis` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: The 3-Clause BSD License - [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) -**55** **Group:** `org.ow2.asm` **Name:** `asm-commons` **Version:** `9.7.1` +**54** **Group:** `org.ow2.asm` **Name:** `asm-commons` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: The 3-Clause BSD License - [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) -**56** **Group:** `org.ow2.asm` **Name:** `asm-tree` **Version:** `9.7.1` +**55** **Group:** `org.ow2.asm` **Name:** `asm-tree` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: The 3-Clause BSD License - [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) -**57** **Group:** `org.ow2.asm` **Name:** `asm-util` **Version:** `9.7.1` +**56** **Group:** `org.ow2.asm` **Name:** `asm-util` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: The 3-Clause BSD License - [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) -**58** **Group:** `org.snakeyaml` **Name:** `snakeyaml-engine` **Version:** `2.8` +**57** **Group:** `org.snakeyaml` **Name:** `snakeyaml-engine` **Version:** `2.8` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM Project URL**: [https://bitbucket.org/snakeyaml/snakeyaml-engine](https://bitbucket.org/snakeyaml/snakeyaml-engine) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**59** **Group:** `org.yaml` **Name:** `snakeyaml` **Version:** `2.3` +**58** **Group:** `org.yaml` **Name:** `snakeyaml` **Version:** `2.3` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM Project URL**: [https://bitbucket.org/snakeyaml/snakeyaml](https://bitbucket.org/snakeyaml/snakeyaml) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) ## MIT License -**60** **Group:** `org.slf4j` **Name:** `slf4j-api` **Version:** `2.0.16` +**59** **Group:** `org.slf4j` **Name:** `slf4j-api` **Version:** `2.0.16` > - **Project URL**: [http://www.slf4j.org](http://www.slf4j.org) > - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT) > - **Embedded license files**: [slf4j-api-2.0.16.jar/META-INF/LICENSE.txt](slf4j-api-2.0.16.jar/META-INF/LICENSE.txt) -**61** **Group:** `org.slf4j` **Name:** `slf4j-simple` **Version:** `2.0.16` +**60** **Group:** `org.slf4j` **Name:** `slf4j-simple` **Version:** `2.0.16` > - **Project URL**: [http://www.slf4j.org](http://www.slf4j.org) > - **POM License**: MIT License - [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT) > - **Embedded license files**: [slf4j-simple-2.0.16.jar/META-INF/LICENSE.txt](slf4j-simple-2.0.16.jar/META-INF/LICENSE.txt) ## The 3-Clause BSD License -**62** **Group:** `org.ow2.asm` **Name:** `asm` **Version:** `9.7.1` +**61** **Group:** `org.ow2.asm` **Name:** `asm` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: The 3-Clause BSD License - [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) -**63** **Group:** `org.ow2.asm` **Name:** `asm-analysis` **Version:** `9.7.1` +**62** **Group:** `org.ow2.asm` **Name:** `asm-analysis` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: The 3-Clause BSD License - [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) -**64** **Group:** `org.ow2.asm` **Name:** `asm-commons` **Version:** `9.7.1` +**63** **Group:** `org.ow2.asm` **Name:** `asm-commons` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: The 3-Clause BSD License - [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) -**65** **Group:** `org.ow2.asm` **Name:** `asm-tree` **Version:** `9.7.1` +**64** **Group:** `org.ow2.asm` **Name:** `asm-tree` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: The 3-Clause BSD License - [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) -**66** **Group:** `org.ow2.asm` **Name:** `asm-util` **Version:** `9.7.1` +**65** **Group:** `org.ow2.asm` **Name:** `asm-util` **Version:** `9.7.1` > - **Manifest Project URL**: [http://asm.ow2.org](http://asm.ow2.org) > - **Manifest License**: The 3-Clause BSD License (Not Packaged) > - **POM Project URL**: [http://asm.ow2.io/](http://asm.ow2.io/) From 591cdf5c79ec44a7e37b22d1610e5623bc3d2d93 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sat, 9 Nov 2024 23:31:45 -0800 Subject: [PATCH 20/40] Move get attribute inside condition where used (#12604) --- .../InternalNetworkAttributesExtractor.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/network/internal/InternalNetworkAttributesExtractor.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/network/internal/InternalNetworkAttributesExtractor.java index 7d0cb9eea012..3752c0252713 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/network/internal/InternalNetworkAttributesExtractor.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/network/internal/InternalNetworkAttributesExtractor.java @@ -33,18 +33,23 @@ public InternalNetworkAttributesExtractor( } public void onEnd(AttributesBuilder attributes, REQUEST request, @Nullable RESPONSE response) { - String protocolName = lowercase(getter.getNetworkProtocolName(request, response)); - String protocolVersion = lowercase(getter.getNetworkProtocolVersion(request, response)); - if (captureProtocolAttributes) { - String transport = lowercase(getter.getNetworkTransport(request, response)); - internalSet(attributes, NetworkAttributes.NETWORK_TRANSPORT, transport); + internalSet( + attributes, + NetworkAttributes.NETWORK_TRANSPORT, + lowercase(getter.getNetworkTransport(request, response))); internalSet( attributes, NetworkAttributes.NETWORK_TYPE, lowercase(getter.getNetworkType(request, response))); - internalSet(attributes, NetworkAttributes.NETWORK_PROTOCOL_NAME, protocolName); - internalSet(attributes, NetworkAttributes.NETWORK_PROTOCOL_VERSION, protocolVersion); + internalSet( + attributes, + NetworkAttributes.NETWORK_PROTOCOL_NAME, + lowercase(getter.getNetworkProtocolName(request, response))); + internalSet( + attributes, + NetworkAttributes.NETWORK_PROTOCOL_VERSION, + lowercase(getter.getNetworkProtocolVersion(request, response))); } if (captureLocalSocketAttributes) { From 74d07f1d36343ff05ebe2b25da92765f8bd9bf0c Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sat, 9 Nov 2024 23:44:57 -0800 Subject: [PATCH 21/40] Database stable semconv tests and fixes (#12601) --- .../aws-sdk-2.2/javaagent/build.gradle.kts | 12 ++ .../library-autoconfigure/build.gradle.kts | 10 +- .../aws-sdk-2.2/library/build.gradle.kts | 10 +- .../internal/TracingExecutionInterceptor.java | 10 +- .../v2_2/AbstractAws2ClientCoreTest.groovy | 18 +- ...AbstractAws2ClientRecordHttpErrorTest.java | 3 +- .../camel-2.20/javaagent/build.gradle.kts | 8 + .../decorators/DbSpanDecorator.java | 15 +- .../apachecamel/decorators/CassandraTest.java | 5 +- .../cassandra-3.0/javaagent/build.gradle.kts | 8 +- .../cassandra-4.0/javaagent/build.gradle.kts | 2 +- .../cassandra-4.4/javaagent/build.gradle.kts | 10 +- .../cassandra-4.4/library/build.gradle.kts | 4 + .../javaagent/build.gradle.kts | 8 + .../clickhouse/ClickHouseClientTest.java | 7 +- .../couchbase-2.0/javaagent/build.gradle.kts | 8 +- .../couchbase-2.6/javaagent/build.gradle.kts | 8 +- .../javaagent/build.gradle.kts | 10 +- .../couchbase-3.1/javaagent/build.gradle.kts | 10 +- .../couchbase-3.2/javaagent/build.gradle.kts | 10 +- .../javaagent/build.gradle.kts | 13 +- .../apiclient/ElasticsearchClientTest.java | 7 +- .../javaagent/build.gradle.kts | 22 +- .../javaagent/build.gradle.kts | 24 ++- .../Elasticsearch53SpringRepositoryTest.java | 21 +- .../Elasticsearch53SpringTemplateTest.java | 17 +- .../javaagent/build.gradle.kts | 5 + .../AbstractElasticsearchNodeClientTest.java | 15 +- ...tractElasticsearchTransportClientTest.java | 15 +- .../geode-1.4/javaagent/build.gradle.kts | 10 + .../instrumentation/geode/PutGetTest.java | 15 +- .../hibernate-3.3/javaagent/build.gradle.kts | 22 +- .../hibernate/v3_3/AbstractHibernateTest.java | 26 +-- .../hibernate-4.0/javaagent/build.gradle.kts | 25 ++- .../hibernate/v4_0/CriteriaTest.java | 17 +- .../hibernate/v4_0/EntityManagerTest.java | 82 ++++--- .../hibernate/v4_0/QueryTest.java | 46 ++-- .../hibernate/v4_0/SessionTest.java | 143 ++++++++----- .../test/java/spring/jpa/SpringJpaTest.java | 156 ++++++++------ .../hibernate-6.0/javaagent/build.gradle.kts | 16 +- .../hibernate/v6_0/CriteriaTest.java | 17 +- .../hibernate/v6_0/EntityManagerTest.java | 41 ++-- .../hibernate/v6_0/ProcedureCallTest.java | 14 +- .../hibernate/v6_0/SessionTest.java | 41 ++-- .../spring-testing/build.gradle.kts | 20 +- .../src/test/groovy/SpringJpaTest.groovy | 120 ++++++----- .../javaagent/build.gradle.kts | 16 +- .../hibernate/v4_3/ProcedureCallTest.java | 14 +- .../javaagent/build.gradle.kts | 5 + .../reactive/v1_0/HibernateReactiveTest.java | 12 +- .../reactive/v2_0/HibernateReactiveTest.java | 12 +- .../influxdb-2.4/javaagent/build.gradle.kts | 17 +- .../influxdb/v2_4/InfluxDbClientTest.java | 7 +- .../influxdb/v2_4/InfluxDbClient24Test.java | 7 +- .../jdbc/javaagent/build.gradle.kts | 18 ++ .../jdbc/test/JdbcInstrumentationTest.java | 201 +++++++----------- .../scalaexecutors/SlickTest.scala | 32 +-- instrumentation/jdbc/library/build.gradle.kts | 8 + .../jdbc/datasource/JdbcTelemetryTest.java | 5 +- .../OpenTelemetryDataSourceTest.java | 10 +- .../internal/OpenTelemetryConnectionTest.java | 16 +- .../jedis-1.4/javaagent/build.gradle.kts | 5 + .../jedis/AbstractJedisTest.java | 21 +- .../jedis-3.0/javaagent/build.gradle.kts | 10 +- .../jedis/v3_0/Jedis30ClientTest.java | 21 +- .../jedis-4.0/javaagent/build.gradle.kts | 10 +- .../jedis/v4_0/Jedis40ClientTest.java | 21 +- .../lettuce-4.0/javaagent/build.gradle.kts | 20 +- .../LettuceConnectAttributesExtractor.java | 1 - .../lettuce/v4_0/LettuceAsyncClientTest.java | 28 ++- .../lettuce/v4_0/LettuceSyncClientTest.java | 28 ++- .../lettuce-5.0/javaagent/build.gradle.kts | 20 +- .../LettuceConnectAttributesExtractor.java | 1 - .../lettuce/v5_0/LettuceAsyncClientTest.java | 43 ++-- .../v5_0/LettuceReactiveClientTest.java | 57 ++--- .../lettuce/v5_0/LettuceSyncClientTest.java | 39 ++-- .../lettuce-5.1/javaagent/build.gradle.kts | 10 +- .../v5_1/LettuceReactiveClientTest.java | 5 +- .../lettuce-5.1/library/build.gradle.kts | 10 +- .../v5_1/AbstractLettuceAsyncClientTest.java | 15 +- .../AbstractLettuceReactiveClientTest.java | 19 +- .../AbstractLettuceSyncClientAuthTest.java | 11 +- .../v5_1/AbstractLettuceSyncClientTest.java | 36 ++-- .../mongo-3.1/javaagent/build.gradle.kts | 10 +- .../mongo/mongo-3.1/library/build.gradle.kts | 10 +- .../mongo/v3_1/MongoAttributesExtractor.java | 11 +- .../mongo-3.7/javaagent/build.gradle.kts | 10 +- .../mongo-4.0/javaagent/build.gradle.kts | 10 +- .../javaagent/build.gradle.kts | 10 +- .../testing/AbstractMongoClientTest.java | 14 +- .../javaagent/build.gradle.kts | 8 + .../src/test/java/OpenSearchRestTest.java | 9 +- .../r2dbc-1.0/javaagent/build.gradle.kts | 14 +- .../r2dbc-1.0/library/build.gradle.kts | 14 +- .../v1_0/AbstractR2dbcStatementTest.java | 16 +- .../test/groovy/RediscalaClientTest.groovy | 7 +- .../redisson-3.17/javaagent/build.gradle.kts | 8 +- .../build.gradle.kts | 13 +- ...cInstrumentationAutoConfigurationTest.java | 6 +- .../javaagent/build.gradle.kts | 10 +- .../spring-data-3.0/testing/build.gradle.kts | 7 +- .../data/v3_0/ReactiveSpringDataTest.java | 16 +- .../spring/data/AbstractSpringJpaTest.java | 152 +++++++------ .../javaagent/build.gradle.kts | 18 +- .../spymemcached/SpymemcachedTest.java | 77 +++---- .../VertxReactivePropagationTest.groovy | 32 +-- .../VertxReactivePropagationTest.groovy | 32 +-- .../javaagent/build.gradle.kts | 8 + .../vertx/v4_0/sql/VertxSqlClientTest.java | 61 +++--- 109 files changed, 1554 insertions(+), 966 deletions(-) diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/build.gradle.kts b/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/build.gradle.kts index 9f83480f5511..7d3fa5d03c7e 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/build.gradle.kts +++ b/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/build.gradle.kts @@ -164,4 +164,16 @@ tasks { include("software/amazon/awssdk/global/handlers/execution.interceptors") } } + + val testStableSemconv by registering(Test::class) { + filter { + excludeTestsMatching("Aws2SqsSuppressReceiveSpansTest") + } + systemProperty("otel.instrumentation.messaging.experimental.receive-telemetry.enabled", "true") + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library-autoconfigure/build.gradle.kts b/instrumentation/aws-sdk/aws-sdk-2.2/library-autoconfigure/build.gradle.kts index 7f621f4977d2..d493f83a862b 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library-autoconfigure/build.gradle.kts +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library-autoconfigure/build.gradle.kts @@ -25,10 +25,18 @@ dependencies { } tasks { - test { + withType().configureEach { systemProperty("otel.instrumentation.aws-sdk.experimental-span-attributes", true) systemProperty("otel.instrumentation.aws-sdk.experimental-record-individual-http-error", true) systemProperty("otel.instrumentation.messaging.experimental.capture-headers", "test-message-header") systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/build.gradle.kts b/instrumentation/aws-sdk/aws-sdk-2.2/library/build.gradle.kts index e4be5bdfe30a..3b7381a8ba00 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/build.gradle.kts +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/build.gradle.kts @@ -66,10 +66,18 @@ testing { } tasks { - withType { + withType().configureEach { // NB: If you'd like to change these, there is some cleanup work to be done, as most tests ignore this and // set the value directly (the "library" does not normally query it, only library-autoconfigure) systemProperty("otel.instrumentation.aws-sdk.experimental-span-attributes", true) systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/TracingExecutionInterceptor.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/TracingExecutionInterceptor.java index 43a2c68d9936..94243d0b11bb 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/TracingExecutionInterceptor.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/TracingExecutionInterceptor.java @@ -16,6 +16,7 @@ import io.opentelemetry.contrib.awsxray.propagator.AwsXrayPropagator; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil; +import io.opentelemetry.instrumentation.api.internal.SemconvStability; import io.opentelemetry.instrumentation.api.internal.Timer; import io.opentelemetry.semconv.HttpAttributes; import java.io.BufferedReader; @@ -50,6 +51,8 @@ public final class TracingExecutionInterceptor implements ExecutionInterceptor { // copied from DbIncubatingAttributes private static final AttributeKey DB_OPERATION = AttributeKey.stringKey("db.operation"); + private static final AttributeKey DB_OPERATION_NAME = + AttributeKey.stringKey("db.operation.name"); private static final AttributeKey DB_SYSTEM = AttributeKey.stringKey("db.system"); // copied from DbIncubatingAttributes.DbSystemIncubatingValues private static final String DB_SYSTEM_DYNAMODB = "dynamodb"; @@ -331,7 +334,12 @@ private void populateRequestAttributes( span.setAttribute(DB_SYSTEM, DB_SYSTEM_DYNAMODB); String operation = attributes.getAttribute(SdkExecutionAttribute.OPERATION_NAME); if (operation != null) { - span.setAttribute(DB_OPERATION, operation); + if (SemconvStability.emitStableDatabaseSemconv()) { + span.setAttribute(DB_OPERATION_NAME, operation); + } + if (SemconvStability.emitOldDatabaseSemconv()) { + span.setAttribute(DB_OPERATION, operation); + } } } } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientCoreTest.groovy b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientCoreTest.groovy index c79c0eac333f..9aaacb3abed3 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientCoreTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientCoreTest.groovy @@ -7,15 +7,16 @@ package io.opentelemetry.instrumentation.awssdk.v2_2 import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil import io.opentelemetry.instrumentation.test.InstrumentationSpecification -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes -import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes -import io.opentelemetry.semconv.ServerAttributes import io.opentelemetry.semconv.HttpAttributes +import io.opentelemetry.semconv.ServerAttributes import io.opentelemetry.semconv.UrlAttributes +import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes +import io.opentelemetry.semconv.incubating.DbIncubatingAttributes +import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes import io.opentelemetry.testing.internal.armeria.common.HttpResponse import io.opentelemetry.testing.internal.armeria.common.HttpStatus import io.opentelemetry.testing.internal.armeria.common.MediaType +import io.opentelemetry.testing.internal.armeria.testing.junit5.server.mock.MockWebServerExtension import software.amazon.awssdk.auth.credentials.AwsBasicCredentials import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider import software.amazon.awssdk.core.client.builder.SdkClientBuilder @@ -24,7 +25,6 @@ import software.amazon.awssdk.regions.Region import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient import software.amazon.awssdk.services.dynamodb.DynamoDbClient import software.amazon.awssdk.services.dynamodb.model.* -import io.opentelemetry.testing.internal.armeria.testing.junit5.server.mock.MockWebServerExtension import spock.lang.Shared import spock.lang.Unroll @@ -32,7 +32,7 @@ import java.util.concurrent.Future import static com.google.common.collect.ImmutableMap.of import static io.opentelemetry.api.trace.SpanKind.CLIENT - +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable @Unroll abstract class AbstractAws2ClientCoreTest extends InstrumentationSpecification { @@ -150,7 +150,7 @@ abstract class AbstractAws2ClientCoreTest extends InstrumentationSpecification { "$AwsIncubatingAttributes.AWS_REQUEST_ID" "$requestId" "aws.table.name" "sometable" "$DbIncubatingAttributes.DB_SYSTEM" "dynamodb" - "$DbIncubatingAttributes.DB_OPERATION" "CreateTable" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "CreateTable" "aws.dynamodb.global_secondary_indexes" "[{\"IndexName\":\"globalIndex\",\"KeySchema\":[{\"AttributeName\":\"attribute\"}],\"ProvisionedThroughput\":{\"ReadCapacityUnits\":10,\"WriteCapacityUnits\":12}},{\"IndexName\":\"globalIndexSecondary\",\"KeySchema\":[{\"AttributeName\":\"attributeSecondary\"}],\"ProvisionedThroughput\":{\"ReadCapacityUnits\":7,\"WriteCapacityUnits\":8}}]" "aws.dynamodb.provisioned_throughput.read_capacity_units" "1" "aws.dynamodb.provisioned_throughput.write_capacity_units" "1" @@ -183,7 +183,7 @@ abstract class AbstractAws2ClientCoreTest extends InstrumentationSpecification { "$AwsIncubatingAttributes.AWS_REQUEST_ID" "$requestId" "aws.table.name" "sometable" "$DbIncubatingAttributes.DB_SYSTEM" "dynamodb" - "$DbIncubatingAttributes.DB_OPERATION" "Query" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "Query" "aws.dynamodb.limit" "10" "aws.dynamodb.select" "ALL_ATTRIBUTES" } @@ -215,7 +215,7 @@ abstract class AbstractAws2ClientCoreTest extends InstrumentationSpecification { "$AwsIncubatingAttributes.AWS_REQUEST_ID" "$requestId" "aws.table.name" "sometable" "$DbIncubatingAttributes.DB_SYSTEM" "dynamodb" - "$DbIncubatingAttributes.DB_OPERATION" "${operation}" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "${operation}" } } } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java index 9ab563a0c0ac..1a872e415250 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientRecordHttpErrorTest.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.awssdk.v2_2; import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; @@ -184,7 +185,7 @@ public void testSendDynamoDbRequestWithRetries() { equalTo(AwsIncubatingAttributes.AWS_REQUEST_ID, requestId), equalTo(stringKey("aws.table.name"), "sometable"), equalTo(DB_SYSTEM, "dynamodb"), - equalTo(DB_OPERATION, operation)); + equalTo(maybeStable(DB_OPERATION), operation)); if (isRecordIndividualHttpErrorEnabled()) { span.hasEventsSatisfyingExactly( event -> diff --git a/instrumentation/camel-2.20/javaagent/build.gradle.kts b/instrumentation/camel-2.20/javaagent/build.gradle.kts index 8123ea331c46..eaa9bb52dfae 100644 --- a/instrumentation/camel-2.20/javaagent/build.gradle.kts +++ b/instrumentation/camel-2.20/javaagent/build.gradle.kts @@ -79,6 +79,14 @@ tasks { jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } configurations.testRuntimeClasspath { diff --git a/instrumentation/camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/DbSpanDecorator.java b/instrumentation/camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/DbSpanDecorator.java index 2bd258112151..1c260c2c8e59 100644 --- a/instrumentation/camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/DbSpanDecorator.java +++ b/instrumentation/camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/DbSpanDecorator.java @@ -25,6 +25,7 @@ import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlStatementSanitizer; +import io.opentelemetry.instrumentation.api.internal.SemconvStability; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.instrumentation.apachecamel.CamelDirection; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; @@ -126,11 +127,21 @@ public void pre( attributes.put(DbIncubatingAttributes.DB_SYSTEM, system); String statement = getStatement(exchange, endpoint); if (statement != null) { - attributes.put(DbIncubatingAttributes.DB_STATEMENT, statement); + if (SemconvStability.emitStableDatabaseSemconv()) { + attributes.put(DbIncubatingAttributes.DB_QUERY_TEXT, statement); + } + if (SemconvStability.emitOldDatabaseSemconv()) { + attributes.put(DbIncubatingAttributes.DB_STATEMENT, statement); + } } String dbName = getDbName(endpoint); if (dbName != null) { - attributes.put(DbIncubatingAttributes.DB_NAME, dbName); + if (SemconvStability.emitStableDatabaseSemconv()) { + attributes.put(DbIncubatingAttributes.DB_NAMESPACE, dbName); + } + if (SemconvStability.emitOldDatabaseSemconv()) { + attributes.put(DbIncubatingAttributes.DB_NAME, dbName); + } } } } diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraTest.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraTest.java index 72012ceb4da3..0328d65ff083 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraTest.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraTest.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.apachecamel.decorators; import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; @@ -119,9 +120,9 @@ void testCassandra() { equalTo( stringKey("camel.uri"), "cql://" + host + ":" + cassandraPort + "/test"), - equalTo(DB_NAME, "test"), + equalTo(maybeStable(DB_NAME), "test"), equalTo( - DB_STATEMENT, + maybeStable(DB_STATEMENT), "select * from test.users where id=? ALLOW FILTERING"), equalTo(DB_SYSTEM, "cassandra")))); } diff --git a/instrumentation/cassandra/cassandra-3.0/javaagent/build.gradle.kts b/instrumentation/cassandra/cassandra-3.0/javaagent/build.gradle.kts index 924e4db0f3a3..08a921999dda 100644 --- a/instrumentation/cassandra/cassandra-3.0/javaagent/build.gradle.kts +++ b/instrumentation/cassandra/cassandra-3.0/javaagent/build.gradle.kts @@ -44,14 +44,14 @@ dependencies { configurations.testRuntimeClasspath.get().resolutionStrategy.force("com.google.guava:guava:19.0") tasks { - val testStableSemconv by registering(Test::class) { - jvmArgs("-Dotel.semconv-stability.opt-in=database") - } - withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testStableSemconv) } diff --git a/instrumentation/cassandra/cassandra-4.0/javaagent/build.gradle.kts b/instrumentation/cassandra/cassandra-4.0/javaagent/build.gradle.kts index 28eb7cf3f557..bf3b4b5862a3 100644 --- a/instrumentation/cassandra/cassandra-4.0/javaagent/build.gradle.kts +++ b/instrumentation/cassandra/cassandra-4.0/javaagent/build.gradle.kts @@ -24,7 +24,7 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } diff --git a/instrumentation/cassandra/cassandra-4.4/javaagent/build.gradle.kts b/instrumentation/cassandra/cassandra-4.4/javaagent/build.gradle.kts index 270af63f0fa6..375711858747 100644 --- a/instrumentation/cassandra/cassandra-4.4/javaagent/build.gradle.kts +++ b/instrumentation/cassandra/cassandra-4.4/javaagent/build.gradle.kts @@ -27,7 +27,15 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/cassandra/cassandra-4.4/library/build.gradle.kts b/instrumentation/cassandra/cassandra-4.4/library/build.gradle.kts index 963467200f5d..19f0d3172cd5 100644 --- a/instrumentation/cassandra/cassandra-4.4/library/build.gradle.kts +++ b/instrumentation/cassandra/cassandra-4.4/library/build.gradle.kts @@ -12,6 +12,10 @@ dependencies { } tasks { + withType().configureEach { + usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + } + val testStableSemconv by registering(Test::class) { jvmArgs("-Dotel.semconv-stability.opt-in=database") } diff --git a/instrumentation/clickhouse-client-0.5/javaagent/build.gradle.kts b/instrumentation/clickhouse-client-0.5/javaagent/build.gradle.kts index 2322b3b8b3a8..b8f7f9811459 100644 --- a/instrumentation/clickhouse-client-0.5/javaagent/build.gradle.kts +++ b/instrumentation/clickhouse-client-0.5/javaagent/build.gradle.kts @@ -25,4 +25,12 @@ tasks { test { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/clickhouse-client-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientTest.java b/instrumentation/clickhouse-client-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientTest.java index 9c2dfb9d704d..25f80ddf0f15 100644 --- a/instrumentation/clickhouse-client-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientTest.java +++ b/instrumentation/clickhouse-client-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.clickhouse; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -341,10 +342,10 @@ void testParameterizedQueryInput() throws ClickHouseException { private static List attributeAssertions(String statement, String operation) { return asList( equalTo(DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.CLICKHOUSE), - equalTo(DB_NAME, dbName), + equalTo(maybeStable(DB_NAME), dbName), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), - equalTo(DB_STATEMENT, statement), - equalTo(DB_OPERATION, operation)); + equalTo(maybeStable(DB_STATEMENT), statement), + equalTo(maybeStable(DB_OPERATION), operation)); } } diff --git a/instrumentation/couchbase/couchbase-2.0/javaagent/build.gradle.kts b/instrumentation/couchbase/couchbase-2.0/javaagent/build.gradle.kts index 13f696c31334..be9254a911c2 100644 --- a/instrumentation/couchbase/couchbase-2.0/javaagent/build.gradle.kts +++ b/instrumentation/couchbase/couchbase-2.0/javaagent/build.gradle.kts @@ -32,10 +32,6 @@ dependencies { } tasks { - val testStableSemconv by registering(Test::class) { - jvmArgs("-Dotel.semconv-stability.opt-in=database") - } - withType().configureEach { // required on jdk17 jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") @@ -43,6 +39,10 @@ tasks { jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") } + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testStableSemconv) } diff --git a/instrumentation/couchbase/couchbase-2.6/javaagent/build.gradle.kts b/instrumentation/couchbase/couchbase-2.6/javaagent/build.gradle.kts index 1c68002dfe1e..aa93476f592b 100644 --- a/instrumentation/couchbase/couchbase-2.6/javaagent/build.gradle.kts +++ b/instrumentation/couchbase/couchbase-2.6/javaagent/build.gradle.kts @@ -35,10 +35,6 @@ dependencies { } tasks { - val testStableSemconv by registering(Test::class) { - jvmArgs("-Dotel.semconv-stability.opt-in=database") - } - withType().configureEach { // TODO run tests both with and without experimental span attributes jvmArgs("-Dotel.instrumentation.couchbase.experimental-span-attributes=true") @@ -48,6 +44,10 @@ tasks { jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") } + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testStableSemconv) } diff --git a/instrumentation/couchbase/couchbase-3.1.6/javaagent/build.gradle.kts b/instrumentation/couchbase/couchbase-3.1.6/javaagent/build.gradle.kts index d9fdc1b26a54..c0128fac5e38 100644 --- a/instrumentation/couchbase/couchbase-3.1.6/javaagent/build.gradle.kts +++ b/instrumentation/couchbase/couchbase-3.1.6/javaagent/build.gradle.kts @@ -39,7 +39,15 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/couchbase/couchbase-3.1/javaagent/build.gradle.kts b/instrumentation/couchbase/couchbase-3.1/javaagent/build.gradle.kts index 0d6c7ddc5394..8efea0a3a21f 100644 --- a/instrumentation/couchbase/couchbase-3.1/javaagent/build.gradle.kts +++ b/instrumentation/couchbase/couchbase-3.1/javaagent/build.gradle.kts @@ -40,7 +40,15 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/couchbase/couchbase-3.2/javaagent/build.gradle.kts b/instrumentation/couchbase/couchbase-3.2/javaagent/build.gradle.kts index fc28c5e0fec4..333fdbdcfced 100644 --- a/instrumentation/couchbase/couchbase-3.2/javaagent/build.gradle.kts +++ b/instrumentation/couchbase/couchbase-3.2/javaagent/build.gradle.kts @@ -37,8 +37,16 @@ dependencies { } tasks { - test { + withType().configureEach { systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/build.gradle.kts b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/build.gradle.kts index 676975efd718..aa65867a4f1c 100644 --- a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/build.gradle.kts +++ b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/build.gradle.kts @@ -74,14 +74,17 @@ testing { } tasks { - test { + withType().configureEach { + jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testing.suites) + dependsOn(testStableSemconv) } } - -tasks.withType().configureEach { - jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") -} diff --git a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/apiclient/ElasticsearchClientTest.java b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/apiclient/ElasticsearchClientTest.java index 8a553eda29e7..d60200b6cd62 100644 --- a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/apiclient/ElasticsearchClientTest.java +++ b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/apiclient/ElasticsearchClientTest.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.elasticsearch.apiclient; import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; @@ -94,7 +95,7 @@ public void elasticsearchStatus() throws IOException { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "elasticsearch"), - equalTo(DB_OPERATION, "info"), + equalTo(maybeStable(DB_OPERATION), "info"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(URL_FULL, httpHost.toURI() + "/"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), @@ -130,7 +131,7 @@ public void elasticsearchIndex() throws IOException { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "elasticsearch"), - equalTo(DB_OPERATION, "index"), + equalTo(maybeStable(DB_OPERATION), "index"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), equalTo(HTTP_REQUEST_METHOD, "PUT"), @@ -191,7 +192,7 @@ public void elasticsearchStatusAsync() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "elasticsearch"), - equalTo(DB_OPERATION, "info"), + equalTo(maybeStable(DB_OPERATION), "info"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), equalTo(HTTP_REQUEST_METHOD, "GET"), diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/build.gradle.kts b/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/build.gradle.kts index b9b1bf2e1505..175bd3bd6ab9 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/build.gradle.kts +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/build.gradle.kts @@ -49,10 +49,20 @@ dependencies { latestDepTestLibrary("org.elasticsearch.client:transport:5.0.0") } -tasks.withType().configureEach { - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.elasticsearch.experimental-span-attributes=true") - // required on jdk17 - jvmArgs("--add-opens=java.base/java.nio=ALL-UNNAMED") - jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") +tasks { + withType().configureEach { + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.elasticsearch.experimental-span-attributes=true") + // required on jdk17 + jvmArgs("--add-opens=java.base/java.nio=ALL-UNNAMED") + jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/build.gradle.kts b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/build.gradle.kts index eb8ff28ad473..508429dd1b42 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/build.gradle.kts +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/build.gradle.kts @@ -65,13 +65,23 @@ dependencies { latestDepTestLibrary("org.springframework.data:spring-data-elasticsearch:3.0.+") } -tasks.withType().configureEach { - systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) +tasks { + withType().configureEach { + systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.elasticsearch.experimental-span-attributes=true") + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.elasticsearch.experimental-span-attributes=true") - // required on jdk17 - jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") - jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") + // required on jdk17 + jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") + jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringRepositoryTest.java b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringRepositoryTest.java index d621b8c1f442..38c26d7fcfde 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringRepositoryTest.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringRepositoryTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.api.common.AttributeKey.longKey; import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; @@ -91,7 +92,7 @@ void emptyRepository() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "SearchAction"), + equalTo(maybeStable(DB_OPERATION), "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -125,7 +126,7 @@ void crud() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "IndexAction"), + equalTo(maybeStable(DB_OPERATION), "IndexAction"), equalTo(stringKey("elasticsearch.action"), "IndexAction"), equalTo(stringKey("elasticsearch.request"), "IndexRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -143,7 +144,7 @@ void crud() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "RefreshAction"), + equalTo(maybeStable(DB_OPERATION), "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -174,7 +175,7 @@ void crud() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "GetAction"), + equalTo(maybeStable(DB_OPERATION), "GetAction"), equalTo(stringKey("elasticsearch.action"), "GetAction"), equalTo(stringKey("elasticsearch.request"), "GetRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -208,7 +209,7 @@ void crud() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "IndexAction"), + equalTo(maybeStable(DB_OPERATION), "IndexAction"), equalTo(stringKey("elasticsearch.action"), "IndexAction"), equalTo(stringKey("elasticsearch.request"), "IndexRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -226,7 +227,7 @@ void crud() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "RefreshAction"), + equalTo(maybeStable(DB_OPERATION), "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -252,7 +253,7 @@ void crud() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "GetAction"), + equalTo(maybeStable(DB_OPERATION), "GetAction"), equalTo(stringKey("elasticsearch.action"), "GetAction"), equalTo(stringKey("elasticsearch.request"), "GetRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -284,7 +285,7 @@ void crud() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "DeleteAction"), + equalTo(maybeStable(DB_OPERATION), "DeleteAction"), equalTo(stringKey("elasticsearch.action"), "DeleteAction"), equalTo(stringKey("elasticsearch.request"), "DeleteRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -301,7 +302,7 @@ void crud() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "RefreshAction"), + equalTo(maybeStable(DB_OPERATION), "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), @@ -327,7 +328,7 @@ void crud() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "SearchAction"), + equalTo(maybeStable(DB_OPERATION), "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), "test-index"), diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringTemplateTest.java b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringTemplateTest.java index 3c53c73c6fd1..d48df4a86fe8 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringTemplateTest.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/springdata/Elasticsearch53SpringTemplateTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.api.common.AttributeKey.longKey; import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; @@ -175,7 +176,7 @@ void elasticsearchError() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "RefreshAction"), + equalTo(maybeStable(DB_OPERATION), "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName)))); @@ -230,7 +231,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "CreateIndexAction"), + equalTo(maybeStable(DB_OPERATION), "CreateIndexAction"), equalTo(stringKey("elasticsearch.action"), "CreateIndexAction"), equalTo(stringKey("elasticsearch.request"), "CreateIndexRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName))), @@ -244,7 +245,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "ClusterHealthAction"), + equalTo(maybeStable(DB_OPERATION), "ClusterHealthAction"), equalTo(stringKey("elasticsearch.action"), "ClusterHealthAction"), equalTo(stringKey("elasticsearch.request"), "ClusterHealthRequest"))), trace -> @@ -257,7 +258,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "SearchAction"), + equalTo(maybeStable(DB_OPERATION), "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName), @@ -272,7 +273,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "IndexAction"), + equalTo(maybeStable(DB_OPERATION), "IndexAction"), equalTo(stringKey("elasticsearch.action"), "IndexAction"), equalTo(stringKey("elasticsearch.request"), "IndexRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName), @@ -292,7 +293,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "RefreshAction"), + equalTo(maybeStable(DB_OPERATION), "RefreshAction"), equalTo(stringKey("elasticsearch.action"), "RefreshAction"), equalTo(stringKey("elasticsearch.request"), "RefreshRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName), @@ -309,7 +310,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "SearchAction"), + equalTo(maybeStable(DB_OPERATION), "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName), @@ -393,7 +394,7 @@ void resultsExtractor() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "SearchAction"), + equalTo(maybeStable(DB_OPERATION), "SearchAction"), equalTo(stringKey("elasticsearch.action"), "SearchAction"), equalTo(stringKey("elasticsearch.request"), "SearchRequest"), equalTo(stringKey("elasticsearch.request.indices"), indexName)))); diff --git a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/build.gradle.kts b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/build.gradle.kts index 78c060901269..b9787c55cbc9 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/build.gradle.kts +++ b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/build.gradle.kts @@ -101,7 +101,12 @@ tasks { jvmArgs("-Dotel.instrumentation.elasticsearch.experimental-span-attributes=true") } + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testing.suites) + dependsOn(testStableSemconv) } } diff --git a/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchNodeClientTest.java b/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchNodeClientTest.java index 857ad4fcb6f0..d82012022835 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchNodeClientTest.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchNodeClientTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.api.common.AttributeKey.longKey; import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM; @@ -72,7 +73,7 @@ void elasticsearchStatus(ThrowingSupplier suppli equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "ClusterHealthAction"), + equalTo(maybeStable(DB_OPERATION), "ClusterHealthAction"), equalTo(ELASTICSEARCH_ACTION, "ClusterHealthAction"), equalTo(ELASTICSEARCH_REQUEST, "ClusterHealthRequest")), span -> @@ -121,7 +122,7 @@ void elasticsearchError(Runnable action) { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "GetAction"), + equalTo(maybeStable(DB_OPERATION), "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, "invalid-index")), @@ -183,7 +184,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "CreateIndexAction"), + equalTo(maybeStable(DB_OPERATION), "CreateIndexAction"), equalTo(ELASTICSEARCH_ACTION, "CreateIndexAction"), equalTo(ELASTICSEARCH_REQUEST, "CreateIndexRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName))), @@ -197,7 +198,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "ClusterHealthAction"), + equalTo(maybeStable(DB_OPERATION), "ClusterHealthAction"), equalTo(ELASTICSEARCH_ACTION, "ClusterHealthAction"), equalTo(ELASTICSEARCH_REQUEST, "ClusterHealthRequest"))), trace -> @@ -210,7 +211,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "GetAction"), + equalTo(maybeStable(DB_OPERATION), "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), @@ -228,7 +229,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "IndexAction"), + equalTo(maybeStable(DB_OPERATION), "IndexAction"), equalTo(ELASTICSEARCH_ACTION, "IndexAction"), equalTo(ELASTICSEARCH_REQUEST, "IndexRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), @@ -247,7 +248,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "GetAction"), + equalTo(maybeStable(DB_OPERATION), "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), diff --git a/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchTransportClientTest.java b/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchTransportClientTest.java index 4b019433edeb..cd69a09f0ba4 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchTransportClientTest.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/AbstractElasticsearchTransportClientTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.api.common.AttributeKey.longKey; import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil.orderByRootSpanName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; @@ -87,7 +88,7 @@ void elasticsearchStatus(ThrowingSupplier suppli equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "ClusterHealthAction"), + equalTo(maybeStable(DB_OPERATION), "ClusterHealthAction"), equalTo(ELASTICSEARCH_ACTION, "ClusterHealthAction"), equalTo(ELASTICSEARCH_REQUEST, "ClusterHealthRequest"))), span -> @@ -143,7 +144,7 @@ void elasticsearchError(Runnable action) { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "GetAction"), + equalTo(maybeStable(DB_OPERATION), "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, "invalid-index")), @@ -204,7 +205,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "CreateIndexAction"), + equalTo(maybeStable(DB_OPERATION), "CreateIndexAction"), equalTo(ELASTICSEARCH_ACTION, "CreateIndexAction"), equalTo(ELASTICSEARCH_REQUEST, "CreateIndexRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName)))), @@ -218,7 +219,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, getPutMappingActionName()), + equalTo(maybeStable(DB_OPERATION), getPutMappingActionName()), equalTo(ELASTICSEARCH_ACTION, getPutMappingActionName()), equalTo(ELASTICSEARCH_REQUEST, "PutMappingRequest"))), trace -> @@ -234,7 +235,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "IndexAction"), + equalTo(maybeStable(DB_OPERATION), "IndexAction"), equalTo(ELASTICSEARCH_ACTION, "IndexAction"), equalTo(ELASTICSEARCH_REQUEST, "IndexRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), @@ -257,7 +258,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "GetAction"), + equalTo(maybeStable(DB_OPERATION), "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), @@ -277,7 +278,7 @@ void elasticsearchGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.ELASTICSEARCH), - equalTo(DB_OPERATION, "GetAction"), + equalTo(maybeStable(DB_OPERATION), "GetAction"), equalTo(ELASTICSEARCH_ACTION, "GetAction"), equalTo(ELASTICSEARCH_REQUEST, "GetRequest"), equalTo(ELASTICSEARCH_REQUEST_INDICES, indexName), diff --git a/instrumentation/geode-1.4/javaagent/build.gradle.kts b/instrumentation/geode-1.4/javaagent/build.gradle.kts index 6382b0aedd6d..dd436deef63f 100644 --- a/instrumentation/geode-1.4/javaagent/build.gradle.kts +++ b/instrumentation/geode-1.4/javaagent/build.gradle.kts @@ -16,3 +16,13 @@ dependencies { compileOnly("com.google.auto.value:auto-value-annotations") annotationProcessor("com.google.auto.value:auto-value") } + +tasks { + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } +} diff --git a/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/PutGetTest.java b/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/PutGetTest.java index 6974a48571dc..55b073d7b4f2 100644 --- a/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/PutGetTest.java +++ b/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/PutGetTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.geode; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; @@ -137,23 +138,23 @@ void assertGeodeTrace(String verb, String query) { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "geode"), - equalTo(DB_NAME, "test-region"), - equalTo(DB_OPERATION, "clear")), + equalTo(maybeStable(DB_NAME), "test-region"), + equalTo(maybeStable(DB_OPERATION), "clear")), span -> span.hasName("put test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "geode"), - equalTo(DB_NAME, "test-region"), - equalTo(DB_OPERATION, "put")), + equalTo(maybeStable(DB_NAME), "test-region"), + equalTo(maybeStable(DB_OPERATION), "put")), span -> span.hasName(verb.concat(" test-region")) .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "geode"), - equalTo(DB_NAME, "test-region"), - equalTo(DB_OPERATION, verb), - equalTo(DB_STATEMENT, query)))); + equalTo(maybeStable(DB_NAME), "test-region"), + equalTo(maybeStable(DB_OPERATION), verb), + equalTo(maybeStable(DB_STATEMENT), query)))); } static class Card implements DataSerializable { diff --git a/instrumentation/hibernate/hibernate-3.3/javaagent/build.gradle.kts b/instrumentation/hibernate/hibernate-3.3/javaagent/build.gradle.kts index 0a67d56a2826..f46f2d1bf8ec 100644 --- a/instrumentation/hibernate/hibernate-3.3/javaagent/build.gradle.kts +++ b/instrumentation/hibernate/hibernate-3.3/javaagent/build.gradle.kts @@ -48,10 +48,20 @@ if (findProperty("testLatestDeps") as Boolean) { } } -tasks.withType().configureEach { - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") - // required on jdk17 - jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") - jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") +tasks { + withType().configureEach { + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") + // required on jdk17 + jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") + jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/hibernate/hibernate-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/AbstractHibernateTest.java b/instrumentation/hibernate/hibernate-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/AbstractHibernateTest.java index 037dfe6b2a30..ea780b6cb6c1 100644 --- a/instrumentation/hibernate/hibernate-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/AbstractHibernateTest.java +++ b/instrumentation/hibernate/hibernate-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/AbstractHibernateTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.hibernate.v3_3; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -69,12 +71,12 @@ static SpanDataAssert assertClientSpan(SpanDataAssert span, SpanData parent) { .hasParent(parent) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")); + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies(maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")); } @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @@ -84,14 +86,14 @@ static SpanDataAssert assertClientSpan(SpanDataAssert span, SpanData parent, Str .hasParent(parent) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : "h2:mem:"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), stringAssert -> stringAssert.startsWith(verb.toLowerCase(Locale.ROOT))), - equalTo(DB_OPERATION, verb), - equalTo(DB_SQL_TABLE, "Value")); + equalTo(maybeStable(DB_OPERATION), verb), + equalTo(maybeStable(DB_SQL_TABLE), "Value")); } static SpanDataAssert assertSessionSpan(SpanDataAssert span, SpanData parent, String spanName) { diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/build.gradle.kts b/instrumentation/hibernate/hibernate-4.0/javaagent/build.gradle.kts index c2b3ac2d615b..aa70c11f7a09 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/build.gradle.kts +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/build.gradle.kts @@ -71,20 +71,25 @@ testing { } } -tasks.withType().configureEach { - // required on jdk17 - jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") - jvmArgs("--add-opens=java.base/java.lang.invoke=ALL-UNNAMED") - jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") +tasks { + withType().configureEach { + // required on jdk17 + jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") + jvmArgs("--add-opens=java.base/java.lang.invoke=ALL-UNNAMED") + jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") - jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") -} + jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } -tasks { check { dependsOn(testing.suites) + dependsOn(testStableSemconv) } } diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaTest.java index 18f0335af8f8..829a9b7ab296 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaTest.java @@ -8,6 +8,8 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -73,13 +75,16 @@ void testCriteria(String methodName, Consumer interaction) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), satisfies( - DB_STATEMENT, stringAssert -> stringAssert.startsWith("select")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Value")), + maybeStable(DB_STATEMENT), + stringAssert -> stringAssert.startsWith("select")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/EntityManagerTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/EntityManagerTest.java index f9af700cedbe..e964af69647c 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/EntityManagerTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/EntityManagerTest.java @@ -8,6 +8,8 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -107,12 +109,16 @@ void testHibernateActions(Parameter parameter) { .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value"))); + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value"))); } else { trace.hasSpansSatisfyingExactly( @@ -134,12 +140,16 @@ void testHibernateActions(Parameter parameter) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -216,12 +226,16 @@ void testHibernatePersist() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -238,12 +252,16 @@ void testHibernatePersist() { .hasParent(trace.getSpan(3)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")))); + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")))); } @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @@ -283,12 +301,16 @@ void testAttachesStateToQuery(Function queryBuildMethod) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryTest.java index 0e72ce931bdc..fc049858e517 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryTest.java @@ -8,6 +8,8 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -68,12 +70,16 @@ void testHibernateQueryExecuteUpdateWithTransaction() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -122,12 +128,14 @@ void testHibernateQuerySingleCall(Parameter parameter) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("select ")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Value")))); + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("select ")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value")))); } private static Stream providesArgumentsSingleCall() { @@ -194,12 +202,14 @@ void testHibernateQueryIterate() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("select ")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("select ")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionTest.java index b34664a74344..dad05c3e6fa3 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionTest.java @@ -8,6 +8,8 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -71,12 +73,16 @@ void testHibernateAction(Parameter parameter) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -178,12 +184,16 @@ void testHibernateActionStateless(Parameter parameter) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -321,12 +331,16 @@ void testHibernateReplicate(Parameter parameter) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -343,12 +357,16 @@ void testHibernateReplicate(Parameter parameter) { .hasParent(trace.getSpan(3)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")))); + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")))); } private static Stream provideArgumentsHibernateReplicate() { @@ -473,12 +491,16 @@ void testHibernateCommitAction(Parameter parameter) { .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")))); + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")))); } private static Stream provideArgumentsHibernateCommitAction() { @@ -648,12 +670,16 @@ void testAttachesStateToQueryCreated(Consumer queryBuilder) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies( + maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -745,13 +771,16 @@ void testHibernateOverlappingSessions() { .hasParent(trace.getSpan(2)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), satisfies( - DB_STATEMENT, stringAssert -> stringAssert.startsWith("insert")), - equalTo(DB_OPERATION, "INSERT"), - equalTo(DB_SQL_TABLE, "Value")), + maybeStable(DB_STATEMENT), + stringAssert -> stringAssert.startsWith("insert")), + equalTo(maybeStable(DB_OPERATION), "INSERT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> { span.hasName("Session.save " + Value.class.getName()) .hasKind(INTERNAL) @@ -788,26 +817,32 @@ void testHibernateOverlappingSessions() { .hasParent(trace.getSpan(6)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), satisfies( - DB_STATEMENT, stringAssert -> stringAssert.startsWith("insert")), - equalTo(DB_OPERATION, "INSERT"), - equalTo(DB_SQL_TABLE, "Value")), + maybeStable(DB_STATEMENT), + stringAssert -> stringAssert.startsWith("insert")), + equalTo(maybeStable(DB_OPERATION), "INSERT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("DELETE db1.Value") .hasKind(CLIENT) .hasParent(trace.getSpan(6)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), satisfies( - DB_STATEMENT, stringAssert -> stringAssert.startsWith("delete")), - equalTo(DB_OPERATION, "DELETE"), - equalTo(DB_SQL_TABLE, "Value")))); + maybeStable(DB_STATEMENT), + stringAssert -> stringAssert.startsWith("delete")), + equalTo(maybeStable(DB_OPERATION), "DELETE"), + equalTo(maybeStable(DB_SQL_TABLE), "Value")))); assertThat(sessionId1.get()).isNotEqualTo(sessionId2.get()); assertThat(sessionId1.get()).isNotEqualTo(sessionId3.get()); diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/SpringJpaTest.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/SpringJpaTest.java index 4d33f1221bd8..2cbed93d9b42 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/SpringJpaTest.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/test/java/spring/jpa/SpringJpaTest.java @@ -8,6 +8,8 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -73,17 +75,19 @@ void testCrud() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName(.*)from Customer(.*)"))), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Customer")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -128,17 +132,19 @@ void testCrud() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), val -> val.matches( Pattern.compile( "insert into Customer (.*) values \\(.*, \\?, \\?\\)"))), - equalTo(DB_OPERATION, "INSERT"), - equalTo(DB_SQL_TABLE, "Customer")), + equalTo(maybeStable(DB_OPERATION), "INSERT"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -171,11 +177,15 @@ void testCrud() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_STATEMENT, "call next value for hibernate_sequence"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo(DB_OPERATION, "CALL")), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + maybeStable(DB_STATEMENT), + "call next value for hibernate_sequence"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + equalTo(maybeStable(DB_OPERATION), "CALL")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -193,17 +203,19 @@ void testCrud() { .hasParent(trace.getSpan(3)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), val -> val.matches( Pattern.compile( "insert into Customer (.*) values \\(.* \\?, \\?\\)"))), - equalTo(DB_OPERATION, "INSERT"), - equalTo(DB_SQL_TABLE, "Customer"))); + equalTo(maybeStable(DB_OPERATION), "INSERT"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer"))); } }); testing.clearData(); @@ -240,17 +252,19 @@ void testCrud() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName (.*)from Customer (.*)where ([^.]+).id=\\?"))), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Customer")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) @@ -268,14 +282,16 @@ void testCrud() { .hasParent(trace.getSpan(3)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), equalTo( - DB_STATEMENT, + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + equalTo( + maybeStable(DB_STATEMENT), "update Customer set firstName=?, lastName=? where id=?"), - equalTo(DB_OPERATION, "UPDATE"), - equalTo(DB_SQL_TABLE, "Customer")))); + equalTo(maybeStable(DB_OPERATION), "UPDATE"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer")))); testing.clearData(); Customer foundCustomer = @@ -306,17 +322,19 @@ void testCrud() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName (.*)from Customer (.*)(where ([^.]+).lastName=\\?)"))), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Customer")))); + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer")))); testing.clearData(); testing.runWithSpan("parent", () -> repo.delete(foundCustomer)); @@ -344,17 +362,19 @@ void testCrud() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName (.*)from Customer (.*)where ([^.]+).id=\\?"))), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Customer")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer")), span -> span.hasName("Session.delete spring.jpa.Customer") .hasKind(INTERNAL) @@ -376,12 +396,14 @@ void testCrud() { .hasKind(CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo(DB_STATEMENT, "delete from Customer where id=?"), - equalTo(DB_OPERATION, "DELETE"), - equalTo(DB_SQL_TABLE, "Customer"))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + equalTo(maybeStable(DB_STATEMENT), "delete from Customer where id=?"), + equalTo(maybeStable(DB_OPERATION), "DELETE"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer"))); } else { String findAction; @@ -407,17 +429,19 @@ void testCrud() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), val -> val.matches( Pattern.compile( "select ([^.]+).id([^,]*), ([^.]+).firstName([^,]*), ([^.]+).lastName (.*)from Customer (.*)where ([^.]+).id=\\?"))), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Customer")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer")), span -> span.hasName("Session.merge spring.jpa.Customer") .hasKind(INTERNAL) @@ -447,12 +471,14 @@ void testCrud() { .hasKind(CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo(DB_STATEMENT, "delete from Customer where id=?"), - equalTo(DB_OPERATION, "DELETE"), - equalTo(DB_SQL_TABLE, "Customer"))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + equalTo(maybeStable(DB_STATEMENT), "delete from Customer where id=?"), + equalTo(maybeStable(DB_OPERATION), "DELETE"), + equalTo(maybeStable(DB_SQL_TABLE), "Customer"))); } }); } diff --git a/instrumentation/hibernate/hibernate-6.0/javaagent/build.gradle.kts b/instrumentation/hibernate/hibernate-6.0/javaagent/build.gradle.kts index 0b7a9c5d339e..6cab40bb5cd5 100644 --- a/instrumentation/hibernate/hibernate-6.0/javaagent/build.gradle.kts +++ b/instrumentation/hibernate/hibernate-6.0/javaagent/build.gradle.kts @@ -35,7 +35,17 @@ otelJava { minJavaVersionSupported.set(JavaVersion.VERSION_11) } -tasks.withType().configureEach { - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") +tasks { + withType().configureEach { + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/CriteriaTest.java b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/CriteriaTest.java index cd1ba07460c0..c02374b1e18e 100644 --- a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/CriteriaTest.java +++ b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/CriteriaTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.hibernate.v6_0; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -83,13 +85,16 @@ void testCriteriaQuery(Consumer> interaction) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), satisfies( - DB_STATEMENT, stringAssert -> stringAssert.startsWith("select")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Value")), + maybeStable(DB_STATEMENT), + stringAssert -> stringAssert.startsWith("select")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> span.hasName("Transaction.commit") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/EntityManagerTest.java b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/EntityManagerTest.java index 927c404d8d41..93aff1f3184e 100644 --- a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/EntityManagerTest.java +++ b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/EntityManagerTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.hibernate.v6_0; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -145,12 +147,15 @@ void testAttachesStateToQuery(Parameter parameter) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> assertTransactionCommitSpan( span, @@ -298,12 +303,12 @@ private static SpanDataAssert assertClientSpan(SpanDataAssert span, SpanData par .hasParent(parent) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")); + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies(maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")); } @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @@ -314,12 +319,12 @@ private static SpanDataAssert assertClientSpan( .hasParent(parent) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")); + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies(maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")); } private static SpanDataAssert assertSessionSpan( diff --git a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/ProcedureCallTest.java b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/ProcedureCallTest.java index 250515d4b2dd..9f528df5cf7d 100644 --- a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/ProcedureCallTest.java +++ b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/ProcedureCallTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.hibernate.v6_0; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -108,11 +110,13 @@ void testProcedureCall() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo(DB_STATEMENT, "{call TEST_PROC()}"), - equalTo(DB_OPERATION, "CALL")), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + equalTo(maybeStable(DB_STATEMENT), "{call TEST_PROC()}"), + equalTo(maybeStable(DB_OPERATION), "CALL")), span -> span.hasName("Transaction.commit") .hasKind(SpanKind.INTERNAL) diff --git a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/SessionTest.java b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/SessionTest.java index bff1e8b6fd0f..69e95ce662db 100644 --- a/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/SessionTest.java +++ b/instrumentation/hibernate/hibernate-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v6_0/SessionTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.hibernate.v6_0; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -250,12 +252,15 @@ void testAttachesStateToQuery(Parameter parameter) { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Value")), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value")), span -> assertSpanWithSessionId( span, @@ -813,12 +818,12 @@ private static SpanDataAssert assertClientSpan(SpanDataAssert span, SpanData par .hasParent(parent) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), - satisfies(DB_STATEMENT, val -> val.isInstanceOf(String.class)), - satisfies(DB_OPERATION, val -> val.isInstanceOf(String.class)), - equalTo(DB_SQL_TABLE, "Value")); + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : "h2:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.isInstanceOf(String.class)), + satisfies(maybeStable(DB_OPERATION), val -> val.isInstanceOf(String.class)), + equalTo(maybeStable(DB_SQL_TABLE), "Value")); } @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @@ -829,13 +834,13 @@ private static SpanDataAssert assertClientSpan( .hasParent(parent) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db1"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "h2:mem:"), + equalTo(maybeStable(DB_NAME), "db1"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : "h2:mem:"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), stringAssert -> stringAssert.startsWith(verb.toLowerCase(Locale.ROOT))), - equalTo(DB_OPERATION, verb), - equalTo(DB_SQL_TABLE, "Value")); + equalTo(maybeStable(DB_OPERATION), verb), + equalTo(maybeStable(DB_SQL_TABLE), "Value")); } } diff --git a/instrumentation/hibernate/hibernate-6.0/spring-testing/build.gradle.kts b/instrumentation/hibernate/hibernate-6.0/spring-testing/build.gradle.kts index b55825df9f03..723a297a859d 100644 --- a/instrumentation/hibernate/hibernate-6.0/spring-testing/build.gradle.kts +++ b/instrumentation/hibernate/hibernate-6.0/spring-testing/build.gradle.kts @@ -26,11 +26,21 @@ otelJava { minJavaVersionSupported.set(JavaVersion.VERSION_17) } -tasks.withType().configureEach { - jvmArgs("-javaagent:" + springAgent.singleFile.absolutePath) +tasks { + withType().configureEach { + jvmArgs("-javaagent:" + springAgent.singleFile.absolutePath) - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") - jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/hibernate/hibernate-6.0/spring-testing/src/test/groovy/SpringJpaTest.groovy b/instrumentation/hibernate/hibernate-6.0/spring-testing/src/test/groovy/SpringJpaTest.groovy index 6be2e3e5cdb7..d0ffa8c6c36f 100644 --- a/instrumentation/hibernate/hibernate-6.0/spring-testing/src/test/groovy/SpringJpaTest.groovy +++ b/instrumentation/hibernate/hibernate-6.0/spring-testing/src/test/groovy/SpringJpaTest.groovy @@ -14,6 +14,8 @@ import spring.jpa.PersistenceConfig import static io.opentelemetry.api.trace.SpanKind.CLIENT import static io.opentelemetry.api.trace.SpanKind.INTERNAL +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable class SpringJpaTest extends AgentInstrumentationSpecification { @@ -62,12 +64,12 @@ class SpringJpaTest extends AgentInstrumentationSpecification { childOf span(1) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName(.*)from Customer(.*)/ - "$DbIncubatingAttributes.DB_OPERATION" "SELECT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "Customer" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName(.*)from Customer(.*)/ + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SELECT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "Customer" } } span(3) { @@ -118,11 +120,11 @@ class SpringJpaTest extends AgentInstrumentationSpecification { childOf span(1) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_STATEMENT" "call next value for Customer_SEQ" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_OPERATION" "CALL" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" "call next value for Customer_SEQ" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "CALL" } } span(3) { @@ -139,12 +141,12 @@ class SpringJpaTest extends AgentInstrumentationSpecification { childOf span(3) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" ~/insert into Customer \(.*\) values \(.*\)/ - "$DbIncubatingAttributes.DB_OPERATION" "INSERT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "Customer" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" ~/insert into Customer \(.*\) values \(.*\)/ + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "INSERT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "Customer" } } } else { @@ -154,12 +156,12 @@ class SpringJpaTest extends AgentInstrumentationSpecification { childOf span(1) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" ~/insert into Customer \(.*\) values \(.*\)/ - "$DbIncubatingAttributes.DB_OPERATION" "INSERT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "Customer" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" ~/insert into Customer \(.*\) values \(.*\)/ + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "INSERT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "Customer" } } span(3) { @@ -209,12 +211,12 @@ class SpringJpaTest extends AgentInstrumentationSpecification { kind CLIENT attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName (.*)from Customer (.*)where ([^.]+)\.id( ?)=( ?)\?/ - "$DbIncubatingAttributes.DB_OPERATION" "SELECT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "Customer" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName (.*)from Customer (.*)where ([^.]+)\.id( ?)=( ?)\?/ + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SELECT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "Customer" } } span(3) { @@ -230,12 +232,12 @@ class SpringJpaTest extends AgentInstrumentationSpecification { kind CLIENT attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" ~/update Customer set firstName=\?,(.*)lastName=\? where id=\?/ - "$DbIncubatingAttributes.DB_OPERATION" "UPDATE" - "$DbIncubatingAttributes.DB_SQL_TABLE" "Customer" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" ~/update Customer set firstName=\?,(.*)lastName=\? where id=\?/ + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "UPDATE" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "Customer" } } } @@ -273,12 +275,12 @@ class SpringJpaTest extends AgentInstrumentationSpecification { childOf span(1) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName (.*)from Customer (.*)(where ([^.]+)\.lastName( ?)=( ?)\?|)/ - "$DbIncubatingAttributes.DB_OPERATION" "SELECT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "Customer" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName (.*)from Customer (.*)(where ([^.]+)\.lastName( ?)=( ?)\?|)/ + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SELECT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "Customer" } } } @@ -317,12 +319,12 @@ class SpringJpaTest extends AgentInstrumentationSpecification { childOf span(1) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName (.*)from Customer (.*)where ([^.]+)\.id( ?)=( ?)\?/ - "$DbIncubatingAttributes.DB_OPERATION" "SELECT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "Customer" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName (.*)from Customer (.*)where ([^.]+)\.id( ?)=( ?)\?/ + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SELECT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "Customer" } } } @@ -342,12 +344,12 @@ class SpringJpaTest extends AgentInstrumentationSpecification { childOf span(1) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName (.*)from Customer (.*)where ([^.]+)\.id( ?)=( ?)\?/ - "$DbIncubatingAttributes.DB_OPERATION" "SELECT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "Customer" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" ~/select ([^.]+)\.id([^,]*),([^.]+)\.firstName([^,]*),([^.]+)\.lastName (.*)from Customer (.*)where ([^.]+)\.id( ?)=( ?)\?/ + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SELECT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "Customer" } } } @@ -372,12 +374,12 @@ class SpringJpaTest extends AgentInstrumentationSpecification { kind CLIENT attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "sa" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" "delete from Customer where id=?" - "$DbIncubatingAttributes.DB_OPERATION" "DELETE" - "$DbIncubatingAttributes.DB_SQL_TABLE" "Customer" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "sa" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" "delete from Customer where id=?" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "DELETE" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "Customer" } } } diff --git a/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/build.gradle.kts b/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/build.gradle.kts index 22e69a8ad86c..dbf4fd8ee5da 100644 --- a/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/build.gradle.kts +++ b/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/build.gradle.kts @@ -31,7 +31,17 @@ dependencies { latestDepTestLibrary("org.hibernate:hibernate-entitymanager:5.+") // documented limitation } -tasks.withType().configureEach { - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") +tasks { + withType().configureEach { + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.hibernate.experimental-span-attributes=true") + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallTest.java b/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallTest.java index 67a8712d5f2b..b8f5a35968a6 100644 --- a/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallTest.java +++ b/instrumentation/hibernate/hibernate-procedure-call-4.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallTest.java @@ -8,6 +8,8 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -120,11 +122,13 @@ void testProcedureCall() { .hasParent(trace.getSpan(1)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_STATEMENT, "{call TEST_PROC()}"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo(DB_OPERATION, "CALL")), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo(maybeStable(DB_STATEMENT), "{call TEST_PROC()}"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + equalTo(maybeStable(DB_OPERATION), "CALL")), span -> span.hasName("Transaction.commit") .hasKind(INTERNAL) diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/build.gradle.kts b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/build.gradle.kts index 5588958488f7..54b6b8038d97 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/build.gradle.kts +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/build.gradle.kts @@ -79,8 +79,13 @@ tasks { } } + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testing.suites) + dependsOn(testStableSemconv) } } diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive1Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/HibernateReactiveTest.java b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive1Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/HibernateReactiveTest.java index d7136189ccee..46f35502e2b0 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive1Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/HibernateReactiveTest.java +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive1Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/HibernateReactiveTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.hibernate.reactive.v1_0; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -305,13 +307,13 @@ private static void assertTrace() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_NAME, DB), - equalTo(DB_USER, USER_DB), + equalTo(maybeStable(DB_NAME), DB), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : USER_DB), equalTo( - DB_STATEMENT, + maybeStable(DB_STATEMENT), "select value0_.id as id1_0_0_, value0_.name as name2_0_0_ from Value value0_ where value0_.id=$1"), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Value"), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive2Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v2_0/HibernateReactiveTest.java b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive2Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v2_0/HibernateReactiveTest.java index db2eeb03af5a..f78264ca3ff3 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive2Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v2_0/HibernateReactiveTest.java +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/hibernateReactive2Test/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v2_0/HibernateReactiveTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.hibernate.reactive.v2_0; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -297,13 +299,13 @@ private static void assertTrace() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_NAME, DB), - equalTo(DB_USER, USER_DB), + equalTo(maybeStable(DB_NAME), DB), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : USER_DB), equalTo( - DB_STATEMENT, + maybeStable(DB_STATEMENT), "select v1_0.id,v1_0.name from Value v1_0 where v1_0.id=$1"), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "Value"), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "Value"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> diff --git a/instrumentation/influxdb-2.4/javaagent/build.gradle.kts b/instrumentation/influxdb-2.4/javaagent/build.gradle.kts index ab93583d3e03..04909adbc594 100644 --- a/instrumentation/influxdb-2.4/javaagent/build.gradle.kts +++ b/instrumentation/influxdb-2.4/javaagent/build.gradle.kts @@ -36,7 +36,10 @@ testing { } tasks { - test { + withType().configureEach { + // we disable the okhttp instrumentation, so we don't need to assert on the okhttp spans + // from the okhttp instrumentation we need OkHttp3IgnoredTypesConfigurer to fix context leaks + jvmArgs("-Dotel.instrumentation.okhttp.enabled=false") usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } @@ -45,10 +48,12 @@ tasks { dependsOn(testing.suites) } } -} -tasks.withType().configureEach { - // we disable the okhttp instrumentation, so we don't need to assert on the okhttp spans - // from the okhttp instrumentation we need OkHttp3IgnoredTypesConfigurer to fix context leaks - jvmArgs("-Dotel.instrumentation.okhttp.enabled=false") + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/influxdb-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClientTest.java b/instrumentation/influxdb-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClientTest.java index 3492b53017cc..4f3033991f97 100644 --- a/instrumentation/influxdb-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClientTest.java +++ b/instrumentation/influxdb-2.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.influxdb.v2_4; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -323,12 +324,12 @@ private static List attributeAssertions( result.addAll( asList( equalTo(DB_SYSTEM, "influxdb"), - equalTo(DB_NAME, databaseName), + equalTo(maybeStable(DB_NAME), databaseName), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), - equalTo(DB_OPERATION, operation))); + equalTo(maybeStable(DB_OPERATION), operation))); if (statement != null) { - result.add(equalTo(DB_STATEMENT, statement)); + result.add(equalTo(maybeStable(DB_STATEMENT), statement)); } return result; } diff --git a/instrumentation/influxdb-2.4/javaagent/src/test24/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClient24Test.java b/instrumentation/influxdb-2.4/javaagent/src/test24/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClient24Test.java index b430a4482cbd..e7bc6c08398e 100644 --- a/instrumentation/influxdb-2.4/javaagent/src/test24/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClient24Test.java +++ b/instrumentation/influxdb-2.4/javaagent/src/test24/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbClient24Test.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.influxdb.v2_4; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -152,12 +153,12 @@ private static List attributeAssertions( result.addAll( asList( equalTo(DB_SYSTEM, "influxdb"), - equalTo(DB_NAME, databaseName), + equalTo(maybeStable(DB_NAME), databaseName), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), - equalTo(DB_OPERATION, operation))); + equalTo(maybeStable(DB_OPERATION), operation))); if (statement != null) { - result.add(equalTo(DB_STATEMENT, statement)); + result.add(equalTo(maybeStable(DB_STATEMENT), statement)); } return result; } diff --git a/instrumentation/jdbc/javaagent/build.gradle.kts b/instrumentation/jdbc/javaagent/build.gradle.kts index c5e46b8e24ac..07bdea12d3ed 100644 --- a/instrumentation/jdbc/javaagent/build.gradle.kts +++ b/instrumentation/jdbc/javaagent/build.gradle.kts @@ -67,7 +67,25 @@ tasks { jvmArgs("-Dotel.instrumentation.jdbc-datasource.enabled=true") } + val testStableSemconv by registering(Test::class) { + filter { + excludeTestsMatching("SlickTest") + } + jvmArgs("-Dotel.instrumentation.jdbc-datasource.enabled=true") + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + val testSlickStableSemconv by registering(Test::class) { + filter { + includeTestsMatching("SlickTest") + } + include("**/SlickTest.*") + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testSlick) + dependsOn(testStableSemconv) + dependsOn(testSlickStableSemconv) } } diff --git a/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/JdbcInstrumentationTest.java b/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/JdbcInstrumentationTest.java index 105f834d3ab9..649b5c480e45 100644 --- a/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/JdbcInstrumentationTest.java +++ b/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/JdbcInstrumentationTest.java @@ -5,8 +5,9 @@ package io.opentelemetry.javaagent.instrumentation.jdbc.test; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; @@ -372,18 +373,12 @@ public void testBasicStatement( .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, system), - equalTo(DB_NAME, dbNameLower), - satisfies( - DB_USER, - val -> { - if (username != null) { - val.isEqualTo(username); - } - }), - equalTo(DB_CONNECTION_STRING, url), - equalTo(DB_STATEMENT, sanitizedQuery), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, table)))); + equalTo(maybeStable(DB_NAME), dbNameLower), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : username), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : url), + equalTo(maybeStable(DB_STATEMENT), sanitizedQuery), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), table)))); } static Stream preparedStatementStream() throws SQLException { @@ -497,18 +492,12 @@ void testPreparedStatementExecute( .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( equalTo(DB_SYSTEM, system), - equalTo(DB_NAME, dbNameLower), - satisfies( - DB_USER, - val -> { - if (username != null) { - val.isEqualTo(username); - } - }), - equalTo(DB_CONNECTION_STRING, url), - equalTo(DB_STATEMENT, sanitizedQuery), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, table)))); + equalTo(maybeStable(DB_NAME), dbNameLower), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : username), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : url), + equalTo(maybeStable(DB_STATEMENT), sanitizedQuery), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), table)))); } @ParameterizedTest @@ -540,18 +529,12 @@ void testPreparedStatementQuery( .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( equalTo(DB_SYSTEM, system), - equalTo(DB_NAME, dbNameLower), - satisfies( - DB_USER, - val -> { - if (username != null) { - val.isEqualTo(username); - } - }), - equalTo(DB_CONNECTION_STRING, url), - equalTo(DB_STATEMENT, sanitizedQuery), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, table)))); + equalTo(maybeStable(DB_NAME), dbNameLower), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : username), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : url), + equalTo(maybeStable(DB_STATEMENT), sanitizedQuery), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), table)))); } @ParameterizedTest @@ -583,18 +566,12 @@ void testPreparedCall( .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( equalTo(DB_SYSTEM, system), - equalTo(DB_NAME, dbNameLower), - satisfies( - DB_USER, - val -> { - if (username != null) { - val.isEqualTo(username); - } - }), - equalTo(DB_CONNECTION_STRING, url), - equalTo(DB_STATEMENT, sanitizedQuery), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, table)))); + equalTo(maybeStable(DB_NAME), dbNameLower), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : username), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : url), + equalTo(maybeStable(DB_STATEMENT), sanitizedQuery), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), table)))); } static Stream statementUpdateStream() throws SQLException { @@ -725,18 +702,12 @@ void testStatementUpdate( .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( equalTo(DB_SYSTEM, system), - equalTo(DB_NAME, dbNameLower), - satisfies( - DB_USER, - val -> { - if (username != null) { - val.isEqualTo(username); - } - }), - equalTo(DB_CONNECTION_STRING, url), - equalTo(DB_STATEMENT, query), - equalTo(DB_OPERATION, "CREATE TABLE"), - equalTo(DB_SQL_TABLE, table)))); + equalTo(maybeStable(DB_NAME), dbNameLower), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : username), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : url), + equalTo(maybeStable(DB_STATEMENT), query), + equalTo(maybeStable(DB_OPERATION), "CREATE TABLE"), + equalTo(maybeStable(DB_SQL_TABLE), table)))); } static Stream preparedStatementUpdateStream() throws SQLException { @@ -833,18 +804,12 @@ void testPreparedStatementUpdate( .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( equalTo(DB_SYSTEM, system), - equalTo(DB_NAME, dbNameLower), - satisfies( - DB_USER, - val -> { - if (username != null) { - val.isEqualTo(username); - } - }), - equalTo(DB_CONNECTION_STRING, url), - equalTo(DB_STATEMENT, query), - equalTo(DB_OPERATION, "CREATE TABLE"), - equalTo(DB_SQL_TABLE, table)))); + equalTo(maybeStable(DB_NAME), dbNameLower), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : username), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : url), + equalTo(maybeStable(DB_STATEMENT), query), + equalTo(maybeStable(DB_OPERATION), "CREATE TABLE"), + equalTo(maybeStable(DB_SQL_TABLE), table)))); } static Stream connectionConstructorStream() { @@ -946,18 +911,12 @@ void testConnectionConstructorThrowing( .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( equalTo(DB_SYSTEM, system), - equalTo(DB_NAME, dbNameLower), - satisfies( - DB_USER, - val -> { - if (username != null) { - val.isEqualTo(username); - } - }), - equalTo(DB_CONNECTION_STRING, url), - equalTo(DB_STATEMENT, sanitizedQuery), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, table)))); + equalTo(maybeStable(DB_NAME), dbNameLower), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : username), + equalTo(DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : url), + equalTo(maybeStable(DB_STATEMENT), sanitizedQuery), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), table)))); } static Stream getConnectionStream() { @@ -1022,15 +981,11 @@ void testGetConnection( datasource.getClass().getName()), equalTo(CodeIncubatingAttributes.CODE_FUNCTION, "getConnection"), equalTo(DB_SYSTEM, system), - satisfies( - DB_USER, - val -> { - if (user != null) { - val.isEqualTo(user); - } - }), - equalTo(DB_NAME, "jdbcunittest"), - equalTo(DB_CONNECTION_STRING, connectionString)))); + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : user), + equalTo(maybeStable(DB_NAME), "jdbcunittest"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : connectionString)))); if (recursive) { assertions.add( span -> @@ -1043,15 +998,11 @@ void testGetConnection( datasource.getClass().getName()), equalTo(CodeIncubatingAttributes.CODE_FUNCTION, "getConnection"), equalTo(DB_SYSTEM, system), - satisfies( - DB_USER, - val -> { - if (user != null) { - val.isEqualTo(user); - } - }), - equalTo(DB_NAME, "jdbcunittest"), - equalTo(DB_CONNECTION_STRING, connectionString))); + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : user), + equalTo(maybeStable(DB_NAME), "jdbcunittest"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : connectionString))); } trace.hasSpansSatisfyingExactly(assertions); }); @@ -1085,8 +1036,10 @@ void testGetClientInfoException(String query) throws SQLException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( equalTo(DB_SYSTEM, "other_sql"), - equalTo(DB_STATEMENT, "testing ?"), - equalTo(DB_CONNECTION_STRING, "testdb://localhost"), + equalTo(maybeStable(DB_STATEMENT), "testing ?"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "testdb://localhost"), equalTo(SERVER_ADDRESS, "localhost")))); } @@ -1166,11 +1119,13 @@ void testProduceProperSpanName( .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( equalTo(DB_SYSTEM, "other_sql"), - equalTo(DB_NAME, databaseName), - equalTo(DB_CONNECTION_STRING, "testdb://localhost"), - equalTo(DB_STATEMENT, sanitizedQuery), - equalTo(DB_OPERATION, operation), - equalTo(DB_SQL_TABLE, table), + equalTo(maybeStable(DB_NAME), databaseName), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "testdb://localhost"), + equalTo(maybeStable(DB_STATEMENT), sanitizedQuery), + equalTo(maybeStable(DB_OPERATION), operation), + equalTo(maybeStable(DB_SQL_TABLE), table), equalTo(SERVER_ADDRESS, "localhost")))); } @@ -1214,12 +1169,16 @@ void testConnectionCached(String connectionPoolName) throws SQLException { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, dbNameLower), - equalTo(DB_USER, "SA"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - equalTo(DB_STATEMENT, "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS"), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "INFORMATION_SCHEMA.SYSTEM_USERS"))); + equalTo(maybeStable(DB_NAME), dbNameLower), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "SA"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + equalTo( + maybeStable(DB_STATEMENT), + "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS"), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "INFORMATION_SCHEMA.SYSTEM_USERS"))); for (int i = 0; i < numQueries; i++) { assertions.add(traceAssertConsumer); } @@ -1284,10 +1243,12 @@ void testHandleRecursiveStatements( .hasParent(trace.getSpan(0)) .hasAttributesSatisfying( equalTo(DB_SYSTEM, "other_sql"), - equalTo(DB_CONNECTION_STRING, "testdb://localhost"), - equalTo(DB_STATEMENT, "SELECT * FROM table"), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "table"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "testdb://localhost"), + equalTo(maybeStable(DB_STATEMENT), "SELECT * FROM table"), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "table"), equalTo(SERVER_ADDRESS, "localhost")))); } diff --git a/instrumentation/jdbc/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/scalaexecutors/SlickTest.scala b/instrumentation/jdbc/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/scalaexecutors/SlickTest.scala index fa8684e5dcfb..e12d958a6b73 100644 --- a/instrumentation/jdbc/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/scalaexecutors/SlickTest.scala +++ b/instrumentation/jdbc/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/scalaexecutors/SlickTest.scala @@ -6,24 +6,24 @@ package io.opentelemetry.javaagent.instrumentation.scalaexecutors import io.opentelemetry.api.trace.{SpanKind, Tracer} +import io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv +import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable import io.opentelemetry.instrumentation.testing.junit.{ AgentInstrumentationExtension, InstrumentationExtension } import io.opentelemetry.javaagent.testing.common.Java8BytecodeBridge -import io.opentelemetry.sdk.testing.assertj.{SpanDataAssert, TraceAssert} import io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemIncubatingValues - -import java.util.function.Consumer +import io.opentelemetry.sdk.testing.assertj.{SpanDataAssert, TraceAssert} +import io.opentelemetry.semconv.incubating.DbIncubatingAttributes._ import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.{Test, TestInstance} import org.junit.jupiter.api.extension.RegisterExtension +import org.junit.jupiter.api.{Test, TestInstance} +import slick.jdbc.H2Profile.api._ -import scala.concurrent.{Await, Future} +import java.util.function.Consumer import scala.concurrent.duration.Duration -import slick.jdbc.H2Profile.api._ +import scala.concurrent.{Await, Future} @TestInstance(TestInstance.Lifecycle.PER_CLASS) class SlickTest { @@ -81,18 +81,18 @@ class SlickTest { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM, DbSystemIncubatingValues.H2), + equalTo(maybeStable(DB_NAME), Db), equalTo( - DbIncubatingAttributes.DB_SYSTEM, - DbSystemIncubatingValues.H2 + DB_USER, + if (emitStableDatabaseSemconv()) null else Username ), - equalTo(DbIncubatingAttributes.DB_NAME, Db), - equalTo(DbIncubatingAttributes.DB_USER, Username), equalTo( - DbIncubatingAttributes.DB_CONNECTION_STRING, - "h2:mem:" + DB_CONNECTION_STRING, + if (emitStableDatabaseSemconv()) null else "h2:mem:" ), - equalTo(DbIncubatingAttributes.DB_STATEMENT, "SELECT ?"), - equalTo(DbIncubatingAttributes.DB_OPERATION, "SELECT") + equalTo(maybeStable(DB_STATEMENT), "SELECT ?"), + equalTo(maybeStable(DB_OPERATION), "SELECT") ) } ) diff --git a/instrumentation/jdbc/library/build.gradle.kts b/instrumentation/jdbc/library/build.gradle.kts index 02af72e4c9dc..63116006a6c9 100644 --- a/instrumentation/jdbc/library/build.gradle.kts +++ b/instrumentation/jdbc/library/build.gradle.kts @@ -41,4 +41,12 @@ tasks { into("build/extracted/shadow-bootstrap") include("io/opentelemetry/javaagent/bootstrap/**") } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java index f10e09e195f4..1f3db9d51bfa 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.jdbc.datasource; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; import static org.assertj.core.api.Assertions.assertThat; @@ -42,7 +43,7 @@ void buildWithDefaults() throws SQLException { span -> span.hasName("TestDataSource.getConnection"), span -> span.hasName("SELECT dbname") - .hasAttribute(equalTo(DB_STATEMENT, "SELECT ?;")))); + .hasAttribute(equalTo(maybeStable(DB_STATEMENT), "SELECT ?;")))); } @Test @@ -118,7 +119,7 @@ void buildWithSanitizationDisabled() throws SQLException { span -> span.hasName("TestDataSource.getConnection"), span -> span.hasName("SELECT dbname") - .hasAttribute(equalTo(DB_STATEMENT, "SELECT 1;")))); + .hasAttribute(equalTo(maybeStable(DB_STATEMENT), "SELECT 1;")))); } @Test diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java index 9fe862d9b1e4..b185c16f5a98 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.instrumentation.jdbc.datasource; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; @@ -58,8 +60,12 @@ void shouldEmitGetConnectionSpans(GetConnectionFunction getConnection) throws SQ TestDataSource.class.getName()), equalTo(CodeIncubatingAttributes.CODE_FUNCTION, "getConnection"), equalTo(DB_SYSTEM, "postgresql"), - equalTo(DB_NAME, "dbname"), - equalTo(DB_CONNECTION_STRING, "postgresql://127.0.0.1:5432")))); + equalTo(maybeStable(DB_NAME), "dbname"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() + ? null + : "postgresql://127.0.0.1:5432")))); assertThat(connection).isExactlyInstanceOf(OpenTelemetryConnection.class); DbInfo dbInfo = ((OpenTelemetryConnection) connection).getDbInfo(); diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryConnectionTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryConnectionTest.java index fb07e6bf2759..7b7b90c02dc8 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryConnectionTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryConnectionTest.java @@ -5,7 +5,9 @@ package io.opentelemetry.instrumentation.jdbc.internal; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; import static io.opentelemetry.instrumentation.jdbc.internal.JdbcInstrumenterFactory.createStatementInstrumenter; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -195,12 +197,14 @@ private static void jdbcTraceAssertion(DbInfo dbInfo, String query) { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, dbInfo.getSystem()), - equalTo(DB_NAME, dbInfo.getName()), - equalTo(DB_USER, dbInfo.getUser()), - equalTo(DB_CONNECTION_STRING, dbInfo.getShortUrl()), - equalTo(DB_STATEMENT, query), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "users"), + equalTo(maybeStable(DB_NAME), dbInfo.getName()), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : dbInfo.getUser()), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : dbInfo.getShortUrl()), + equalTo(maybeStable(DB_STATEMENT), query), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "users"), equalTo(SERVER_ADDRESS, dbInfo.getHost()), equalTo(SERVER_PORT, dbInfo.getPort())))); } diff --git a/instrumentation/jedis/jedis-1.4/javaagent/build.gradle.kts b/instrumentation/jedis/jedis-1.4/javaagent/build.gradle.kts index 4af0c8ce1d33..22293482fb0a 100644 --- a/instrumentation/jedis/jedis-1.4/javaagent/build.gradle.kts +++ b/instrumentation/jedis/jedis-1.4/javaagent/build.gradle.kts @@ -43,7 +43,12 @@ tasks { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testing.suites) + dependsOn(testStableSemconv) } } diff --git a/instrumentation/jedis/jedis-1.4/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/AbstractJedisTest.java b/instrumentation/jedis/jedis-1.4/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/AbstractJedisTest.java index 0ce182bce006..0786a51b1afc 100644 --- a/instrumentation/jedis/jedis-1.4/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/AbstractJedisTest.java +++ b/instrumentation/jedis/jedis-1.4/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/AbstractJedisTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.jedis; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -69,8 +70,8 @@ void setCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET foo ?"), - equalTo(DB_OPERATION, "SET"), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)))); } @@ -90,8 +91,8 @@ void getCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET foo ?"), - equalTo(DB_OPERATION, "SET"), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port))), trace -> @@ -101,8 +102,8 @@ void getCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET foo"), - equalTo(DB_OPERATION, "GET"), + equalTo(maybeStable(DB_STATEMENT), "GET foo"), + equalTo(maybeStable(DB_OPERATION), "GET"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)))); } @@ -122,8 +123,8 @@ void commandWithNoArguments() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET foo ?"), - equalTo(DB_OPERATION, "SET"), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port))), trace -> @@ -133,8 +134,8 @@ void commandWithNoArguments() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "RANDOMKEY"), - equalTo(DB_OPERATION, "RANDOMKEY"), + equalTo(maybeStable(DB_STATEMENT), "RANDOMKEY"), + equalTo(maybeStable(DB_OPERATION), "RANDOMKEY"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)))); } diff --git a/instrumentation/jedis/jedis-3.0/javaagent/build.gradle.kts b/instrumentation/jedis/jedis-3.0/javaagent/build.gradle.kts index 2a11c52f2268..532a471e280b 100644 --- a/instrumentation/jedis/jedis-3.0/javaagent/build.gradle.kts +++ b/instrumentation/jedis/jedis-3.0/javaagent/build.gradle.kts @@ -29,7 +29,15 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/jedis/jedis-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/Jedis30ClientTest.java b/instrumentation/jedis/jedis-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/Jedis30ClientTest.java index 1490c689a3b1..921610937bc1 100644 --- a/instrumentation/jedis/jedis-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/Jedis30ClientTest.java +++ b/instrumentation/jedis/jedis-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/Jedis30ClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.jedis.v3_0; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -80,8 +81,8 @@ void setCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET foo ?"), - equalTo(DB_OPERATION, "SET"), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(NETWORK_TYPE, "ipv4"), @@ -104,8 +105,8 @@ void getCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET foo ?"), - equalTo(DB_OPERATION, "SET"), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(NETWORK_TYPE, "ipv4"), @@ -118,8 +119,8 @@ void getCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET foo"), - equalTo(DB_OPERATION, "GET"), + equalTo(maybeStable(DB_STATEMENT), "GET foo"), + equalTo(maybeStable(DB_OPERATION), "GET"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(NETWORK_TYPE, "ipv4"), @@ -142,8 +143,8 @@ void commandWithNoArguments() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET foo ?"), - equalTo(DB_OPERATION, "SET"), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(NETWORK_TYPE, "ipv4"), @@ -156,8 +157,8 @@ void commandWithNoArguments() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "RANDOMKEY"), - equalTo(DB_OPERATION, "RANDOMKEY"), + equalTo(maybeStable(DB_STATEMENT), "RANDOMKEY"), + equalTo(maybeStable(DB_OPERATION), "RANDOMKEY"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(NETWORK_TYPE, "ipv4"), diff --git a/instrumentation/jedis/jedis-4.0/javaagent/build.gradle.kts b/instrumentation/jedis/jedis-4.0/javaagent/build.gradle.kts index d6127aa061e8..01afcaa36f52 100644 --- a/instrumentation/jedis/jedis-4.0/javaagent/build.gradle.kts +++ b/instrumentation/jedis/jedis-4.0/javaagent/build.gradle.kts @@ -25,9 +25,17 @@ dependencies { } tasks { - test { + withType().configureEach { // latest dep test fails because peer ip is 0:0:0:0:0:0:0:1 instead of 127.0.0.1 jvmArgs("-Djava.net.preferIPv4Stack=true") usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/jedis/jedis-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/Jedis40ClientTest.java b/instrumentation/jedis/jedis-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/Jedis40ClientTest.java index 27d7cd7c94e7..9e965ee16b99 100644 --- a/instrumentation/jedis/jedis-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/Jedis40ClientTest.java +++ b/instrumentation/jedis/jedis-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/Jedis40ClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.jedis.v4_0; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; @@ -73,8 +74,8 @@ void setCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET foo ?"), - equalTo(DB_OPERATION, "SET"), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"), equalTo(NETWORK_TYPE, "ipv4"), equalTo(NETWORK_PEER_PORT, port), equalTo(NETWORK_PEER_ADDRESS, ip)))); @@ -95,8 +96,8 @@ void getCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET foo ?"), - equalTo(DB_OPERATION, "SET"), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"), equalTo(NETWORK_TYPE, "ipv4"), equalTo(NETWORK_PEER_PORT, port), equalTo(NETWORK_PEER_ADDRESS, ip))), @@ -107,8 +108,8 @@ void getCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET foo"), - equalTo(DB_OPERATION, "GET"), + equalTo(maybeStable(DB_STATEMENT), "GET foo"), + equalTo(maybeStable(DB_OPERATION), "GET"), equalTo(NETWORK_TYPE, "ipv4"), equalTo(NETWORK_PEER_PORT, port), equalTo(NETWORK_PEER_ADDRESS, ip)))); @@ -129,8 +130,8 @@ void commandWithNoArguments() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET foo ?"), - equalTo(DB_OPERATION, "SET"), + equalTo(maybeStable(DB_STATEMENT), "SET foo ?"), + equalTo(maybeStable(DB_OPERATION), "SET"), equalTo(NETWORK_TYPE, "ipv4"), equalTo(NETWORK_PEER_PORT, port), equalTo(NETWORK_PEER_ADDRESS, ip))), @@ -141,8 +142,8 @@ void commandWithNoArguments() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "RANDOMKEY"), - equalTo(DB_OPERATION, "RANDOMKEY"), + equalTo(maybeStable(DB_STATEMENT), "RANDOMKEY"), + equalTo(maybeStable(DB_OPERATION), "RANDOMKEY"), equalTo(NETWORK_TYPE, "ipv4"), equalTo(NETWORK_PEER_PORT, port), equalTo(NETWORK_PEER_ADDRESS, ip)))); diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/build.gradle.kts b/instrumentation/lettuce/lettuce-4.0/javaagent/build.gradle.kts index e462a677642f..97a05becb7c4 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/build.gradle.kts +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/build.gradle.kts @@ -17,9 +17,19 @@ dependencies { latestDepTestLibrary("biz.paluch.redis:lettuce:4.+") // see lettuce-5.0 module } -tasks.withType().configureEach { - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.lettuce.experimental-span-attributes=true") - jvmArgs("-Dotel.instrumentation.lettuce.connection-telemetry.enabled=true") - usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) +tasks { + withType().configureEach { + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.lettuce.experimental-span-attributes=true") + jvmArgs("-Dotel.instrumentation.lettuce.connection-telemetry.enabled=true") + usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectAttributesExtractor.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectAttributesExtractor.java index a37014f8373a..89cde6c423a7 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectAttributesExtractor.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectAttributesExtractor.java @@ -26,7 +26,6 @@ public void onStart(AttributesBuilder attributes, Context parentContext, RedisUR if (SemconvStability.emitStableDatabaseSemconv()) { attributes.put(DbIncubatingAttributes.DB_NAMESPACE, String.valueOf(database)); } - if (SemconvStability.emitOldDatabaseSemconv()) { attributes.put(DbIncubatingAttributes.DB_REDIS_DATABASE_INDEX, (long) database); } diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java index e4fa0f11ca10..ca25afe04e56 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v4_0; import static io.opentelemetry.api.common.AttributeKey.booleanKey; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -193,7 +194,8 @@ void testSetCommandUsingFutureGetWithTimeout() span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "SET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "SET")))); } @Test @@ -222,7 +224,7 @@ void testCommandChainedWithThenAccept() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "GET")), + equalTo(DB_SYSTEM, "redis"), equalTo(maybeStable(DB_OPERATION), "GET")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -283,7 +285,7 @@ void getNonExistentKeyCommandWithHandleAsyncAndChainedWithThenApply() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "GET")), + equalTo(DB_SYSTEM, "redis"), equalTo(maybeStable(DB_OPERATION), "GET")), span -> span.hasName("callback1") .hasKind(SpanKind.INTERNAL) @@ -323,7 +325,8 @@ void testCommandWithNoArgumentsUsingBiconsumer() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "RANDOMKEY")), + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "RANDOMKEY")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -366,14 +369,16 @@ void testHashSetAndThenNestApplyToHashGetall() { span.hasName("HMSET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "HMSET"))), + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "HMSET"))), trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("HGETALL") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "HGETALL")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "HGETALL")))); } @Test @@ -414,7 +419,8 @@ void testCommandCompletesExceptionally() { .hasStatus(StatusData.error()) .hasException(new IllegalStateException("TestException")) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "DEL")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "DEL")))); } @Test @@ -451,7 +457,7 @@ void testCommandBeforeItFinished() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_OPERATION, "SADD"), + equalTo(maybeStable(DB_OPERATION), "SADD"), equalTo(booleanKey("lettuce.command.cancelled"), true)), span -> span.hasName("callback") @@ -487,7 +493,8 @@ void testDebugSegfaultCommandWithNoArgumentShouldProduceSpan() { span.hasName("DEBUG") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "DEBUG")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "DEBUG")))); } @Test @@ -520,6 +527,7 @@ void testShutdownCommandShouldProduceSpan() { span.hasName("SHUTDOWN") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "SHUTDOWN")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "SHUTDOWN")))); } } diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceSyncClientTest.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceSyncClientTest.java index 19749a20ee93..e9d1dc16baf3 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceSyncClientTest.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceSyncClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v4_0; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -163,7 +164,8 @@ void testSetCommand() { span.hasName("SET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "SET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "SET")))); } @Test @@ -178,7 +180,8 @@ void testGetCommand() { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "GET")))); } @Test @@ -193,7 +196,8 @@ void testGetNonExistentKeyCommand() { span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "GET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "GET")))); } @Test @@ -208,7 +212,8 @@ void testCommandWithNoArguments() { span.hasName("RANDOMKEY") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "RANDOMKEY")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "RANDOMKEY")))); } @Test @@ -223,7 +228,8 @@ void testListCommand() { span.hasName("LPUSH") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "LPUSH")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "LPUSH")))); } @Test @@ -238,7 +244,8 @@ void testHashSetCommand() { span.hasName("HMSET") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "HMSET")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "HMSET")))); } @Test @@ -253,7 +260,8 @@ void testHashGetallCommand() { span.hasName("HGETALL") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "HGETALL")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "HGETALL")))); } @Test @@ -284,7 +292,8 @@ void testDebugSegfaultCommandWithNoArgumentShouldProduceSpan() { span.hasName("DEBUG") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "DEBUG")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "DEBUG")))); } @Test @@ -317,6 +326,7 @@ void testShutdownCommandShouldProduceSpan() { span.hasName("SHUTDOWN") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(DB_SYSTEM, "redis"), equalTo(DB_OPERATION, "SHUTDOWN")))); + equalTo(DB_SYSTEM, "redis"), + equalTo(maybeStable(DB_OPERATION), "SHUTDOWN")))); } } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/build.gradle.kts b/instrumentation/lettuce/lettuce-5.0/javaagent/build.gradle.kts index 0ebb0fa515ac..7e2dc0569d51 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/build.gradle.kts +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/build.gradle.kts @@ -22,9 +22,19 @@ dependencies { latestDepTestLibrary("io.lettuce:lettuce-core:5.0.+") // see lettuce-5.1 module } -tasks.withType().configureEach { - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.lettuce.experimental-span-attributes=true") - jvmArgs("-Dotel.instrumentation.lettuce.connection-telemetry.enabled=true") - usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) +tasks { + withType().configureEach { + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.lettuce.experimental-span-attributes=true") + jvmArgs("-Dotel.instrumentation.lettuce.connection-telemetry.enabled=true") + usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectAttributesExtractor.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectAttributesExtractor.java index 3a4f3995bf81..108604a23eec 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectAttributesExtractor.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectAttributesExtractor.java @@ -26,7 +26,6 @@ public void onStart(AttributesBuilder attributes, Context parentContext, RedisUR if (SemconvStability.emitStableDatabaseSemconv()) { attributes.put(DbIncubatingAttributes.DB_NAMESPACE, String.valueOf(database)); } - if (SemconvStability.emitOldDatabaseSemconv()) { attributes.put(DbIncubatingAttributes.DB_REDIS_DATABASE_INDEX, (long) database); } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java index 38dfc0953492..b03ceb0fa556 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v5_0; import static io.opentelemetry.api.common.AttributeKey.booleanKey; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; @@ -189,8 +190,8 @@ void testSetCommandUsingFutureGetWithTimeout() .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET TESTSETKEY ?"), - equalTo(DB_OPERATION, "SET")))); + equalTo(maybeStable(DB_STATEMENT), "SET TESTSETKEY ?"), + equalTo(maybeStable(DB_OPERATION), "SET")))); } @Test @@ -221,8 +222,8 @@ void testGetCommandChainedWithThenAccept() .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET TESTKEY"), - equalTo(DB_OPERATION, "GET")), + equalTo(maybeStable(DB_STATEMENT), "GET TESTKEY"), + equalTo(maybeStable(DB_OPERATION), "GET")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -278,8 +279,8 @@ void testGetNonExistentKeyCommandWithHandleAsyncAndChainedWithThenApply() .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"), - equalTo(DB_OPERATION, "GET")), + equalTo(maybeStable(DB_STATEMENT), "GET NON_EXISTENT_KEY"), + equalTo(maybeStable(DB_OPERATION), "GET")), span -> span.hasName("callback1") .hasKind(SpanKind.INTERNAL) @@ -321,8 +322,8 @@ void testCommandWithNoArgumentsUsingBiconsumer() .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "RANDOMKEY"), - equalTo(DB_OPERATION, "RANDOMKEY")), + equalTo(maybeStable(DB_STATEMENT), "RANDOMKEY"), + equalTo(maybeStable(DB_OPERATION), "RANDOMKEY")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -367,8 +368,10 @@ void testHashSetAndThenNestApplyToHashGetall() .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "HMSET TESTHM firstname ? lastname ? age ?"), - equalTo(DB_OPERATION, "HMSET"))), + equalTo( + maybeStable(DB_STATEMENT), + "HMSET TESTHM firstname ? lastname ? age ?"), + equalTo(maybeStable(DB_OPERATION), "HMSET"))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -376,8 +379,8 @@ void testHashSetAndThenNestApplyToHashGetall() .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "HGETALL TESTHM"), - equalTo(DB_OPERATION, "HGETALL")))); + equalTo(maybeStable(DB_STATEMENT), "HGETALL TESTHM"), + equalTo(maybeStable(DB_OPERATION), "HGETALL")))); } @Test @@ -419,8 +422,8 @@ void testCommandCompletesExceptionally() { .hasException(new IllegalStateException("TestException")) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "DEL key1 key2"), - equalTo(DB_OPERATION, "DEL")))); + equalTo(maybeStable(DB_STATEMENT), "DEL key1 key2"), + equalTo(maybeStable(DB_OPERATION), "DEL")))); } @Test @@ -457,8 +460,8 @@ void testCancelCommandBeforeItFinishes() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SADD SKEY ? ?"), - equalTo(DB_OPERATION, "SADD"), + equalTo(maybeStable(DB_STATEMENT), "SADD SKEY ? ?"), + equalTo(maybeStable(DB_OPERATION), "SADD"), equalTo(booleanKey("lettuce.command.cancelled"), true)), span -> span.hasName("callback") @@ -482,8 +485,8 @@ void testDebugSegfaultCommandWithNoArgumentShouldProduceSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "DEBUG SEGFAULT"), - equalTo(DB_OPERATION, "DEBUG")))); + equalTo(maybeStable(DB_STATEMENT), "DEBUG SEGFAULT"), + equalTo(maybeStable(DB_OPERATION), "DEBUG")))); } @Test @@ -502,7 +505,7 @@ void testShutdownCommandShouldProduceSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE"), - equalTo(DB_OPERATION, "SHUTDOWN")))); + equalTo(maybeStable(DB_STATEMENT), "SHUTDOWN NOSAVE"), + equalTo(maybeStable(DB_OPERATION), "SHUTDOWN")))); } } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceReactiveClientTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceReactiveClientTest.java index bf2e6ea0cab8..416a963ca048 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceReactiveClientTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceReactiveClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v5_0; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; @@ -95,8 +96,8 @@ void testSetCommandWithSubscribeOnDefinedConsumer() .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET TESTSETKEY ?"), - equalTo(DB_OPERATION, "SET")), + equalTo(maybeStable(DB_STATEMENT), "SET TESTSETKEY ?"), + equalTo(maybeStable(DB_OPERATION), "SET")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -126,8 +127,8 @@ void testGetCommandWithLambdaFunction() .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET TESTKEY"), - equalTo(DB_OPERATION, "GET")))); + equalTo(maybeStable(DB_STATEMENT), "GET TESTKEY"), + equalTo(maybeStable(DB_OPERATION), "GET")))); } // to make sure instrumentation's chained completion stages won't interfere with user's, while @@ -165,8 +166,8 @@ void testGetNonExistentKeyCommand() .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"), - equalTo(DB_OPERATION, "GET")), + equalTo(maybeStable(DB_STATEMENT), "GET NON_EXISTENT_KEY"), + equalTo(maybeStable(DB_OPERATION), "GET")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -195,8 +196,8 @@ void testCommandWithNoArguments() .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "RANDOMKEY"), - equalTo(DB_OPERATION, "RANDOMKEY")))); + equalTo(maybeStable(DB_STATEMENT), "RANDOMKEY"), + equalTo(maybeStable(DB_OPERATION), "RANDOMKEY")))); } @Test @@ -211,8 +212,8 @@ void testCommandFluxPublisher() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "COMMAND"), - equalTo(DB_OPERATION, "COMMAND"), + equalTo(maybeStable(DB_STATEMENT), "COMMAND"), + equalTo(maybeStable(DB_OPERATION), "COMMAND"), satisfies( AttributeKey.longKey("lettuce.command.results.count"), val -> val.isGreaterThan(100))))); @@ -230,8 +231,8 @@ void testCommandCancelAfter2OnFluxPublisher() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "COMMAND"), - equalTo(DB_OPERATION, "COMMAND"), + equalTo(maybeStable(DB_STATEMENT), "COMMAND"), + equalTo(maybeStable(DB_OPERATION), "COMMAND"), satisfies( AttributeKey.booleanKey("lettuce.command.cancelled"), AbstractBooleanAssert::isTrue), @@ -264,8 +265,8 @@ void testDebugSegfaultCommandReturnsMonoVoidWithNoArgumentShouldProduceSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "DEBUG SEGFAULT"), - equalTo(DB_OPERATION, "DEBUG")))); + equalTo(maybeStable(DB_STATEMENT), "DEBUG SEGFAULT"), + equalTo(maybeStable(DB_OPERATION), "DEBUG")))); } @Test @@ -284,8 +285,8 @@ void testShutdownCommandShouldProduceSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE"), - equalTo(DB_OPERATION, "SHUTDOWN")))); + equalTo(maybeStable(DB_STATEMENT), "SHUTDOWN NOSAVE"), + equalTo(maybeStable(DB_OPERATION), "SHUTDOWN")))); } @Test @@ -304,16 +305,16 @@ void testBlockingSubscriber() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET a ?"), - equalTo(DB_OPERATION, "SET")), + equalTo(maybeStable(DB_STATEMENT), "SET a ?"), + equalTo(maybeStable(DB_OPERATION), "SET")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET a"), - equalTo(DB_OPERATION, "GET")))); + equalTo(maybeStable(DB_STATEMENT), "GET a"), + equalTo(maybeStable(DB_OPERATION), "GET")))); } @Test @@ -332,16 +333,16 @@ void testAsyncSubscriber() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET a ?"), - equalTo(DB_OPERATION, "SET")), + equalTo(maybeStable(DB_STATEMENT), "SET a ?"), + equalTo(maybeStable(DB_OPERATION), "SET")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET a"), - equalTo(DB_OPERATION, "GET")))); + equalTo(maybeStable(DB_STATEMENT), "GET a"), + equalTo(maybeStable(DB_OPERATION), "GET")))); } @Test @@ -365,15 +366,15 @@ void testAsyncSubscriberWithSpecificThreadPool() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET a ?"), - equalTo(DB_OPERATION, "SET")), + equalTo(maybeStable(DB_STATEMENT), "SET a ?"), + equalTo(maybeStable(DB_OPERATION), "SET")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET a"), - equalTo(DB_OPERATION, "GET")))); + equalTo(maybeStable(DB_STATEMENT), "GET a"), + equalTo(maybeStable(DB_OPERATION), "GET")))); } } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceSyncClientTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceSyncClientTest.java index 69adc52545dc..d84a4bc437a9 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceSyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceSyncClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v5_0; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; @@ -152,8 +153,8 @@ void testSetCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET TESTSETKEY ?"), - equalTo(DB_OPERATION, "SET")))); + equalTo(maybeStable(DB_STATEMENT), "SET TESTSETKEY ?"), + equalTo(maybeStable(DB_OPERATION), "SET")))); } @Test @@ -169,8 +170,8 @@ void testGetCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET TESTKEY"), - equalTo(DB_OPERATION, "GET")))); + equalTo(maybeStable(DB_STATEMENT), "GET TESTKEY"), + equalTo(maybeStable(DB_OPERATION), "GET")))); } @Test @@ -186,8 +187,8 @@ void testGetNonExistentKeyCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"), - equalTo(DB_OPERATION, "GET")))); + equalTo(maybeStable(DB_STATEMENT), "GET NON_EXISTENT_KEY"), + equalTo(maybeStable(DB_OPERATION), "GET")))); } @Test @@ -203,8 +204,8 @@ void testCommandWithNoArguments() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "RANDOMKEY"), - equalTo(DB_OPERATION, "RANDOMKEY")))); + equalTo(maybeStable(DB_STATEMENT), "RANDOMKEY"), + equalTo(maybeStable(DB_OPERATION), "RANDOMKEY")))); } @Test @@ -220,8 +221,8 @@ void testListCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "LPUSH TESTLIST ?"), - equalTo(DB_OPERATION, "LPUSH")))); + equalTo(maybeStable(DB_STATEMENT), "LPUSH TESTLIST ?"), + equalTo(maybeStable(DB_OPERATION), "LPUSH")))); } @Test @@ -237,8 +238,10 @@ void testHashSetCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "HMSET user firstname ? lastname ? age ?"), - equalTo(DB_OPERATION, "HMSET")))); + equalTo( + maybeStable(DB_STATEMENT), + "HMSET user firstname ? lastname ? age ?"), + equalTo(maybeStable(DB_OPERATION), "HMSET")))); } @Test @@ -254,8 +257,8 @@ void testHashGetallCommand() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "HGETALL TESTHM"), - equalTo(DB_OPERATION, "HGETALL")))); + equalTo(maybeStable(DB_STATEMENT), "HGETALL TESTHM"), + equalTo(maybeStable(DB_OPERATION), "HGETALL")))); } @Test @@ -274,8 +277,8 @@ void testDebugSegfaultCommandWithNoArgumentShouldProduceSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "DEBUG SEGFAULT"), - equalTo(DB_OPERATION, "DEBUG")))); + equalTo(maybeStable(DB_STATEMENT), "DEBUG SEGFAULT"), + equalTo(maybeStable(DB_OPERATION), "DEBUG")))); } @Test @@ -294,7 +297,7 @@ void testShutdownCommandShouldProduceSpan() { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE"), - equalTo(DB_OPERATION, "SHUTDOWN")))); + equalTo(maybeStable(DB_STATEMENT), "SHUTDOWN NOSAVE"), + equalTo(maybeStable(DB_OPERATION), "SHUTDOWN")))); } } diff --git a/instrumentation/lettuce/lettuce-5.1/javaagent/build.gradle.kts b/instrumentation/lettuce/lettuce-5.1/javaagent/build.gradle.kts index d09af4df3a39..654a6172715d 100644 --- a/instrumentation/lettuce/lettuce-5.1/javaagent/build.gradle.kts +++ b/instrumentation/lettuce/lettuce-5.1/javaagent/build.gradle.kts @@ -24,8 +24,16 @@ dependencies { } tasks { - test { + withType().configureEach { systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/lettuce/lettuce-5.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceReactiveClientTest.java b/instrumentation/lettuce/lettuce-5.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceReactiveClientTest.java index 4ce3f3c10786..4324b7cc1199 100644 --- a/instrumentation/lettuce/lettuce-5.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceReactiveClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceReactiveClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v5_1; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; @@ -64,7 +65,7 @@ void testAsyncSubscriberWithSpecificThreadPool() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET a ?"))) + equalTo(maybeStable(DB_STATEMENT), "SET a ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -80,7 +81,7 @@ void testAsyncSubscriberWithSpecificThreadPool() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET a"))) + equalTo(maybeStable(DB_STATEMENT), "GET a"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); diff --git a/instrumentation/lettuce/lettuce-5.1/library/build.gradle.kts b/instrumentation/lettuce/lettuce-5.1/library/build.gradle.kts index f4e825b1d015..1ea17a553d5d 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/build.gradle.kts +++ b/instrumentation/lettuce/lettuce-5.1/library/build.gradle.kts @@ -13,8 +13,16 @@ dependencies { } tasks { - test { + withType().configureEach { systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java index 80a47df80fd7..9a65d02a37f3 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.lettuce.v5_1; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; @@ -166,7 +167,7 @@ void testSetCommandUsingFutureGetWithTimeout() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET TESTSETKEY ?"))) + equalTo(maybeStable(DB_STATEMENT), "SET TESTSETKEY ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -212,7 +213,7 @@ void testGetCommandChainedWithThenAccept() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET TESTKEY"))) + equalTo(maybeStable(DB_STATEMENT), "GET TESTKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -291,7 +292,8 @@ void testGetNonExistentKeyCommandWithHandleAsyncAndChainedWithThenApply() throws equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"))) + equalTo( + maybeStable(DB_STATEMENT), "GET NON_EXISTENT_KEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -357,7 +359,7 @@ void testCommandWithNoArgumentsUsingBiconsumer() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "RANDOMKEY"))) + equalTo(maybeStable(DB_STATEMENT), "RANDOMKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -418,7 +420,8 @@ void testHashSetAndThenNestApplyToHashGetall() throws Exception { equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), equalTo( - DB_STATEMENT, "HMSET TESTHM firstname ? lastname ? age ?"))) + maybeStable(DB_STATEMENT), + "HMSET TESTHM firstname ? lastname ? age ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end"))), @@ -435,7 +438,7 @@ void testHashSetAndThenNestApplyToHashGetall() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "HGETALL TESTHM"))) + equalTo(maybeStable(DB_STATEMENT), "HGETALL TESTHM"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java index 8c3d6fe2ebc5..93b20a87be7b 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.lettuce.v5_1; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; @@ -104,7 +105,7 @@ void testSetCommandWithSubscribeOnDefinedConsumer() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET TESTSETKEY ?"))) + equalTo(maybeStable(DB_STATEMENT), "SET TESTSETKEY ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -143,7 +144,7 @@ void testGetCommandWithLambdaFunction() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET TESTKEY"))) + equalTo(maybeStable(DB_STATEMENT), "GET TESTKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -193,7 +194,7 @@ void testGetNonExistentKeyCommand() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"))) + equalTo(maybeStable(DB_STATEMENT), "GET NON_EXISTENT_KEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -231,7 +232,7 @@ void testCommandWithNoArguments() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "RANDOMKEY"))) + equalTo(maybeStable(DB_STATEMENT), "RANDOMKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -256,7 +257,7 @@ void testCommandFluxPublisher() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "COMMAND"))) + equalTo(maybeStable(DB_STATEMENT), "COMMAND"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -302,7 +303,7 @@ void testBlockingSubscriber() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET a ?"))) + equalTo(maybeStable(DB_STATEMENT), "SET a ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -318,7 +319,7 @@ void testBlockingSubscriber() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET a"))) + equalTo(maybeStable(DB_STATEMENT), "GET a"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -348,7 +349,7 @@ void testAsyncSubscriber() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET a ?"))) + equalTo(maybeStable(DB_STATEMENT), "SET a ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")), @@ -364,7 +365,7 @@ void testAsyncSubscriber() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET a"))) + equalTo(maybeStable(DB_STATEMENT), "GET a"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java index 6f169dd845b9..76a467798000 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.lettuce.v5_1; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -81,7 +82,9 @@ void testAuthCommand() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "CLIENT SETINFO lib-name Lettuce")))), + equalTo( + maybeStable(DB_STATEMENT), + "CLIENT SETINFO lib-name Lettuce")))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -96,7 +99,7 @@ void testAuthCommand() throws Exception { equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), stringAssert -> stringAssert.startsWith("CLIENT SETINFO lib-ver"))))), trace -> @@ -112,7 +115,7 @@ void testAuthCommand() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "AUTH ?"))) + equalTo(maybeStable(DB_STATEMENT), "AUTH ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -133,7 +136,7 @@ void testAuthCommand() throws Exception { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "AUTH ?"))) + equalTo(maybeStable(DB_STATEMENT), "AUTH ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java index ed32af6d2b27..f09ec6b687c2 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.lettuce.v5_1; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -130,7 +131,7 @@ void testSetCommand() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SET TESTSETKEY ?"))) + equalTo(maybeStable(DB_STATEMENT), "SET TESTSETKEY ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -156,7 +157,7 @@ void testGetCommand() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET TESTKEY"))) + equalTo(maybeStable(DB_STATEMENT), "GET TESTKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -182,7 +183,7 @@ void testGetNonExistentKeyCommand() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "GET NON_EXISTENT_KEY"))) + equalTo(maybeStable(DB_STATEMENT), "GET NON_EXISTENT_KEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -208,7 +209,7 @@ void testCommandWithNoArguments() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "RANDOMKEY"))) + equalTo(maybeStable(DB_STATEMENT), "RANDOMKEY"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -244,7 +245,7 @@ void testListCommand() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, containerConnection.port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "LPUSH TESTLIST ?"))) + equalTo(maybeStable(DB_STATEMENT), "LPUSH TESTLIST ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -271,7 +272,8 @@ void testHashSetCommand() { equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), equalTo( - DB_STATEMENT, "HMSET user firstname ? lastname ? age ?"))) + maybeStable(DB_STATEMENT), + "HMSET user firstname ? lastname ? age ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -297,7 +299,7 @@ void testHashGetallCommand() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "HGETALL TESTHM"))) + equalTo(maybeStable(DB_STATEMENT), "HGETALL TESTHM"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -330,7 +332,9 @@ void testEvalCommand() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "EVAL " + b64Script + " 1 TESTLIST ? ?"))) + equalTo( + maybeStable(DB_STATEMENT), + "EVAL " + b64Script + " 1 TESTLIST ? ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -357,7 +361,7 @@ void testMsetCommand() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "MSET key1 ? key2 ?"))) + equalTo(maybeStable(DB_STATEMENT), "MSET key1 ? key2 ?"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end")))); @@ -387,7 +391,9 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, containerConnection.port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "CLIENT SETINFO lib-name Lettuce")))), + equalTo( + maybeStable(DB_STATEMENT), + "CLIENT SETINFO lib-name Lettuce")))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -402,7 +408,7 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { equalTo(SERVER_PORT, containerConnection.port), equalTo(DB_SYSTEM, "redis"), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), stringAssert -> stringAssert.startsWith("CLIENT SETINFO lib-ver"))))), trace -> @@ -418,7 +424,7 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, containerConnection.port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "DEBUG SEGFAULT"))))); + equalTo(maybeStable(DB_STATEMENT), "DEBUG SEGFAULT"))))); } else { testing() .waitAndAssertTraces( @@ -435,7 +441,7 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, containerConnection.port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "DEBUG SEGFAULT"))) + equalTo(maybeStable(DB_STATEMENT), "DEBUG SEGFAULT"))) // these are no longer recorded since Lettuce 6.1.6 .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), @@ -475,7 +481,7 @@ void testShutdownCommandProducesNoSpan() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, containerConnection.port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE")))); + equalTo(maybeStable(DB_STATEMENT), "SHUTDOWN NOSAVE")))); } else { trace.hasSpansSatisfyingExactly( span -> @@ -491,7 +497,7 @@ void testShutdownCommandProducesNoSpan() { equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, containerConnection.port), equalTo(DB_SYSTEM, "redis"), - equalTo(DB_STATEMENT, "SHUTDOWN NOSAVE"))) + equalTo(maybeStable(DB_STATEMENT), "SHUTDOWN NOSAVE"))) .hasEventsSatisfyingExactly( event -> event.hasName("redis.encode.start"), event -> event.hasName("redis.encode.end"))); diff --git a/instrumentation/mongo/mongo-3.1/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-3.1/javaagent/build.gradle.kts index bdc5193e6396..6d5716d02711 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-3.1/javaagent/build.gradle.kts @@ -24,7 +24,15 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/mongo/mongo-3.1/library/build.gradle.kts b/instrumentation/mongo/mongo-3.1/library/build.gradle.kts index 1504784c794e..c0376f9c0f11 100644 --- a/instrumentation/mongo/mongo-3.1/library/build.gradle.kts +++ b/instrumentation/mongo/mongo-3.1/library/build.gradle.kts @@ -13,7 +13,15 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java index 6890025d5c8a..75254966739e 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java @@ -5,6 +5,8 @@ package io.opentelemetry.instrumentation.mongo.v3_1; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitOldDatabaseSemconv; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; import static java.util.Arrays.asList; import com.mongodb.event.CommandStartedEvent; @@ -19,6 +21,8 @@ class MongoAttributesExtractor implements AttributesExtractor { // copied from DbIncubatingAttributes + private static final AttributeKey DB_COLLECTION_NAME = + AttributeKey.stringKey("db.collection.name"); private static final AttributeKey DB_MONGODB_COLLECTION = AttributeKey.stringKey("db.mongodb.collection"); @@ -27,7 +31,12 @@ public void onStart( AttributesBuilder attributes, Context parentContext, CommandStartedEvent event) { String collectionName = collectionName(event); if (collectionName != null) { - attributes.put(DB_MONGODB_COLLECTION, collectionName); + if (emitStableDatabaseSemconv()) { + attributes.put(DB_COLLECTION_NAME, collectionName); + } + if (emitOldDatabaseSemconv()) { + attributes.put(DB_MONGODB_COLLECTION, collectionName); + } } } diff --git a/instrumentation/mongo/mongo-3.7/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-3.7/javaagent/build.gradle.kts index 3122750cc2a6..f6b3d3495eed 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-3.7/javaagent/build.gradle.kts @@ -34,7 +34,15 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/mongo/mongo-4.0/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-4.0/javaagent/build.gradle.kts index 9a6e601aa4c0..4bda0767209f 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-4.0/javaagent/build.gradle.kts @@ -28,7 +28,15 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts index 00d4e4ec237b..d33c2ae01465 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts @@ -25,7 +25,15 @@ dependencies { } tasks { - test { + withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java index 45114ee03084..f00cb317bc70 100644 --- a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java +++ b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java @@ -6,6 +6,8 @@ package io.opentelemetry.instrumentation.mongo.testing; import static io.opentelemetry.api.trace.SpanKind.CLIENT; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; @@ -528,14 +530,16 @@ void mongoSpan( equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), satisfies( - DB_STATEMENT, + maybeStable(DB_STATEMENT), val -> val.satisfies( statement -> assertThat(statements).contains(statement.replaceAll(" ", "")))), equalTo(DB_SYSTEM, "mongodb"), - equalTo(DB_CONNECTION_STRING, "mongodb://localhost:" + port), - equalTo(DB_NAME, dbName), - equalTo(DB_OPERATION, operation), - equalTo(DB_MONGODB_COLLECTION, collection)); + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "mongodb://localhost:" + port), + equalTo(maybeStable(DB_NAME), dbName), + equalTo(maybeStable(DB_OPERATION), operation), + equalTo(maybeStable(DB_MONGODB_COLLECTION), collection)); } } diff --git a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/build.gradle.kts b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/build.gradle.kts index 460f5ec15e60..2d56124348a5 100644 --- a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/build.gradle.kts +++ b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/build.gradle.kts @@ -40,4 +40,12 @@ tasks { test { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java index 7cebcbb638bf..993ad7369e6d 100644 --- a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java +++ b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java @@ -3,6 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; @@ -102,8 +103,8 @@ void shouldGetStatusWithTraces() throws IOException { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "opensearch"), - equalTo(DB_OPERATION, "GET"), - equalTo(DB_STATEMENT, "GET _cluster/health")), + equalTo(maybeStable(DB_OPERATION), "GET"), + equalTo(maybeStable(DB_STATEMENT), "GET _cluster/health")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) @@ -167,8 +168,8 @@ public void onFailure(Exception e) { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "opensearch"), - equalTo(DB_OPERATION, "GET"), - equalTo(DB_STATEMENT, "GET _cluster/health")), + equalTo(maybeStable(DB_OPERATION), "GET"), + equalTo(maybeStable(DB_STATEMENT), "GET _cluster/health")), span -> span.hasName("GET") .hasKind(SpanKind.CLIENT) diff --git a/instrumentation/r2dbc-1.0/javaagent/build.gradle.kts b/instrumentation/r2dbc-1.0/javaagent/build.gradle.kts index 7a652d5bc483..6c80b8f7aa1c 100644 --- a/instrumentation/r2dbc-1.0/javaagent/build.gradle.kts +++ b/instrumentation/r2dbc-1.0/javaagent/build.gradle.kts @@ -30,6 +30,16 @@ dependencies { testInstrumentation(project(":instrumentation:reactor:reactor-3.1:javaagent")) } -tasks.withType().configureEach { - usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) +tasks { + withType().configureEach { + usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/r2dbc-1.0/library/build.gradle.kts b/instrumentation/r2dbc-1.0/library/build.gradle.kts index 511b6354abd3..729385252749 100644 --- a/instrumentation/r2dbc-1.0/library/build.gradle.kts +++ b/instrumentation/r2dbc-1.0/library/build.gradle.kts @@ -10,6 +10,16 @@ dependencies { testImplementation(project(":instrumentation:reactor:reactor-3.1:library")) } -tasks.withType().configureEach { - usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) +tasks { + withType().configureEach { + usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/r2dbc-1.0/testing/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/AbstractR2dbcStatementTest.java b/instrumentation/r2dbc-1.0/testing/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/AbstractR2dbcStatementTest.java index 5f8a8e008113..16257cb55e95 100644 --- a/instrumentation/r2dbc-1.0/testing/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/AbstractR2dbcStatementTest.java +++ b/instrumentation/r2dbc-1.0/testing/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/AbstractR2dbcStatementTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.instrumentation.r2dbc.v1_0; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -168,13 +170,15 @@ void testQueries(Parameter parameter) { .hasAttributesSatisfyingExactly( equalTo( DB_CONNECTION_STRING, - parameter.system + "://localhost:" + port), + emitStableDatabaseSemconv() + ? null + : parameter.system + "://localhost:" + port), equalTo(DB_SYSTEM, parameter.system), - equalTo(DB_NAME, DB), - equalTo(DB_USER, USER_DB), - equalTo(DB_STATEMENT, parameter.expectedStatement), - equalTo(DB_OPERATION, parameter.operation), - equalTo(DB_SQL_TABLE, parameter.table), + equalTo(maybeStable(DB_NAME), DB), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : USER_DB), + equalTo(maybeStable(DB_STATEMENT), parameter.expectedStatement), + equalTo(maybeStable(DB_OPERATION), parameter.operation), + equalTo(maybeStable(DB_SQL_TABLE), parameter.table), equalTo(SERVER_ADDRESS, container.getHost()), equalTo(SERVER_PORT, port)), span -> diff --git a/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy b/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy index 5f6e10ab0acc..e81106cbdf84 100644 --- a/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy +++ b/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy @@ -16,6 +16,7 @@ import scala.concurrent.duration.Duration import spock.lang.Shared import static io.opentelemetry.api.trace.SpanKind.CLIENT +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable class RediscalaClientTest extends AgentInstrumentationSpecification { @@ -91,7 +92,7 @@ class RediscalaClientTest extends AgentInstrumentationSpecification { kind CLIENT attributes { "$DbIncubatingAttributes.DB_SYSTEM" "redis" - "$DbIncubatingAttributes.DB_OPERATION" "SET" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SET" } } } @@ -126,7 +127,7 @@ class RediscalaClientTest extends AgentInstrumentationSpecification { childOf span(0) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "redis" - "$DbIncubatingAttributes.DB_OPERATION" "SET" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SET" } } span(2) { @@ -135,7 +136,7 @@ class RediscalaClientTest extends AgentInstrumentationSpecification { childOf span(0) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "redis" - "$DbIncubatingAttributes.DB_OPERATION" "GET" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "GET" } } } diff --git a/instrumentation/redisson/redisson-3.17/javaagent/build.gradle.kts b/instrumentation/redisson/redisson-3.17/javaagent/build.gradle.kts index 6e255116700d..3eabc34c913b 100644 --- a/instrumentation/redisson/redisson-3.17/javaagent/build.gradle.kts +++ b/instrumentation/redisson/redisson-3.17/javaagent/build.gradle.kts @@ -25,15 +25,15 @@ dependencies { } tasks { - val testStableSemconv by registering(Test::class) { - jvmArgs("-Dotel.semconv-stability.opt-in=database") - } - withType().configureEach { systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testStableSemconv) } diff --git a/instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts b/instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts index 79c30b7ff7f3..d15feefdcd05 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts +++ b/instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts @@ -180,10 +180,6 @@ configurations.configureEach { } tasks { - check { - dependsOn(testing.suites) - } - compileTestJava { options.compilerArgs.add("-parameters") } @@ -215,4 +211,13 @@ tasks { withType(Jar::class) { from(sourceSets["javaSpring3"].output) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testing.suites) + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/r2dbc/R2DbcInstrumentationAutoConfigurationTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/r2dbc/R2DbcInstrumentationAutoConfigurationTest.java index c25aefdc0da5..ffdd3c7d0181 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/r2dbc/R2DbcInstrumentationAutoConfigurationTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/r2dbc/R2DbcInstrumentationAutoConfigurationTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.r2dbc; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; import io.opentelemetry.api.OpenTelemetry; @@ -52,12 +53,13 @@ void statementSanitizerEnabledByDefault() { trace.hasSpansSatisfyingExactly( span -> span.hasAttribute( - DB_STATEMENT, + maybeStable(DB_STATEMENT), "CREATE TABLE IF NOT EXISTS player(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(?), age INT, PRIMARY KEY (id))")), trace -> trace.hasSpansSatisfyingExactly( span -> - span.hasAttribute(DB_STATEMENT, "SELECT * FROM player WHERE id = ?"))); + span.hasAttribute( + maybeStable(DB_STATEMENT), "SELECT * FROM player WHERE id = ?"))); }); } } diff --git a/instrumentation/spring/spring-data/spring-data-1.8/javaagent/build.gradle.kts b/instrumentation/spring/spring-data/spring-data-1.8/javaagent/build.gradle.kts index d5d7900af243..666568cfcc12 100644 --- a/instrumentation/spring/spring-data/spring-data-1.8/javaagent/build.gradle.kts +++ b/instrumentation/spring/spring-data/spring-data-1.8/javaagent/build.gradle.kts @@ -46,10 +46,18 @@ dependencies { } tasks { - test { + withType().configureEach { jvmArgs("--add-opens=java.base/java.lang.invoke=ALL-UNNAMED") jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/spring/spring-data/spring-data-3.0/testing/build.gradle.kts b/instrumentation/spring/spring-data/spring-data-3.0/testing/build.gradle.kts index d1cdb1a3b60a..ea8f4549deb6 100644 --- a/instrumentation/spring/spring-data/spring-data-3.0/testing/build.gradle.kts +++ b/instrumentation/spring/spring-data/spring-data-3.0/testing/build.gradle.kts @@ -42,14 +42,19 @@ testing { } tasks { - test { + withType().configureEach { jvmArgs("--add-opens=java.base/java.lang.invoke=ALL-UNNAMED") jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") } + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + check { dependsOn(testing.suites) + dependsOn(testStableSemconv) } } diff --git a/instrumentation/spring/spring-data/spring-data-3.0/testing/src/reactiveTest/java/io/opentelemetry/javaagent/instrumentation/spring/data/v3_0/ReactiveSpringDataTest.java b/instrumentation/spring/spring-data/spring-data-3.0/testing/src/reactiveTest/java/io/opentelemetry/javaagent/instrumentation/spring/data/v3_0/ReactiveSpringDataTest.java index d5eb076edefa..06f7cc67309d 100644 --- a/instrumentation/spring/spring-data/spring-data-3.0/testing/src/reactiveTest/java/io/opentelemetry/javaagent/instrumentation/spring/data/v3_0/ReactiveSpringDataTest.java +++ b/instrumentation/spring/spring-data/spring-data-3.0/testing/src/reactiveTest/java/io/opentelemetry/javaagent/instrumentation/spring/data/v3_0/ReactiveSpringDataTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.spring.data.v3_0; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -82,12 +84,14 @@ void testFindAll() { .isLessThanOrEqualTo(trace.getSpan(1).getEndEpochNanos())) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "h2"), - equalTo(DB_NAME, "db"), - equalTo(DB_USER, "sa"), - equalTo(DB_STATEMENT, "SELECT CUSTOMER.* FROM CUSTOMER"), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "CUSTOMER"), - equalTo(DB_CONNECTION_STRING, "h2:mem://localhost"), + equalTo(maybeStable(DB_NAME), "db"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo(maybeStable(DB_STATEMENT), "SELECT CUSTOMER.* FROM CUSTOMER"), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "CUSTOMER"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "h2:mem://localhost"), equalTo(SERVER_ADDRESS, "localhost")))); } } diff --git a/instrumentation/spring/spring-data/spring-data-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/AbstractSpringJpaTest.java b/instrumentation/spring/spring-data/spring-data-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/AbstractSpringJpaTest.java index 06a2159168cd..ec329846d155 100644 --- a/instrumentation/spring/spring-data/spring-data-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/AbstractSpringJpaTest.java +++ b/instrumentation/spring/spring-data/spring-data-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/AbstractSpringJpaTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.spring.data; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -89,12 +91,13 @@ static void assertHibernate4Trace(TraceAssert trace, String repoClassName) { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("insert ")), - equalTo(DB_OPERATION, "INSERT"), - equalTo(DB_SQL_TABLE, "JpaCustomer"))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("insert ")), + equalTo(maybeStable(DB_OPERATION), "INSERT"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer"))); } @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @@ -111,23 +114,26 @@ static void assertHibernateTrace(TraceAssert trace, String repoClassName) { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("call next value for ")), - equalTo(DB_OPERATION, "CALL")), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies( + maybeStable(DB_STATEMENT), val -> val.startsWith("call next value for ")), + equalTo(maybeStable(DB_OPERATION), "CALL")), span -> span.hasName("INSERT test.JpaCustomer") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("insert ")), - equalTo(DB_OPERATION, "INSERT"), - equalTo(DB_SQL_TABLE, "JpaCustomer"))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("insert ")), + equalTo(maybeStable(DB_OPERATION), "INSERT"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer"))); } @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @@ -157,12 +163,14 @@ void testCrud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("select ")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "JpaCustomer")))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("select ")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer")))); clearData(); repo.save(customer); @@ -193,24 +201,28 @@ void testCrud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("select ")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "JpaCustomer")), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("select ")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer")), span -> span.hasName("UPDATE test.JpaCustomer") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("update ")), - equalTo(DB_OPERATION, "UPDATE"), - equalTo(DB_SQL_TABLE, "JpaCustomer")))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("update ")), + equalTo(maybeStable(DB_OPERATION), "UPDATE"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer")))); clearData(); customer = findByLastName(repo, "Anonymous").get(0); @@ -229,12 +241,14 @@ void testCrud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("select ")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "JpaCustomer")))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("select ")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer")))); clearData(); repo.delete(customer); @@ -253,24 +267,28 @@ void testCrud() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("select ")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "JpaCustomer")), + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("select ")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer")), span -> span.hasName("DELETE test.JpaCustomer") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("delete ")), - equalTo(DB_OPERATION, "DELETE"), - equalTo(DB_SQL_TABLE, "JpaCustomer")))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("delete ")), + equalTo(maybeStable(DB_OPERATION), "DELETE"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer")))); } @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @@ -298,12 +316,14 @@ void testCustomRepositoryMethod() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("select ")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "JpaCustomer")))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("select ")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer")))); } @SuppressWarnings("deprecation") // TODO DB_CONNECTION_STRING deprecation @@ -343,11 +363,13 @@ void testFailedRepositoryMethod() { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM, "hsqldb"), - equalTo(DB_NAME, "test"), - equalTo(DB_USER, "sa"), - equalTo(DB_CONNECTION_STRING, "hsqldb:mem:"), - satisfies(DB_STATEMENT, val -> val.startsWith("select ")), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "JpaCustomer")))); + equalTo(maybeStable(DB_NAME), "test"), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : "sa"), + equalTo( + DB_CONNECTION_STRING, + emitStableDatabaseSemconv() ? null : "hsqldb:mem:"), + satisfies(maybeStable(DB_STATEMENT), val -> val.startsWith("select ")), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "JpaCustomer")))); } } diff --git a/instrumentation/spymemcached-2.12/javaagent/build.gradle.kts b/instrumentation/spymemcached-2.12/javaagent/build.gradle.kts index 3618eb930772..0f3c5a4ff953 100644 --- a/instrumentation/spymemcached-2.12/javaagent/build.gradle.kts +++ b/instrumentation/spymemcached-2.12/javaagent/build.gradle.kts @@ -20,8 +20,18 @@ dependencies { testImplementation("com.google.guava:guava") } -tasks.withType().configureEach { - // TODO run tests both with and without experimental span attributes - jvmArgs("-Dotel.instrumentation.spymemcached.experimental-span-attributes=true") - usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) +tasks { + withType().configureEach { + // TODO run tests both with and without experimental span attributes + jvmArgs("-Dotel.instrumentation.spymemcached.experimental-span-attributes=true") + usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } diff --git a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedTest.java b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedTest.java index dfbc7e3d7720..3847c23c7b3e 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedTest.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.api.common.AttributeKey.booleanKey; import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; @@ -148,7 +149,7 @@ void getHit() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -170,7 +171,7 @@ void getMiss() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(stringKey("spymemcached.result"), "miss")))); } @@ -205,7 +206,7 @@ void getCancel() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(booleanKey("spymemcached.command.cancelled"), true)))); } @@ -260,7 +261,7 @@ void getTimeout() throws InterruptedException { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get")))); + equalTo(maybeStable(DB_OPERATION), "get")))); } @Test @@ -288,7 +289,7 @@ void bulkGet() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "getBulk")))); + equalTo(maybeStable(DB_OPERATION), "getBulk")))); } @Test @@ -312,7 +313,7 @@ void set() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "set")))); + equalTo(maybeStable(DB_OPERATION), "set")))); } @Test @@ -348,7 +349,7 @@ void setCancel() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "set"), + equalTo(maybeStable(DB_OPERATION), "set"), equalTo(booleanKey("spymemcached.command.cancelled"), true)))); } @@ -374,7 +375,7 @@ void add() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "add")), + equalTo(maybeStable(DB_OPERATION), "add")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) @@ -383,7 +384,7 @@ void add() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -410,7 +411,7 @@ void secondAdd() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "add")), + equalTo(maybeStable(DB_OPERATION), "add")), span -> span.hasName("add") .hasKind(SpanKind.CLIENT) @@ -419,7 +420,7 @@ void secondAdd() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "add")))); + equalTo(maybeStable(DB_OPERATION), "add")))); } @Test @@ -444,7 +445,7 @@ void delete() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "delete")), + equalTo(maybeStable(DB_OPERATION), "delete")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) @@ -453,7 +454,7 @@ void delete() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(stringKey("spymemcached.result"), "miss")))); } @@ -478,7 +479,7 @@ void deleteNonExistent() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "delete")))); + equalTo(maybeStable(DB_OPERATION), "delete")))); } @Test @@ -504,7 +505,7 @@ void replace() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "replace")), + equalTo(maybeStable(DB_OPERATION), "replace")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) @@ -513,7 +514,7 @@ void replace() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -542,7 +543,7 @@ void replaceNonExistent() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "replace")))); + equalTo(maybeStable(DB_OPERATION), "replace")))); } @Test @@ -569,7 +570,7 @@ void append() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "gets")), + equalTo(maybeStable(DB_OPERATION), "gets")), span -> span.hasName("append") .hasKind(SpanKind.CLIENT) @@ -578,7 +579,7 @@ void append() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "append")), + equalTo(maybeStable(DB_OPERATION), "append")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) @@ -587,7 +588,7 @@ void append() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -615,7 +616,7 @@ void prepend() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "gets")), + equalTo(maybeStable(DB_OPERATION), "gets")), span -> span.hasName("prepend") .hasKind(SpanKind.CLIENT) @@ -624,7 +625,7 @@ void prepend() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "prepend")), + equalTo(maybeStable(DB_OPERATION), "prepend")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) @@ -633,7 +634,7 @@ void prepend() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -661,7 +662,7 @@ void cas() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "gets")), + equalTo(maybeStable(DB_OPERATION), "gets")), span -> span.hasName("cas") .hasKind(SpanKind.CLIENT) @@ -670,7 +671,7 @@ void cas() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "cas")))); + equalTo(maybeStable(DB_OPERATION), "cas")))); } @Test @@ -696,7 +697,7 @@ void casNotFound() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "cas")))); + equalTo(maybeStable(DB_OPERATION), "cas")))); } @Test @@ -720,7 +721,7 @@ void touch() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "touch")))); + equalTo(maybeStable(DB_OPERATION), "touch")))); } @Test @@ -745,7 +746,7 @@ void touchNonExistent() throws Exception { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "touch")))); + equalTo(maybeStable(DB_OPERATION), "touch")))); } @Test @@ -770,7 +771,7 @@ void getAndTouch() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "getAndTouch")))); + equalTo(maybeStable(DB_OPERATION), "getAndTouch")))); } @Test @@ -795,7 +796,7 @@ void getAndTouchNonExistent() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "getAndTouch")))); + equalTo(maybeStable(DB_OPERATION), "getAndTouch")))); } @Test @@ -824,7 +825,7 @@ it needs values to be strings (with digits in them) and it returns actual long f equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "decr")), + equalTo(maybeStable(DB_OPERATION), "decr")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) @@ -833,7 +834,7 @@ it needs values to be strings (with digits in them) and it returns actual long f equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -858,7 +859,7 @@ void decrNonExistent() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "decr")))); + equalTo(maybeStable(DB_OPERATION), "decr")))); } @Test @@ -881,7 +882,7 @@ void decrException() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "decr")))); + equalTo(maybeStable(DB_OPERATION), "decr")))); } @Test @@ -910,7 +911,7 @@ it needs values to be strings (with digits in them) and it returns actual long f equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "incr")), + equalTo(maybeStable(DB_OPERATION), "incr")), span -> span.hasName("get") .hasKind(SpanKind.CLIENT) @@ -919,7 +920,7 @@ it needs values to be strings (with digits in them) and it returns actual long f equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "get"), + equalTo(maybeStable(DB_OPERATION), "get"), equalTo(stringKey("spymemcached.result"), "hit")))); } @@ -944,7 +945,7 @@ void incrNonExistent() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "incr")))); + equalTo(maybeStable(DB_OPERATION), "incr")))); } @Test @@ -967,7 +968,7 @@ void incrException() { equalTo( DB_SYSTEM, DbIncubatingAttributes.DbSystemIncubatingValues.MEMCACHED), - equalTo(DB_OPERATION, "incr")))); + equalTo(maybeStable(DB_OPERATION), "incr")))); } private static String key(String k) { diff --git a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/latestDepTest/groovy/VertxReactivePropagationTest.groovy b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/latestDepTest/groovy/VertxReactivePropagationTest.groovy index 7e776c9ab177..bcb75491eefc 100644 --- a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/latestDepTest/groovy/VertxReactivePropagationTest.groovy +++ b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/latestDepTest/groovy/VertxReactivePropagationTest.groovy @@ -9,13 +9,13 @@ import io.opentelemetry.api.trace.SpanKind import io.opentelemetry.context.Context import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes -import io.opentelemetry.semconv.ServerAttributes import io.opentelemetry.semconv.ClientAttributes -import io.opentelemetry.semconv.UserAgentAttributes import io.opentelemetry.semconv.HttpAttributes import io.opentelemetry.semconv.NetworkAttributes +import io.opentelemetry.semconv.ServerAttributes import io.opentelemetry.semconv.UrlAttributes +import io.opentelemetry.semconv.UserAgentAttributes +import io.opentelemetry.semconv.incubating.DbIncubatingAttributes import io.opentelemetry.testing.internal.armeria.client.WebClient import io.opentelemetry.testing.internal.armeria.common.HttpRequest import io.opentelemetry.testing.internal.armeria.common.HttpRequestBuilder @@ -29,6 +29,8 @@ import static VertxReactiveWebServer.TEST_REQUEST_ID_ATTRIBUTE import static VertxReactiveWebServer.TEST_REQUEST_ID_PARAMETER import static io.opentelemetry.api.trace.SpanKind.CLIENT import static io.opentelemetry.api.trace.SpanKind.SERVER +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS class VertxReactivePropagationTest extends AgentInstrumentationSpecification { @@ -99,12 +101,12 @@ class VertxReactivePropagationTest extends AgentInstrumentationSpecification { childOf span(2) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "SA" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" "SELECT id, name, price, weight FROM products" - "$DbIncubatingAttributes.DB_OPERATION" "SELECT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "products" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "SA" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" "SELECT id, name, price, weight FROM products" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SELECT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "products" } } } @@ -199,12 +201,12 @@ class VertxReactivePropagationTest extends AgentInstrumentationSpecification { childOf(span(3)) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "SA" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" "SELECT id AS request$requestId, name, price, weight FROM products" - "$DbIncubatingAttributes.DB_OPERATION" "SELECT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "products" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "SA" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" "SELECT id AS request$requestId, name, price, weight FROM products" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SELECT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "products" } } } diff --git a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/VertxReactivePropagationTest.groovy b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/VertxReactivePropagationTest.groovy index 9490912c8f93..51cf2101432f 100644 --- a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/VertxReactivePropagationTest.groovy +++ b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/VertxReactivePropagationTest.groovy @@ -9,13 +9,13 @@ import io.opentelemetry.api.trace.SpanKind import io.opentelemetry.context.Context import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes -import io.opentelemetry.semconv.ServerAttributes import io.opentelemetry.semconv.ClientAttributes -import io.opentelemetry.semconv.UserAgentAttributes import io.opentelemetry.semconv.HttpAttributes import io.opentelemetry.semconv.NetworkAttributes +import io.opentelemetry.semconv.ServerAttributes import io.opentelemetry.semconv.UrlAttributes +import io.opentelemetry.semconv.UserAgentAttributes +import io.opentelemetry.semconv.incubating.DbIncubatingAttributes import io.opentelemetry.testing.internal.armeria.client.WebClient import io.opentelemetry.testing.internal.armeria.common.HttpRequest import io.opentelemetry.testing.internal.armeria.common.HttpRequestBuilder @@ -29,6 +29,8 @@ import static VertxReactiveWebServer.TEST_REQUEST_ID_ATTRIBUTE import static VertxReactiveWebServer.TEST_REQUEST_ID_PARAMETER import static io.opentelemetry.api.trace.SpanKind.CLIENT import static io.opentelemetry.api.trace.SpanKind.SERVER +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.SUCCESS class VertxReactivePropagationTest extends AgentInstrumentationSpecification { @@ -99,12 +101,12 @@ class VertxReactivePropagationTest extends AgentInstrumentationSpecification { childOf span(2) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "SA" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" "SELECT id, name, price, weight FROM products" - "$DbIncubatingAttributes.DB_OPERATION" "SELECT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "products" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "SA" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" "SELECT id, name, price, weight FROM products" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SELECT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "products" } } } @@ -198,12 +200,12 @@ class VertxReactivePropagationTest extends AgentInstrumentationSpecification { childOf(span(3)) attributes { "$DbIncubatingAttributes.DB_SYSTEM" "hsqldb" - "$DbIncubatingAttributes.DB_NAME" "test" - "$DbIncubatingAttributes.DB_USER" "SA" - "$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:" - "$DbIncubatingAttributes.DB_STATEMENT" "SELECT id AS request$requestId, name, price, weight FROM products" - "$DbIncubatingAttributes.DB_OPERATION" "SELECT" - "$DbIncubatingAttributes.DB_SQL_TABLE" "products" + "${maybeStable(DbIncubatingAttributes.DB_NAME)}" "test" + "$DbIncubatingAttributes.DB_USER" emitStableDatabaseSemconv() ? null : "SA" + "$DbIncubatingAttributes.DB_CONNECTION_STRING" emitStableDatabaseSemconv() ? null : "hsqldb:mem:" + "${maybeStable(DbIncubatingAttributes.DB_STATEMENT)}" "SELECT id AS request$requestId, name, price, weight FROM products" + "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SELECT" + "${maybeStable(DbIncubatingAttributes.DB_SQL_TABLE)}" "products" } } } diff --git a/instrumentation/vertx/vertx-sql-client-4.0/javaagent/build.gradle.kts b/instrumentation/vertx/vertx-sql-client-4.0/javaagent/build.gradle.kts index d28083b74749..eff4457a3eec 100644 --- a/instrumentation/vertx/vertx-sql-client-4.0/javaagent/build.gradle.kts +++ b/instrumentation/vertx/vertx-sql-client-4.0/javaagent/build.gradle.kts @@ -25,6 +25,14 @@ tasks { withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) } + + val testStableSemconv by registering(Test::class) { + jvmArgs("-Dotel.semconv-stability.opt-in=database") + } + + check { + dependsOn(testStableSemconv) + } } val latestDepTest = findProperty("testLatestDeps") as Boolean diff --git a/instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientTest.java b/instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientTest.java index 7b8a6d3de97a..5b30c2efe62f 100644 --- a/instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientTest.java +++ b/instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; @@ -138,11 +140,11 @@ void testSimpleSelect() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_NAME, DB), - equalTo(DB_USER, USER_DB), - equalTo(DB_STATEMENT, "select * from test"), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "test"), + equalTo(maybeStable(DB_NAME), DB), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : USER_DB), + equalTo(maybeStable(DB_STATEMENT), "select * from test"), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> @@ -194,9 +196,9 @@ void testInvalidQuery() throws Exception { EXCEPTION_STACKTRACE, val -> val.isInstanceOf(String.class)))) .hasAttributesSatisfyingExactly( - equalTo(DB_NAME, DB), - equalTo(DB_USER, USER_DB), - equalTo(DB_STATEMENT, "invalid"), + equalTo(maybeStable(DB_NAME), DB), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : USER_DB), + equalTo(maybeStable(DB_STATEMENT), "invalid"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> @@ -228,11 +230,11 @@ private static void assertPreparedSelect() { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_NAME, DB), - equalTo(DB_USER, USER_DB), - equalTo(DB_STATEMENT, "select * from test where id = $1"), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "test"), + equalTo(maybeStable(DB_NAME), DB), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : USER_DB), + equalTo(maybeStable(DB_STATEMENT), "select * from test where id = $1"), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)))); } @@ -258,11 +260,13 @@ void testBatch() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_NAME, DB), - equalTo(DB_USER, USER_DB), - equalTo(DB_STATEMENT, "insert into test values ($1, $2) returning *"), - equalTo(DB_OPERATION, "INSERT"), - equalTo(DB_SQL_TABLE, "test"), + equalTo(maybeStable(DB_NAME), DB), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : USER_DB), + equalTo( + maybeStable(DB_STATEMENT), + "insert into test values ($1, $2) returning *"), + equalTo(maybeStable(DB_OPERATION), "INSERT"), + equalTo(maybeStable(DB_SQL_TABLE), "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)))); } @@ -344,11 +348,11 @@ void testManyQueries() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_NAME, DB), - equalTo(DB_USER, USER_DB), - equalTo(DB_STATEMENT, "select * from test"), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "test"), + equalTo(maybeStable(DB_NAME), DB), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : USER_DB), + equalTo(maybeStable(DB_STATEMENT), "select * from test"), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> @@ -409,11 +413,12 @@ void testConcurrency() throws Exception { .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( - equalTo(DB_NAME, DB), - equalTo(DB_USER, USER_DB), - equalTo(DB_STATEMENT, "select * from test where id = $1"), - equalTo(DB_OPERATION, "SELECT"), - equalTo(DB_SQL_TABLE, "test"), + equalTo(maybeStable(DB_NAME), DB), + equalTo(DB_USER, emitStableDatabaseSemconv() ? null : USER_DB), + equalTo( + maybeStable(DB_STATEMENT), "select * from test where id = $1"), + equalTo(maybeStable(DB_OPERATION), "SELECT"), + equalTo(maybeStable(DB_SQL_TABLE), "test"), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port)), span -> From fdfb764c76e5fd357bfd8a9d610606c554cc1d4b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Nov 2024 16:56:57 -0800 Subject: [PATCH 22/40] chore(deps): update github/codeql-action action to v3.27.1 (#12610) --- .github/workflows/codeql-daily.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-daily.yml b/.github/workflows/codeql-daily.yml index 80c753de2267..b21557f55697 100644 --- a/.github/workflows/codeql-daily.yml +++ b/.github/workflows/codeql-daily.yml @@ -30,7 +30,7 @@ jobs: java-version-file: .java-version - name: Initialize CodeQL - uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/init@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 with: languages: java # using "latest" helps to keep up with the latest Kotlin support @@ -45,7 +45,7 @@ jobs: run: ./gradlew assemble -x javadoc --no-build-cache --no-daemon - name: Perform CodeQL analysis - uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/analyze@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 workflow-notification: needs: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index bf6161762dfa..28ee18ecb38a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -64,6 +64,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/upload-sarif@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 with: sarif_file: results.sarif From 76c2d2d8f335f9f946316a98e442d6191a66709e Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Mon, 11 Nov 2024 13:03:11 +0200 Subject: [PATCH 23/40] Add ktor 3 instrumentation (#12562) --- docs/supported-libraries.md | 2 +- .../ktor/ktor-1.0/library/README.md | 2 +- .../ktor-2-common/library/build.gradle.kts | 22 ++ .../ktor/client/AbstractKtorClientTracing.kt | 42 +++ .../AbstractKtorClientTracingBuilder.kt | 172 +++++++++++ .../client/KtorHttpClientAttributesGetter.kt | 2 +- .../ktor}/client/KtorHttpHeadersSetter.kt | 2 +- .../ktor}/internal/KtorBuilderUtil.kt | 12 +- .../ktor/internal/KtorClientTracingUtil.kt | 88 ++++++ .../ktor/internal/KtorServerTracer.kt | 29 ++ .../ktor/internal/KtorServerTracingUtil.kt | 83 +++++ .../AbstractKtorServerTracingBuilder.kt | 196 ++++++++++++ .../ktor}/server/ApplicationRequestGetter.kt | 2 +- .../server/KtorHttpServerAttributesGetter.kt | 4 +- .../ktor/ktor-2.0/javaagent/build.gradle.kts | 17 +- .../ktor/v2_0/HttpClientInstrumentation.java | 2 +- .../v2_0/KtorClientInstrumentationModule.java | 8 + .../ktor/v2_0/ServerInstrumentation.java | 18 +- .../ktor/ktor-2.0/library/README.md | 2 +- .../ktor/ktor-2.0/library/build.gradle.kts | 2 +- .../ktor/v2_0/client/KtorClientTracing.kt | 100 +----- .../v2_0/client/KtorClientTracingBuilder.kt | 161 +--------- .../ktor/v2_0/server/KtorServerTracing.kt | 292 ------------------ .../v2_0/server/KtorServerTracingBuilder.kt | 29 ++ .../v2_0/client/AbstractKtorHttpClientTest.kt | 16 +- .../client/KtorHttpClientSingleConnection.kt | 16 +- .../ktor/ktor-3.0/javaagent/build.gradle.kts | 56 ++++ .../ktor/v3_0/HttpClientInstrumentation.java | 62 ++++ .../v3_0/KtorClientInstrumentationModule.java | 39 +++ .../v3_0/KtorServerInstrumentationModule.java | 31 ++ .../ktor/v3_0/ServerInstrumentation.java | 57 ++++ .../ktor/v3_0/client/KtorHttpClientTest.kt | 22 ++ .../ktor/v3_0/server/KtorHttpServerTest.kt | 33 ++ .../ktor/ktor-3.0/library/README.md | 60 ++++ .../ktor/ktor-3.0/library/build.gradle.kts | 34 ++ .../ktor/v3_0/InstrumentationProperties.kt | 14 + .../ktor/v3_0/client/KtorClientTracing.kt | 33 ++ .../v3_0/client/KtorClientTracingBuilder.kt | 17 + .../v3_0/server/KtorServerTracingBuilder.kt | 29 ++ .../ktor/v3_0/client/KtorHttpClientTest.kt | 27 ++ .../ktor/v3_0/server/KtorHttpServerTest.kt | 34 ++ .../ktor/ktor-3.0/testing/build.gradle.kts | 28 ++ .../v3_0/client/AbstractKtorHttpClientTest.kt | 88 ++++++ .../client/KtorHttpClientSingleConnection.kt | 32 ++ .../v3_0/server/AbstractKtorHttpServerTest.kt | 141 +++++++++ settings.gradle.kts | 4 + 46 files changed, 1577 insertions(+), 585 deletions(-) create mode 100644 instrumentation/ktor/ktor-2-common/library/build.gradle.kts create mode 100644 instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/AbstractKtorClientTracing.kt create mode 100644 instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/AbstractKtorClientTracingBuilder.kt rename instrumentation/ktor/{ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0 => ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor}/client/KtorHttpClientAttributesGetter.kt (96%) rename instrumentation/ktor/{ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0 => ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor}/client/KtorHttpHeadersSetter.kt (87%) rename instrumentation/ktor/{ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0 => ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor}/internal/KtorBuilderUtil.kt (52%) create mode 100644 instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorClientTracingUtil.kt create mode 100644 instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorServerTracer.kt create mode 100644 instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorServerTracingUtil.kt create mode 100644 instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/AbstractKtorServerTracingBuilder.kt rename instrumentation/ktor/{ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0 => ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor}/server/ApplicationRequestGetter.kt (89%) rename instrumentation/ktor/{ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0 => ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor}/server/KtorHttpServerAttributesGetter.kt (96%) delete mode 100644 instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracing.kt create mode 100644 instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracingBuilder.kt create mode 100644 instrumentation/ktor/ktor-3.0/javaagent/build.gradle.kts create mode 100644 instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/HttpClientInstrumentation.java create mode 100644 instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/KtorClientInstrumentationModule.java create mode 100644 instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/KtorServerInstrumentationModule.java create mode 100644 instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/ServerInstrumentation.java create mode 100644 instrumentation/ktor/ktor-3.0/javaagent/src/test/java/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientTest.kt create mode 100644 instrumentation/ktor/ktor-3.0/javaagent/src/test/java/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorHttpServerTest.kt create mode 100644 instrumentation/ktor/ktor-3.0/library/README.md create mode 100644 instrumentation/ktor/ktor-3.0/library/build.gradle.kts create mode 100644 instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/InstrumentationProperties.kt create mode 100644 instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorClientTracing.kt create mode 100644 instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorClientTracingBuilder.kt create mode 100644 instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorServerTracingBuilder.kt create mode 100644 instrumentation/ktor/ktor-3.0/library/src/test/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientTest.kt create mode 100644 instrumentation/ktor/ktor-3.0/library/src/test/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorHttpServerTest.kt create mode 100644 instrumentation/ktor/ktor-3.0/testing/build.gradle.kts create mode 100644 instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/AbstractKtorHttpClientTest.kt create mode 100644 instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientSingleConnection.kt create mode 100644 instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/AbstractKtorHttpServerTest.kt diff --git a/docs/supported-libraries.md b/docs/supported-libraries.md index 36d5c334f1d6..74bea2ded278 100644 --- a/docs/supported-libraries.md +++ b/docs/supported-libraries.md @@ -92,7 +92,7 @@ These are the supported libraries and frameworks: | [Jodd Http](https://http.jodd.org/) | 4.2+ | N/A | [HTTP Client Spans], [HTTP Client Metrics] | | [JSP](https://javaee.github.io/javaee-spec/javadocs/javax/servlet/jsp/package-summary.html) | 2.3+ | N/A | Controller Spans [3] | | [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) | 1.0+ | N/A | Context propagation | -| [Ktor](https://github.com/ktorio/ktor) | 1.0+ | [opentelemetry-ktor-1.0](../instrumentation/ktor/ktor-1.0/library),
[opentelemetry-ktor-2.0](../instrumentation/ktor/ktor-2.0/library) | [HTTP Client Spans], [HTTP Client Metrics], [HTTP Server Spans], [HTTP Server Metrics] | +| [Ktor](https://github.com/ktorio/ktor) | 1.0+ | [opentelemetry-ktor-1.0](../instrumentation/ktor/ktor-1.0/library),
[opentelemetry-ktor-2.0](../instrumentation/ktor/ktor-2.0/library),
[opentelemetry-ktor-3.0](../instrumentation/ktor/ktor-3.0/library) | [HTTP Client Spans], [HTTP Client Metrics], [HTTP Server Spans], [HTTP Server Metrics] | | [Kubernetes Client](https://github.com/kubernetes-client/java) | 7.0+ | N/A | [HTTP Client Spans] | | [Lettuce](https://github.com/lettuce-io/lettuce-core) | 4.0+ | [opentelemetry-lettuce-5.1](../instrumentation/lettuce/lettuce-5.1/library) | [Database Client Spans] | | [Log4j 1](https://logging.apache.org/log4j/1.2/) | 1.2+ | N/A | none | diff --git a/instrumentation/ktor/ktor-1.0/library/README.md b/instrumentation/ktor/ktor-1.0/library/README.md index 9fa477f1d825..2701fd8c5125 100644 --- a/instrumentation/ktor/ktor-1.0/library/README.md +++ b/instrumentation/ktor/ktor-1.0/library/README.md @@ -1,4 +1,4 @@ -# Library Instrumentation for Ktor versions 1.x +# Library Instrumentation for Ktor version 1.x This package contains libraries to help instrument Ktor. Currently, only server instrumentation is supported. diff --git a/instrumentation/ktor/ktor-2-common/library/build.gradle.kts b/instrumentation/ktor/ktor-2-common/library/build.gradle.kts new file mode 100644 index 000000000000..03206ba46b59 --- /dev/null +++ b/instrumentation/ktor/ktor-2-common/library/build.gradle.kts @@ -0,0 +1,22 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + id("otel.library-instrumentation") + id("org.jetbrains.kotlin.jvm") +} +dependencies { + implementation(project(":instrumentation:ktor:ktor-common:library")) + implementation("io.opentelemetry:opentelemetry-extension-kotlin") + compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + compileOnly("io.ktor:ktor-client-core:2.0.0") + compileOnly("io.ktor:ktor-server-core:2.0.0") +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + @Suppress("deprecation") + languageVersion.set(KotlinVersion.KOTLIN_1_4) + } +} diff --git a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/AbstractKtorClientTracing.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/AbstractKtorClientTracing.kt new file mode 100644 index 000000000000..925cb6cf3156 --- /dev/null +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/AbstractKtorClientTracing.kt @@ -0,0 +1,42 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.client + +import io.ktor.client.call.* +import io.ktor.client.request.* +import io.ktor.client.statement.* +import io.opentelemetry.context.Context +import io.opentelemetry.context.propagation.ContextPropagators +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter + +abstract class AbstractKtorClientTracing( + private val instrumenter: Instrumenter, + private val propagators: ContextPropagators, +) { + + internal fun createSpan(requestBuilder: HttpRequestBuilder): Context? { + val parentContext = Context.current() + val requestData = requestBuilder.build() + + return if (instrumenter.shouldStart(parentContext, requestData)) { + instrumenter.start(parentContext, requestData) + } else { + null + } + } + + internal fun populateRequestHeaders(requestBuilder: HttpRequestBuilder, context: Context) { + propagators.textMapPropagator.inject(context, requestBuilder, KtorHttpHeadersSetter) + } + + internal fun endSpan(context: Context, call: HttpClientCall, error: Throwable?) { + endSpan(context, HttpRequestBuilder().takeFrom(call.request), call.response, error) + } + + internal fun endSpan(context: Context, requestBuilder: HttpRequestBuilder, response: HttpResponse?, error: Throwable?) { + instrumenter.end(context, requestBuilder.build(), response, error) + } +} diff --git a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/AbstractKtorClientTracingBuilder.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/AbstractKtorClientTracingBuilder.kt new file mode 100644 index 000000000000..3b99bba1f6af --- /dev/null +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/AbstractKtorClientTracingBuilder.kt @@ -0,0 +1,172 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.client + +import io.ktor.client.request.* +import io.ktor.client.statement.* +import io.ktor.http.* +import io.opentelemetry.api.OpenTelemetry +import io.opentelemetry.api.common.AttributesBuilder +import io.opentelemetry.context.Context +import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder +import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor +import io.opentelemetry.instrumentation.ktor.internal.KtorBuilderUtil + +abstract class AbstractKtorClientTracingBuilder( + private val instrumentationName: String +) { + companion object { + init { + KtorBuilderUtil.clientBuilderExtractor = { it.clientBuilder } + } + } + + internal lateinit var openTelemetry: OpenTelemetry + protected lateinit var clientBuilder: DefaultHttpClientInstrumenterBuilder + + fun setOpenTelemetry(openTelemetry: OpenTelemetry) { + this.openTelemetry = openTelemetry + this.clientBuilder = DefaultHttpClientInstrumenterBuilder.create( + instrumentationName, + openTelemetry, + KtorHttpClientAttributesGetter + ) + } + + protected fun getOpenTelemetry(): OpenTelemetry { + return openTelemetry + } + + @Deprecated( + "Please use method `capturedRequestHeaders`", + ReplaceWith("capturedRequestHeaders(headers.asIterable())") + ) + fun setCapturedRequestHeaders(vararg headers: String) = capturedRequestHeaders(headers.asIterable()) + + @Deprecated( + "Please use method `capturedRequestHeaders`", + ReplaceWith("capturedRequestHeaders(headers)") + ) + fun setCapturedRequestHeaders(headers: List) = capturedRequestHeaders(headers) + + fun capturedRequestHeaders(vararg headers: String) = capturedRequestHeaders(headers.asIterable()) + + fun capturedRequestHeaders(headers: Iterable) { + clientBuilder.setCapturedRequestHeaders(headers.toList()) + } + + @Deprecated( + "Please use method `capturedResponseHeaders`", + ReplaceWith("capturedResponseHeaders(headers.asIterable())") + ) + fun setCapturedResponseHeaders(vararg headers: String) = capturedResponseHeaders(headers.asIterable()) + + @Deprecated( + "Please use method `capturedResponseHeaders`", + ReplaceWith("capturedResponseHeaders(headers)") + ) + fun setCapturedResponseHeaders(headers: List) = capturedResponseHeaders(headers) + + fun capturedResponseHeaders(vararg headers: String) = capturedResponseHeaders(headers.asIterable()) + + fun capturedResponseHeaders(headers: Iterable) { + clientBuilder.setCapturedResponseHeaders(headers.toList()) + } + + @Deprecated( + "Please use method `knownMethods`", + ReplaceWith("knownMethods(knownMethods)") + ) + fun setKnownMethods(knownMethods: Set) = knownMethods(knownMethods) + + fun knownMethods(vararg methods: String) = knownMethods(methods.asIterable()) + + fun knownMethods(vararg methods: HttpMethod) = knownMethods(methods.asIterable()) + + @JvmName("knownMethodsJvm") + fun knownMethods(methods: Iterable) = knownMethods(methods.map { it.value }) + + fun knownMethods(methods: Iterable) { + clientBuilder.setKnownMethods(methods.toSet()) + } + + @Deprecated("Please use method `attributeExtractor`") + fun addAttributesExtractors(vararg extractors: AttributesExtractor) = addAttributesExtractors(extractors.asList()) + + @Deprecated("Please use method `attributeExtractor`") + fun addAttributesExtractors(extractors: Iterable>) { + extractors.forEach { + attributeExtractor { + onStart { it.onStart(attributes, parentContext, request) } + onEnd { it.onEnd(attributes, parentContext, request, response, error) } + } + } + } + + fun attributeExtractor(extractorBuilder: ExtractorBuilder.() -> Unit = {}) { + val builder = ExtractorBuilder().apply(extractorBuilder).build() + this.clientBuilder.addAttributeExtractor( + object : AttributesExtractor { + override fun onStart(attributes: AttributesBuilder, parentContext: Context, request: HttpRequestData) { + builder.onStart(OnStartData(attributes, parentContext, request)) + } + + override fun onEnd(attributes: AttributesBuilder, context: Context, request: HttpRequestData, response: HttpResponse?, error: Throwable?) { + builder.onEnd(OnEndData(attributes, context, request, response, error)) + } + } + ) + } + + class ExtractorBuilder { + private var onStart: OnStartData.() -> Unit = {} + private var onEnd: OnEndData.() -> Unit = {} + + fun onStart(block: OnStartData.() -> Unit) { + onStart = block + } + + fun onEnd(block: OnEndData.() -> Unit) { + onEnd = block + } + + internal fun build(): Extractor { + return Extractor(onStart, onEnd) + } + } + + internal class Extractor(val onStart: OnStartData.() -> Unit, val onEnd: OnEndData.() -> Unit) + + data class OnStartData( + val attributes: AttributesBuilder, + val parentContext: Context, + val request: HttpRequestData + ) + + data class OnEndData( + val attributes: AttributesBuilder, + val parentContext: Context, + val request: HttpRequestData, + val response: HttpResponse?, + val error: Throwable? + ) + + /** + * Configures the instrumentation to emit experimental HTTP client metrics. + * + * @param emitExperimentalHttpClientMetrics `true` if the experimental HTTP client metrics are to be emitted. + */ + @Deprecated("Please use method `emitExperimentalHttpClientMetrics`") + fun setEmitExperimentalHttpClientMetrics(emitExperimentalHttpClientMetrics: Boolean) { + if (emitExperimentalHttpClientMetrics) { + emitExperimentalHttpClientMetrics() + } + } + + fun emitExperimentalHttpClientMetrics() { + clientBuilder.setEmitExperimentalHttpClientMetrics(true) + } +} diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientAttributesGetter.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/KtorHttpClientAttributesGetter.kt similarity index 96% rename from instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientAttributesGetter.kt rename to instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/KtorHttpClientAttributesGetter.kt index 62e61090b927..db1a9d1a0f0b 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientAttributesGetter.kt +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/KtorHttpClientAttributesGetter.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.ktor.v2_0.client +package io.opentelemetry.instrumentation.ktor.client import io.ktor.client.request.* import io.ktor.client.statement.* diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpHeadersSetter.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/KtorHttpHeadersSetter.kt similarity index 87% rename from instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpHeadersSetter.kt rename to instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/KtorHttpHeadersSetter.kt index a98567c0f440..d6be22087a26 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpHeadersSetter.kt +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/client/KtorHttpHeadersSetter.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.ktor.v2_0.client +package io.opentelemetry.instrumentation.ktor.client import io.ktor.client.request.HttpRequestBuilder import io.opentelemetry.context.propagation.TextMapSetter diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/internal/KtorBuilderUtil.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorBuilderUtil.kt similarity index 52% rename from instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/internal/KtorBuilderUtil.kt rename to instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorBuilderUtil.kt index 10bb56d5a720..ec074cca66bd 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/internal/KtorBuilderUtil.kt +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorBuilderUtil.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.ktor.v2_0.internal +package io.opentelemetry.instrumentation.ktor.internal import io.ktor.client.request.* import io.ktor.client.statement.* @@ -11,14 +11,16 @@ import io.ktor.server.request.* import io.ktor.server.response.* import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder -import io.opentelemetry.instrumentation.ktor.v2_0.client.KtorClientTracingBuilder -import io.opentelemetry.instrumentation.ktor.v2_0.server.KtorServerTracing +import io.opentelemetry.instrumentation.ktor.client.AbstractKtorClientTracingBuilder +import io.opentelemetry.instrumentation.ktor.server.AbstractKtorServerTracingBuilder /** * This class is internal and is hence not for public use. Its APIs are unstable and can change at * any time. */ object KtorBuilderUtil { - lateinit var clientBuilderExtractor: (KtorClientTracingBuilder) -> DefaultHttpClientInstrumenterBuilder - lateinit var serverBuilderExtractor: (KtorServerTracing.Configuration) -> DefaultHttpServerInstrumenterBuilder + lateinit var clientBuilderExtractor: (AbstractKtorClientTracingBuilder) -> DefaultHttpClientInstrumenterBuilder + lateinit var serverBuilderExtractor: ( + AbstractKtorServerTracingBuilder + ) -> DefaultHttpServerInstrumenterBuilder } diff --git a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorClientTracingUtil.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorClientTracingUtil.kt new file mode 100644 index 000000000000..b1735217a99a --- /dev/null +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorClientTracingUtil.kt @@ -0,0 +1,88 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.internal + +import io.ktor.client.* +import io.ktor.client.request.* +import io.ktor.client.statement.* +import io.ktor.util.* +import io.ktor.util.pipeline.* +import io.opentelemetry.context.Context +import io.opentelemetry.extension.kotlin.asContextElement +import io.opentelemetry.instrumentation.api.semconv.http.HttpClientRequestResendCount +import io.opentelemetry.instrumentation.ktor.client.AbstractKtorClientTracing +import kotlinx.coroutines.InternalCoroutinesApi +import kotlinx.coroutines.job +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ +object KtorClientTracingUtil { + private val openTelemetryContextKey = AttributeKey("OpenTelemetry") + + fun install(plugin: AbstractKtorClientTracing, scope: HttpClient) { + installSpanCreation(plugin, scope) + installSpanEnd(plugin, scope) + } + + private fun installSpanCreation(plugin: AbstractKtorClientTracing, scope: HttpClient) { + val initializeRequestPhase = PipelinePhase("OpenTelemetryInitializeRequest") + scope.requestPipeline.insertPhaseAfter(HttpRequestPipeline.State, initializeRequestPhase) + + scope.requestPipeline.intercept(initializeRequestPhase) { + val openTelemetryContext = HttpClientRequestResendCount.initialize(Context.current()) + withContext(openTelemetryContext.asContextElement()) { proceed() } + } + + val createSpanPhase = PipelinePhase("OpenTelemetryCreateSpan") + scope.sendPipeline.insertPhaseAfter(HttpSendPipeline.State, createSpanPhase) + + scope.sendPipeline.intercept(createSpanPhase) { + val requestBuilder = context + val openTelemetryContext = plugin.createSpan(requestBuilder) + + if (openTelemetryContext != null) { + try { + requestBuilder.attributes.put(openTelemetryContextKey, openTelemetryContext) + plugin.populateRequestHeaders(requestBuilder, openTelemetryContext) + + withContext(openTelemetryContext.asContextElement()) { proceed() } + } catch (e: Throwable) { + plugin.endSpan(openTelemetryContext, requestBuilder, null, e) + throw e + } + } else { + proceed() + } + } + } + + @OptIn(InternalCoroutinesApi::class) + private fun installSpanEnd(plugin: AbstractKtorClientTracing, scope: HttpClient) { + val endSpanPhase = PipelinePhase("OpenTelemetryEndSpan") + scope.receivePipeline.insertPhaseBefore(HttpReceivePipeline.State, endSpanPhase) + + scope.receivePipeline.intercept(endSpanPhase) { + val openTelemetryContext = it.call.attributes.getOrNull(openTelemetryContextKey) + openTelemetryContext ?: return@intercept + + scope.launch { + val job = it.call.coroutineContext.job + job.join() + val cause = if (!job.isCancelled) { + null + } else { + kotlin.runCatching { job.getCancellationException() }.getOrNull() + } + + plugin.endSpan(openTelemetryContext, it.call, cause) + } + } + } +} diff --git a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorServerTracer.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorServerTracer.kt new file mode 100644 index 000000000000..2226f4169a94 --- /dev/null +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorServerTracer.kt @@ -0,0 +1,29 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.internal + +import io.ktor.server.application.* +import io.ktor.server.request.* +import io.ktor.server.response.* +import io.opentelemetry.context.Context +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter + +class KtorServerTracer( + private val instrumenter: Instrumenter, +) { + fun start(call: ApplicationCall): Context? { + val parentContext = Context.current() + if (!instrumenter.shouldStart(parentContext, call.request)) { + return null + } + + return instrumenter.start(parentContext, call.request) + } + + fun end(context: Context, call: ApplicationCall, error: Throwable?) { + instrumenter.end(context, call.request, call.response, error) + } +} diff --git a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorServerTracingUtil.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorServerTracingUtil.kt new file mode 100644 index 000000000000..e5e3ea4fc908 --- /dev/null +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/internal/KtorServerTracingUtil.kt @@ -0,0 +1,83 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.internal + +import io.ktor.server.application.* +import io.ktor.server.request.* +import io.ktor.server.response.* +import io.ktor.util.* +import io.ktor.util.pipeline.* +import io.opentelemetry.context.Context +import io.opentelemetry.extension.kotlin.asContextElement +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter +import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor +import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil +import io.opentelemetry.instrumentation.ktor.server.AbstractKtorServerTracingBuilder +import io.opentelemetry.instrumentation.ktor.server.ApplicationRequestGetter +import kotlinx.coroutines.withContext + +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ +object KtorServerTracingUtil { + + fun configureTracing(builder: AbstractKtorServerTracingBuilder, application: Application) { + val contextKey = AttributeKey("OpenTelemetry") + val errorKey = AttributeKey("OpenTelemetryException") + + val instrumenter = instrumenter(builder) + val tracer = KtorServerTracer(instrumenter) + val startPhase = PipelinePhase("OpenTelemetry") + + application.insertPhaseBefore(ApplicationCallPipeline.Monitoring, startPhase) + application.intercept(startPhase) { + val context = tracer.start(call) + + if (context != null) { + call.attributes.put(contextKey, context) + withContext(context.asContextElement()) { + try { + proceed() + } catch (err: Throwable) { + // Stash error for reporting later since need ktor to finish setting up the response + call.attributes.put(errorKey, err) + throw err + } + } + } else { + proceed() + } + } + + val postSendPhase = PipelinePhase("OpenTelemetryPostSend") + application.sendPipeline.insertPhaseAfter(ApplicationSendPipeline.After, postSendPhase) + application.sendPipeline.intercept(postSendPhase) { + val context = call.attributes.getOrNull(contextKey) + if (context != null) { + var error: Throwable? = call.attributes.getOrNull(errorKey) + try { + proceed() + } catch (t: Throwable) { + error = t + throw t + } finally { + tracer.end(context, call, error) + } + } else { + proceed() + } + } + } + + private fun instrumenter(builder: AbstractKtorServerTracingBuilder): Instrumenter { + return InstrumenterUtil.buildUpstreamInstrumenter( + builder.serverBuilder.instrumenterBuilder(), + ApplicationRequestGetter, + builder.spanKindExtractor(SpanKindExtractor.alwaysServer()) + ) + } +} diff --git a/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/AbstractKtorServerTracingBuilder.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/AbstractKtorServerTracingBuilder.kt new file mode 100644 index 000000000000..65abba99460c --- /dev/null +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/AbstractKtorServerTracingBuilder.kt @@ -0,0 +1,196 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.server + +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.request.* +import io.ktor.server.response.* +import io.opentelemetry.api.OpenTelemetry +import io.opentelemetry.api.common.AttributesBuilder +import io.opentelemetry.api.trace.SpanKind +import io.opentelemetry.context.Context +import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder +import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor +import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor +import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusBuilder +import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor +import io.opentelemetry.instrumentation.ktor.internal.KtorBuilderUtil + +abstract class AbstractKtorServerTracingBuilder(private val instrumentationName: String) { + companion object { + init { + KtorBuilderUtil.serverBuilderExtractor = { it.serverBuilder } + } + } + + internal lateinit var serverBuilder: DefaultHttpServerInstrumenterBuilder + + internal var spanKindExtractor: + (SpanKindExtractor) -> SpanKindExtractor = { a -> a } + + fun setOpenTelemetry(openTelemetry: OpenTelemetry) { + this.serverBuilder = + DefaultHttpServerInstrumenterBuilder.create( + instrumentationName, + openTelemetry, + KtorHttpServerAttributesGetter.INSTANCE + ) + } + + @Deprecated("Please use method `spanStatusExtractor`") + fun setStatusExtractor( + extractor: (SpanStatusExtractor) -> SpanStatusExtractor + ) { + spanStatusExtractor { prevStatusExtractor -> + extractor(prevStatusExtractor).extract(spanStatusBuilder, request, response, error) + } + } + + fun spanStatusExtractor(extract: SpanStatusData.(SpanStatusExtractor) -> Unit) { + serverBuilder.setStatusExtractor { prevExtractor -> + SpanStatusExtractor { spanStatusBuilder: SpanStatusBuilder, + request: ApplicationRequest, + response: ApplicationResponse?, + throwable: Throwable? -> + extract( + SpanStatusData(spanStatusBuilder, request, response, throwable), + prevExtractor + ) + } + } + } + + data class SpanStatusData( + val spanStatusBuilder: SpanStatusBuilder, + val request: ApplicationRequest, + val response: ApplicationResponse?, + val error: Throwable? + ) + + @Deprecated("Please use method `spanKindExtractor`") + fun setSpanKindExtractor(extractor: (SpanKindExtractor) -> SpanKindExtractor) { + spanKindExtractor { prevSpanKindExtractor -> + extractor(prevSpanKindExtractor).extract(this) + } + } + + fun spanKindExtractor(extract: ApplicationRequest.(SpanKindExtractor) -> SpanKind) { + spanKindExtractor = { prevExtractor -> + SpanKindExtractor { request: ApplicationRequest -> + extract(request, prevExtractor) + } + } + } + + @Deprecated("Please use method `attributeExtractor`") + fun addAttributeExtractor(extractor: AttributesExtractor) { + attributeExtractor { + onStart { + extractor.onStart(attributes, parentContext, request) + } + onEnd { + extractor.onEnd(attributes, parentContext, request, response, error) + } + } + } + + fun attributeExtractor(extractorBuilder: ExtractorBuilder.() -> Unit = {}) { + val builder = ExtractorBuilder().apply(extractorBuilder).build() + serverBuilder.addAttributesExtractor( + object : AttributesExtractor { + override fun onStart(attributes: AttributesBuilder, parentContext: Context, request: ApplicationRequest) { + builder.onStart(OnStartData(attributes, parentContext, request)) + } + + override fun onEnd(attributes: AttributesBuilder, context: Context, request: ApplicationRequest, response: ApplicationResponse?, error: Throwable?) { + builder.onEnd(OnEndData(attributes, context, request, response, error)) + } + } + ) + } + + class ExtractorBuilder { + private var onStart: OnStartData.() -> Unit = {} + private var onEnd: OnEndData.() -> Unit = {} + + fun onStart(block: OnStartData.() -> Unit) { + onStart = block + } + + fun onEnd(block: OnEndData.() -> Unit) { + onEnd = block + } + + internal fun build(): Extractor { + return Extractor(onStart, onEnd) + } + } + + internal class Extractor(val onStart: OnStartData.() -> Unit, val onEnd: OnEndData.() -> Unit) + + data class OnStartData( + val attributes: AttributesBuilder, + val parentContext: Context, + val request: ApplicationRequest + ) + + data class OnEndData( + val attributes: AttributesBuilder, + val parentContext: Context, + val request: ApplicationRequest, + val response: ApplicationResponse?, + val error: Throwable? + ) + + @Deprecated( + "Please use method `capturedRequestHeaders`", + ReplaceWith("capturedRequestHeaders(headers)") + ) + fun setCapturedRequestHeaders(headers: List) = capturedRequestHeaders(headers) + + fun capturedRequestHeaders(vararg headers: String) = capturedRequestHeaders(headers.asIterable()) + + fun capturedRequestHeaders(headers: Iterable) { + serverBuilder.setCapturedRequestHeaders(headers.toList()) + } + + @Deprecated( + "Please use method `capturedResponseHeaders`", + ReplaceWith("capturedResponseHeaders(headers)") + ) + fun setCapturedResponseHeaders(headers: List) = capturedResponseHeaders(headers) + + fun capturedResponseHeaders(vararg headers: String) = capturedResponseHeaders(headers.asIterable()) + + fun capturedResponseHeaders(headers: Iterable) { + serverBuilder.setCapturedResponseHeaders(headers.toList()) + } + + @Deprecated( + "Please use method `knownMethods`", + ReplaceWith("knownMethods(knownMethods)") + ) + fun setKnownMethods(knownMethods: Set) = knownMethods(knownMethods) + + fun knownMethods(vararg methods: String) = knownMethods(methods.asIterable()) + + fun knownMethods(vararg methods: HttpMethod) = knownMethods(methods.asIterable()) + + @JvmName("knownMethodsJvm") + fun knownMethods(methods: Iterable) = knownMethods(methods.map { it.value }) + + fun knownMethods(methods: Iterable) { + methods.toSet().apply { + serverBuilder.setKnownMethods(this) + } + } + + /** + * {@link #setOpenTelemetry(OpenTelemetry)} sets the serverBuilder to a non-null value. + */ + fun isOpenTelemetryInitialized(): Boolean = this::serverBuilder.isInitialized +} diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/ApplicationRequestGetter.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/ApplicationRequestGetter.kt similarity index 89% rename from instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/ApplicationRequestGetter.kt rename to instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/ApplicationRequestGetter.kt index 267ea53dd7cf..053436977ef2 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/ApplicationRequestGetter.kt +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/ApplicationRequestGetter.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.ktor.v2_0.server +package io.opentelemetry.instrumentation.ktor.server import io.ktor.server.request.* import io.opentelemetry.context.propagation.TextMapGetter diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorHttpServerAttributesGetter.kt b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/KtorHttpServerAttributesGetter.kt similarity index 96% rename from instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorHttpServerAttributesGetter.kt rename to instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/KtorHttpServerAttributesGetter.kt index 49bdedf85d6d..9471aa44f64b 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorHttpServerAttributesGetter.kt +++ b/instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/server/KtorHttpServerAttributesGetter.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.ktor.v2_0.server +package io.opentelemetry.instrumentation.ktor.server import io.ktor.server.plugins.* import io.ktor.server.request.* @@ -13,7 +13,7 @@ import io.opentelemetry.instrumentation.ktor.isIpAddress internal enum class KtorHttpServerAttributesGetter : HttpServerAttributesGetter { - INSTANCE, ; + INSTANCE; override fun getHttpRequestMethod(request: ApplicationRequest): String { return request.httpMethod.value diff --git a/instrumentation/ktor/ktor-2.0/javaagent/build.gradle.kts b/instrumentation/ktor/ktor-2.0/javaagent/build.gradle.kts index f201b43e6c69..2c0398e73b8f 100644 --- a/instrumentation/ktor/ktor-2.0/javaagent/build.gradle.kts +++ b/instrumentation/ktor/ktor-2.0/javaagent/build.gradle.kts @@ -7,10 +7,22 @@ plugins { muzzle { pass { - group.set("org.jetbrains.kotlinx") + group.set("io.ktor") + module.set("ktor-client-core") + versions.set("[2.0.0,3.0.0)") + assertInverse.set(true) + excludeInstrumentationName("ktor-server") + // missing dependencies + skip("1.1.0", "1.1.1", "1.1.5") + } + pass { + group.set("io.ktor") module.set("ktor-server-core") - versions.set("[2.0.0,)") + versions.set("[2.0.0,3.0.0)") assertInverse.set(true) + excludeInstrumentationName("ktor-client") + // missing dependencies + skip("1.1.0", "1.1.1") } } @@ -25,6 +37,7 @@ dependencies { compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") testInstrumentation(project(":instrumentation:netty:netty-4.1:javaagent")) + testInstrumentation(project(":instrumentation:ktor:ktor-3.0:javaagent")) testImplementation(project(":instrumentation:ktor:ktor-2.0:testing")) testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") diff --git a/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/HttpClientInstrumentation.java b/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/HttpClientInstrumentation.java index f1b54532f728..79fb525fdb7a 100644 --- a/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/HttpClientInstrumentation.java +++ b/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/HttpClientInstrumentation.java @@ -13,9 +13,9 @@ import io.ktor.client.HttpClientConfig; import io.ktor.client.engine.HttpClientEngineConfig; import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.instrumentation.ktor.internal.KtorBuilderUtil; import io.opentelemetry.instrumentation.ktor.v2_0.client.KtorClientTracing; import io.opentelemetry.instrumentation.ktor.v2_0.client.KtorClientTracingBuilder; -import io.opentelemetry.instrumentation.ktor.v2_0.internal.KtorBuilderUtil; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; diff --git a/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/KtorClientInstrumentationModule.java b/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/KtorClientInstrumentationModule.java index 7893fc86f893..af4f2f5f14f2 100644 --- a/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/KtorClientInstrumentationModule.java +++ b/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/KtorClientInstrumentationModule.java @@ -5,12 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.ktor.v2_0; +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static java.util.Collections.singletonList; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; @AutoService(InstrumentationModule.class) public class KtorClientInstrumentationModule extends InstrumentationModule { @@ -24,6 +26,12 @@ public boolean isHelperClass(String className) { return className.startsWith("io.opentelemetry.extension.kotlin."); } + @Override + public ElementMatcher.Junction classLoaderMatcher() { + // removed in ktor 3 + return hasClassesNamed("io.ktor.client.engine.HttpClientJvmEngine"); + } + @Override public List typeInstrumentations() { return singletonList(new HttpClientInstrumentation()); diff --git a/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/ServerInstrumentation.java b/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/ServerInstrumentation.java index 835e247f004b..214d94d80df0 100644 --- a/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/ServerInstrumentation.java +++ b/instrumentation/ktor/ktor-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v2_0/ServerInstrumentation.java @@ -11,8 +11,9 @@ import io.ktor.server.application.Application; import io.ktor.server.application.ApplicationPluginKt; import io.opentelemetry.api.GlobalOpenTelemetry; -import io.opentelemetry.instrumentation.ktor.v2_0.internal.KtorBuilderUtil; -import io.opentelemetry.instrumentation.ktor.v2_0.server.KtorServerTracing; +import io.opentelemetry.instrumentation.ktor.internal.KtorBuilderUtil; +import io.opentelemetry.instrumentation.ktor.server.AbstractKtorServerTracingBuilder; +import io.opentelemetry.instrumentation.ktor.v2_0.server.KtorServerTracingBuilderKt; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; @@ -39,19 +40,18 @@ public static class ConstructorAdvice { @Advice.OnMethodExit public static void onExit(@Advice.FieldValue("_applicationInstance") Application application) { - ApplicationPluginKt.install(application, KtorServerTracing.Feature, new SetupFunction()); + ApplicationPluginKt.install( + application, KtorServerTracingBuilderKt.getKtorServerTracing(), new SetupFunction()); } } public static class SetupFunction - implements Function1 { + implements Function1 { @Override - public Unit invoke(KtorServerTracing.Configuration configuration) { - configuration.setOpenTelemetry(GlobalOpenTelemetry.get()); - KtorBuilderUtil.serverBuilderExtractor - .invoke(configuration) - .configure(AgentCommonConfig.get()); + public Unit invoke(AbstractKtorServerTracingBuilder builder) { + builder.setOpenTelemetry(GlobalOpenTelemetry.get()); + KtorBuilderUtil.serverBuilderExtractor.invoke(builder).configure(AgentCommonConfig.get()); return kotlin.Unit.INSTANCE; } } diff --git a/instrumentation/ktor/ktor-2.0/library/README.md b/instrumentation/ktor/ktor-2.0/library/README.md index 46e0be300abe..f9af95e58a5b 100644 --- a/instrumentation/ktor/ktor-2.0/library/README.md +++ b/instrumentation/ktor/ktor-2.0/library/README.md @@ -1,4 +1,4 @@ -# Library Instrumentation for Ktor version 2.0 and higher +# Library Instrumentation for Ktor version 2.x This package contains libraries to help instrument Ktor. Server and client instrumentations are supported. diff --git a/instrumentation/ktor/ktor-2.0/library/build.gradle.kts b/instrumentation/ktor/ktor-2.0/library/build.gradle.kts index b7817a5866eb..45f9669717f4 100644 --- a/instrumentation/ktor/ktor-2.0/library/build.gradle.kts +++ b/instrumentation/ktor/ktor-2.0/library/build.gradle.kts @@ -13,7 +13,7 @@ dependencies { library("io.ktor:ktor-client-core:$ktorVersion") library("io.ktor:ktor-server-core:$ktorVersion") - implementation(project(":instrumentation:ktor:ktor-common:library")) + api(project(":instrumentation:ktor:ktor-2-common:library")) implementation("io.opentelemetry:opentelemetry-extension-kotlin") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorClientTracing.kt b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorClientTracing.kt index 25ab52608eea..429e2ccdfe0c 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorClientTracing.kt +++ b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorClientTracing.kt @@ -6,116 +6,28 @@ package io.opentelemetry.instrumentation.ktor.v2_0.client import io.ktor.client.* -import io.ktor.client.call.* import io.ktor.client.plugins.* import io.ktor.client.request.* import io.ktor.client.statement.* import io.ktor.util.* -import io.ktor.util.pipeline.* -import io.opentelemetry.context.Context import io.opentelemetry.context.propagation.ContextPropagators -import io.opentelemetry.extension.kotlin.asContextElement import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter -import io.opentelemetry.instrumentation.api.semconv.http.HttpClientRequestResendCount -import kotlinx.coroutines.InternalCoroutinesApi -import kotlinx.coroutines.job -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext +import io.opentelemetry.instrumentation.ktor.client.AbstractKtorClientTracing +import io.opentelemetry.instrumentation.ktor.internal.KtorClientTracingUtil class KtorClientTracing internal constructor( - private val instrumenter: Instrumenter, - private val propagators: ContextPropagators, -) { - - private fun createSpan(requestBuilder: HttpRequestBuilder): Context? { - val parentContext = Context.current() - val requestData = requestBuilder.build() - - return if (instrumenter.shouldStart(parentContext, requestData)) { - instrumenter.start(parentContext, requestData) - } else { - null - } - } - - private fun populateRequestHeaders(requestBuilder: HttpRequestBuilder, context: Context) { - propagators.textMapPropagator.inject(context, requestBuilder, KtorHttpHeadersSetter) - } - - private fun endSpan(context: Context, call: HttpClientCall, error: Throwable?) { - endSpan(context, HttpRequestBuilder().takeFrom(call.request), call.response, error) - } - - private fun endSpan(context: Context, requestBuilder: HttpRequestBuilder, response: HttpResponse?, error: Throwable?) { - instrumenter.end(context, requestBuilder.build(), response, error) - } + instrumenter: Instrumenter, + propagators: ContextPropagators +) : AbstractKtorClientTracing(instrumenter, propagators) { companion object : HttpClientPlugin { - private val openTelemetryContextKey = AttributeKey("OpenTelemetry") - override val key = AttributeKey("OpenTelemetry") override fun prepare(block: KtorClientTracingBuilder.() -> Unit) = KtorClientTracingBuilder().apply(block).build() override fun install(plugin: KtorClientTracing, scope: HttpClient) { - installSpanCreation(plugin, scope) - installSpanEnd(plugin, scope) - } - - private fun installSpanCreation(plugin: KtorClientTracing, scope: HttpClient) { - val initializeRequestPhase = PipelinePhase("OpenTelemetryInitializeRequest") - scope.requestPipeline.insertPhaseAfter(HttpRequestPipeline.State, initializeRequestPhase) - - scope.requestPipeline.intercept(initializeRequestPhase) { - val openTelemetryContext = HttpClientRequestResendCount.initialize(Context.current()) - withContext(openTelemetryContext.asContextElement()) { proceed() } - } - - val createSpanPhase = PipelinePhase("OpenTelemetryCreateSpan") - scope.sendPipeline.insertPhaseAfter(HttpSendPipeline.State, createSpanPhase) - - scope.sendPipeline.intercept(createSpanPhase) { - val requestBuilder = context - val openTelemetryContext = plugin.createSpan(requestBuilder) - - if (openTelemetryContext != null) { - try { - requestBuilder.attributes.put(openTelemetryContextKey, openTelemetryContext) - plugin.populateRequestHeaders(requestBuilder, openTelemetryContext) - - withContext(openTelemetryContext.asContextElement()) { proceed() } - } catch (e: Throwable) { - plugin.endSpan(openTelemetryContext, requestBuilder, null, e) - throw e - } - } else { - proceed() - } - } - } - - @OptIn(InternalCoroutinesApi::class) - private fun installSpanEnd(plugin: KtorClientTracing, scope: HttpClient) { - val endSpanPhase = PipelinePhase("OpenTelemetryEndSpan") - scope.receivePipeline.insertPhaseBefore(HttpReceivePipeline.State, endSpanPhase) - - scope.receivePipeline.intercept(endSpanPhase) { - val openTelemetryContext = it.call.attributes.getOrNull(openTelemetryContextKey) - openTelemetryContext ?: return@intercept - - scope.launch { - val job = it.call.coroutineContext.job - job.join() - val cause = if (!job.isCancelled) { - null - } else { - kotlin.runCatching { job.getCancellationException() }.getOrNull() - } - - plugin.endSpan(openTelemetryContext, it.call, cause) - } - } + KtorClientTracingUtil.install(plugin, scope) } } } diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorClientTracingBuilder.kt b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorClientTracingBuilder.kt index f03128224b07..b93fb82f02da 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorClientTracingBuilder.kt +++ b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorClientTracingBuilder.kt @@ -5,168 +5,13 @@ package io.opentelemetry.instrumentation.ktor.v2_0.client -import io.ktor.client.request.* -import io.ktor.client.statement.* -import io.ktor.http.* -import io.opentelemetry.api.OpenTelemetry -import io.opentelemetry.api.common.AttributesBuilder -import io.opentelemetry.context.Context -import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder -import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor +import io.opentelemetry.instrumentation.ktor.client.AbstractKtorClientTracingBuilder import io.opentelemetry.instrumentation.ktor.v2_0.InstrumentationProperties.INSTRUMENTATION_NAME -import io.opentelemetry.instrumentation.ktor.v2_0.internal.KtorBuilderUtil -class KtorClientTracingBuilder { - companion object { - init { - KtorBuilderUtil.clientBuilderExtractor = { it.clientBuilder } - } - } - - private lateinit var openTelemetry: OpenTelemetry - private lateinit var clientBuilder: DefaultHttpClientInstrumenterBuilder - - fun setOpenTelemetry(openTelemetry: OpenTelemetry) { - this.openTelemetry = openTelemetry - this.clientBuilder = DefaultHttpClientInstrumenterBuilder.create( - INSTRUMENTATION_NAME, - openTelemetry, - KtorHttpClientAttributesGetter - ) - } - - @Deprecated( - "Please use method `capturedRequestHeaders`", - ReplaceWith("capturedRequestHeaders(headers.asIterable())") - ) - fun setCapturedRequestHeaders(vararg headers: String) = capturedRequestHeaders(headers.asIterable()) - - @Deprecated( - "Please use method `capturedRequestHeaders`", - ReplaceWith("capturedRequestHeaders(headers)") - ) - fun setCapturedRequestHeaders(headers: List) = capturedRequestHeaders(headers) - - fun capturedRequestHeaders(vararg headers: String) = capturedRequestHeaders(headers.asIterable()) - - fun capturedRequestHeaders(headers: Iterable) { - clientBuilder.setCapturedRequestHeaders(headers.toList()) - } - - @Deprecated( - "Please use method `capturedResponseHeaders`", - ReplaceWith("capturedResponseHeaders(headers.asIterable())") - ) - fun setCapturedResponseHeaders(vararg headers: String) = capturedResponseHeaders(headers.asIterable()) - - @Deprecated( - "Please use method `capturedResponseHeaders`", - ReplaceWith("capturedResponseHeaders(headers)") - ) - fun setCapturedResponseHeaders(headers: List) = capturedResponseHeaders(headers) - - fun capturedResponseHeaders(vararg headers: String) = capturedResponseHeaders(headers.asIterable()) - - fun capturedResponseHeaders(headers: Iterable) { - clientBuilder.setCapturedResponseHeaders(headers.toList()) - } - - @Deprecated( - "Please use method `knownMethods`", - ReplaceWith("knownMethods(knownMethods)") - ) - fun setKnownMethods(knownMethods: Set) = knownMethods(knownMethods) - - fun knownMethods(vararg methods: String) = knownMethods(methods.asIterable()) - - fun knownMethods(vararg methods: HttpMethod) = knownMethods(methods.asIterable()) - - @JvmName("knownMethodsJvm") - fun knownMethods(methods: Iterable) = knownMethods(methods.map { it.value }) - - fun knownMethods(methods: Iterable) { - clientBuilder.setKnownMethods(methods.toSet()) - } - - @Deprecated("Please use method `attributeExtractor`") - fun addAttributesExtractors(vararg extractors: AttributesExtractor) = addAttributesExtractors(extractors.asList()) - - @Deprecated("Please use method `attributeExtractor`") - fun addAttributesExtractors(extractors: Iterable>) { - extractors.forEach { - attributeExtractor { - onStart { it.onStart(attributes, parentContext, request) } - onEnd { it.onEnd(attributes, parentContext, request, response, error) } - } - } - } - - fun attributeExtractor(extractorBuilder: ExtractorBuilder.() -> Unit = {}) { - val builder = ExtractorBuilder().apply(extractorBuilder).build() - this.clientBuilder.addAttributeExtractor( - object : AttributesExtractor { - override fun onStart(attributes: AttributesBuilder, parentContext: Context, request: HttpRequestData) { - builder.onStart(OnStartData(attributes, parentContext, request)) - } - - override fun onEnd(attributes: AttributesBuilder, context: Context, request: HttpRequestData, response: HttpResponse?, error: Throwable?) { - builder.onEnd(OnEndData(attributes, context, request, response, error)) - } - } - ) - } - - class ExtractorBuilder { - private var onStart: OnStartData.() -> Unit = {} - private var onEnd: OnEndData.() -> Unit = {} - - fun onStart(block: OnStartData.() -> Unit) { - onStart = block - } - - fun onEnd(block: OnEndData.() -> Unit) { - onEnd = block - } - - internal fun build(): Extractor { - return Extractor(onStart, onEnd) - } - } - - internal class Extractor(val onStart: OnStartData.() -> Unit, val onEnd: OnEndData.() -> Unit) - - data class OnStartData( - val attributes: AttributesBuilder, - val parentContext: Context, - val request: HttpRequestData - ) - - data class OnEndData( - val attributes: AttributesBuilder, - val parentContext: Context, - val request: HttpRequestData, - val response: HttpResponse?, - val error: Throwable? - ) - - /** - * Configures the instrumentation to emit experimental HTTP client metrics. - * - * @param emitExperimentalHttpClientMetrics `true` if the experimental HTTP client metrics are to be emitted. - */ - @Deprecated("Please use method `emitExperimentalHttpClientMetrics`") - fun setEmitExperimentalHttpClientMetrics(emitExperimentalHttpClientMetrics: Boolean) { - if (emitExperimentalHttpClientMetrics) { - emitExperimentalHttpClientMetrics() - } - } - - fun emitExperimentalHttpClientMetrics() { - clientBuilder.setEmitExperimentalHttpClientMetrics(true) - } +class KtorClientTracingBuilder : AbstractKtorClientTracingBuilder(INSTRUMENTATION_NAME) { internal fun build(): KtorClientTracing = KtorClientTracing( instrumenter = clientBuilder.build(), - propagators = openTelemetry.propagators, + propagators = getOpenTelemetry().propagators, ) } diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracing.kt b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracing.kt deleted file mode 100644 index 66d0324a60e1..000000000000 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracing.kt +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.ktor.v2_0.server - -import io.ktor.http.* -import io.ktor.server.application.* -import io.ktor.server.request.* -import io.ktor.server.response.* -import io.ktor.server.routing.* -import io.ktor.util.* -import io.ktor.util.pipeline.* -import io.opentelemetry.api.OpenTelemetry -import io.opentelemetry.api.common.AttributesBuilder -import io.opentelemetry.api.trace.SpanKind -import io.opentelemetry.context.Context -import io.opentelemetry.extension.kotlin.asContextElement -import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder -import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor -import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter -import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor -import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusBuilder -import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor -import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil -import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRoute -import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRouteSource -import io.opentelemetry.instrumentation.ktor.v2_0.InstrumentationProperties.INSTRUMENTATION_NAME -import io.opentelemetry.instrumentation.ktor.v2_0.internal.KtorBuilderUtil -import kotlinx.coroutines.withContext - -class KtorServerTracing private constructor( - private val instrumenter: Instrumenter, -) { - - class Configuration { - companion object { - init { - KtorBuilderUtil.serverBuilderExtractor = { it.serverBuilder } - } - } - - internal lateinit var serverBuilder: DefaultHttpServerInstrumenterBuilder - - internal var spanKindExtractor: - (SpanKindExtractor) -> SpanKindExtractor = { a -> a } - - fun setOpenTelemetry(openTelemetry: OpenTelemetry) { - this.serverBuilder = - DefaultHttpServerInstrumenterBuilder.create( - INSTRUMENTATION_NAME, - openTelemetry, - KtorHttpServerAttributesGetter.INSTANCE - ) - } - - @Deprecated("Please use method `spanStatusExtractor`") - fun setStatusExtractor( - extractor: (SpanStatusExtractor) -> SpanStatusExtractor - ) { - spanStatusExtractor { prevStatusExtractor -> - extractor(prevStatusExtractor).extract(spanStatusBuilder, request, response, error) - } - } - - fun spanStatusExtractor(extract: SpanStatusData.(SpanStatusExtractor) -> Unit) { - serverBuilder.setStatusExtractor { prevExtractor -> - SpanStatusExtractor { spanStatusBuilder: SpanStatusBuilder, - request: ApplicationRequest, - response: ApplicationResponse?, - throwable: Throwable? -> - extract( - SpanStatusData(spanStatusBuilder, request, response, throwable), - prevExtractor - ) - } - } - } - - data class SpanStatusData( - val spanStatusBuilder: SpanStatusBuilder, - val request: ApplicationRequest, - val response: ApplicationResponse?, - val error: Throwable? - ) - - @Deprecated("Please use method `spanKindExtractor`") - fun setSpanKindExtractor(extractor: (SpanKindExtractor) -> SpanKindExtractor) { - spanKindExtractor { prevSpanKindExtractor -> - extractor(prevSpanKindExtractor).extract(this) - } - } - - fun spanKindExtractor(extract: ApplicationRequest.(SpanKindExtractor) -> SpanKind) { - spanKindExtractor = { prevExtractor -> - SpanKindExtractor { request: ApplicationRequest -> - extract(request, prevExtractor) - } - } - } - - @Deprecated("Please use method `attributeExtractor`") - fun addAttributeExtractor(extractor: AttributesExtractor) { - attributeExtractor { - onStart { - extractor.onStart(attributes, parentContext, request) - } - onEnd { - extractor.onEnd(attributes, parentContext, request, response, error) - } - } - } - - fun attributeExtractor(extractorBuilder: ExtractorBuilder.() -> Unit = {}) { - val builder = ExtractorBuilder().apply(extractorBuilder).build() - serverBuilder.addAttributesExtractor( - object : AttributesExtractor { - override fun onStart(attributes: AttributesBuilder, parentContext: Context, request: ApplicationRequest) { - builder.onStart(OnStartData(attributes, parentContext, request)) - } - - override fun onEnd(attributes: AttributesBuilder, context: Context, request: ApplicationRequest, response: ApplicationResponse?, error: Throwable?) { - builder.onEnd(OnEndData(attributes, context, request, response, error)) - } - } - ) - } - - class ExtractorBuilder { - private var onStart: OnStartData.() -> Unit = {} - private var onEnd: OnEndData.() -> Unit = {} - - fun onStart(block: OnStartData.() -> Unit) { - onStart = block - } - - fun onEnd(block: OnEndData.() -> Unit) { - onEnd = block - } - - internal fun build(): Extractor { - return Extractor(onStart, onEnd) - } - } - - internal class Extractor(val onStart: OnStartData.() -> Unit, val onEnd: OnEndData.() -> Unit) - - data class OnStartData( - val attributes: AttributesBuilder, - val parentContext: Context, - val request: ApplicationRequest - ) - - data class OnEndData( - val attributes: AttributesBuilder, - val parentContext: Context, - val request: ApplicationRequest, - val response: ApplicationResponse?, - val error: Throwable? - ) - - @Deprecated( - "Please use method `capturedRequestHeaders`", - ReplaceWith("capturedRequestHeaders(headers)") - ) - fun setCapturedRequestHeaders(headers: List) = capturedRequestHeaders(headers) - - fun capturedRequestHeaders(vararg headers: String) = capturedRequestHeaders(headers.asIterable()) - - fun capturedRequestHeaders(headers: Iterable) { - serverBuilder.setCapturedRequestHeaders(headers.toList()) - } - - @Deprecated( - "Please use method `capturedResponseHeaders`", - ReplaceWith("capturedResponseHeaders(headers)") - ) - fun setCapturedResponseHeaders(headers: List) = capturedResponseHeaders(headers) - - fun capturedResponseHeaders(vararg headers: String) = capturedResponseHeaders(headers.asIterable()) - - fun capturedResponseHeaders(headers: Iterable) { - serverBuilder.setCapturedResponseHeaders(headers.toList()) - } - - @Deprecated( - "Please use method `knownMethods`", - ReplaceWith("knownMethods(knownMethods)") - ) - fun setKnownMethods(knownMethods: Set) = knownMethods(knownMethods) - - fun knownMethods(vararg methods: String) = knownMethods(methods.asIterable()) - - fun knownMethods(vararg methods: HttpMethod) = knownMethods(methods.asIterable()) - - @JvmName("knownMethodsJvm") - fun knownMethods(methods: Iterable) = knownMethods(methods.map { it.value }) - - fun knownMethods(methods: Iterable) { - methods.toSet().apply { - serverBuilder.setKnownMethods(this) - } - } - - /** - * {@link #setOpenTelemetry(OpenTelemetry)} sets the serverBuilder to a non-null value. - */ - internal fun isOpenTelemetryInitialized(): Boolean = this::serverBuilder.isInitialized - } - - private fun start(call: ApplicationCall): Context? { - val parentContext = Context.current() - if (!instrumenter.shouldStart(parentContext, call.request)) { - return null - } - - return instrumenter.start(parentContext, call.request) - } - - private fun end(context: Context, call: ApplicationCall, error: Throwable?) { - instrumenter.end(context, call.request, call.response, error) - } - - companion object Feature : BaseApplicationPlugin { - - private val contextKey = AttributeKey("OpenTelemetry") - private val errorKey = AttributeKey("OpenTelemetryException") - - override val key: AttributeKey = AttributeKey("OpenTelemetry") - - override fun install(pipeline: Application, configure: Configuration.() -> Unit): KtorServerTracing { - val configuration = Configuration().apply(configure) - - require(configuration.isOpenTelemetryInitialized()) { "OpenTelemetry must be set" } - - val instrumenter = InstrumenterUtil.buildUpstreamInstrumenter( - configuration.serverBuilder.instrumenterBuilder(), - ApplicationRequestGetter, - configuration.spanKindExtractor(SpanKindExtractor.alwaysServer()) - ) - - val feature = KtorServerTracing(instrumenter) - - val startPhase = PipelinePhase("OpenTelemetry") - pipeline.insertPhaseBefore(ApplicationCallPipeline.Monitoring, startPhase) - pipeline.intercept(startPhase) { - val context = feature.start(call) - - if (context != null) { - call.attributes.put(contextKey, context) - withContext(context.asContextElement()) { - try { - proceed() - } catch (err: Throwable) { - // Stash error for reporting later since need ktor to finish setting up the response - call.attributes.put(errorKey, err) - throw err - } - } - } else { - proceed() - } - } - - val postSendPhase = PipelinePhase("OpenTelemetryPostSend") - pipeline.sendPipeline.insertPhaseAfter(ApplicationSendPipeline.After, postSendPhase) - pipeline.sendPipeline.intercept(postSendPhase) { - val context = call.attributes.getOrNull(contextKey) - if (context != null) { - var error: Throwable? = call.attributes.getOrNull(errorKey) - try { - proceed() - } catch (t: Throwable) { - error = t - throw t - } finally { - feature.end(context, call, error) - } - } else { - proceed() - } - } - - pipeline.environment.monitor.subscribe(Routing.RoutingCallStarted) { call -> - HttpServerRoute.update(Context.current(), HttpServerRouteSource.SERVER, { _, arg -> arg.route.parent.toString() }, call) - } - - return feature - } - } -} diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracingBuilder.kt b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracingBuilder.kt new file mode 100644 index 000000000000..b2c4be9b86db --- /dev/null +++ b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracingBuilder.kt @@ -0,0 +1,29 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v2_0.server + +import io.ktor.server.application.* +import io.ktor.server.routing.* +import io.opentelemetry.context.Context +import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRoute +import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRouteSource +import io.opentelemetry.instrumentation.ktor.internal.KtorServerTracingUtil +import io.opentelemetry.instrumentation.ktor.server.AbstractKtorServerTracingBuilder +import io.opentelemetry.instrumentation.ktor.v2_0.InstrumentationProperties.INSTRUMENTATION_NAME + +class KtorServerTracingBuilder internal constructor( + instrumentationName: String +) : AbstractKtorServerTracingBuilder(instrumentationName) + +val KtorServerTracing = createRouteScopedPlugin("OpenTelemetry", { KtorServerTracingBuilder(INSTRUMENTATION_NAME) }) { + require(pluginConfig.isOpenTelemetryInitialized()) { "OpenTelemetry must be set" } + + KtorServerTracingUtil.configureTracing(pluginConfig, application) + + application.environment.monitor.subscribe(Routing.RoutingCallStarted) { call -> + HttpServerRoute.update(Context.current(), HttpServerRouteSource.SERVER, { _, arg -> arg.route.parent.toString() }, call) + } +} diff --git a/instrumentation/ktor/ktor-2.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/AbstractKtorHttpClientTest.kt b/instrumentation/ktor/ktor-2.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/AbstractKtorHttpClientTest.kt index 5d7619dcf3a7..991e32f347f6 100644 --- a/instrumentation/ktor/ktor-2.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/AbstractKtorHttpClientTest.kt +++ b/instrumentation/ktor/ktor-2.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/AbstractKtorHttpClientTest.kt @@ -18,6 +18,7 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES import io.opentelemetry.semconv.NetworkAttributes import kotlinx.coroutines.* +import org.junit.jupiter.api.AfterAll import java.net.URI abstract class AbstractKtorHttpClientTest : AbstractHttpClientTest() { @@ -27,6 +28,19 @@ abstract class AbstractKtorHttpClientTest : AbstractHttpClientTest.installTracing() @@ -67,7 +81,7 @@ abstract class AbstractKtorHttpClientTest : AbstractHttpClientTest - KtorHttpClientSingleConnection(host, port) { installTracing() } + KtorHttpClientSingleConnection(singleConnectionClient, host, port) } } } diff --git a/instrumentation/ktor/ktor-2.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientSingleConnection.kt b/instrumentation/ktor/ktor-2.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientSingleConnection.kt index 1a1f00a8fc58..2396d62bb6b1 100644 --- a/instrumentation/ktor/ktor-2.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientSingleConnection.kt +++ b/instrumentation/ktor/ktor-2.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientSingleConnection.kt @@ -12,23 +12,11 @@ import io.opentelemetry.instrumentation.testing.junit.http.SingleConnection import kotlinx.coroutines.runBlocking class KtorHttpClientSingleConnection( + private val client: HttpClient, private val host: String, - private val port: Int, - private val installTracing: HttpClientConfig<*>.() -> Unit, + private val port: Int ) : SingleConnection { - private val client: HttpClient - - init { - val engine = CIO.create { - maxConnectionsCount = 1 - } - - client = HttpClient(engine) { - installTracing() - } - } - override fun doRequest(path: String, requestHeaders: MutableMap) = runBlocking { val request = HttpRequestBuilder( scheme = "http", diff --git a/instrumentation/ktor/ktor-3.0/javaagent/build.gradle.kts b/instrumentation/ktor/ktor-3.0/javaagent/build.gradle.kts new file mode 100644 index 000000000000..7f2aa66d5dcc --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/javaagent/build.gradle.kts @@ -0,0 +1,56 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + id("org.jetbrains.kotlin.jvm") + id("otel.javaagent-instrumentation") +} + +muzzle { + pass { + group.set("io.ktor") + module.set("ktor-client-core") + versions.set("[3.0.0,)") + assertInverse.set(true) + excludeInstrumentationName("ktor-server") + // missing dependencies + skip("1.1.0", "1.1.1", "1.1.5") + } + pass { + group.set("io.ktor") + module.set("ktor-server-core") + versions.set("[3.0.0,)") + assertInverse.set(true) + excludeInstrumentationName("ktor-client") + // missing dependencies + skip("1.1.0", "1.1.1") + } +} + +val ktorVersion = "3.0.0" + +dependencies { + library("io.ktor:ktor-client-core:$ktorVersion") + library("io.ktor:ktor-server-core:$ktorVersion") + + implementation(project(":instrumentation:ktor:ktor-3.0:library")) + + compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + + testInstrumentation(project(":instrumentation:netty:netty-4.1:javaagent")) + testInstrumentation(project(":instrumentation:ktor:ktor-2.0:javaagent")) + + testImplementation(project(":instrumentation:ktor:ktor-3.0:testing")) + testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + testImplementation("io.opentelemetry:opentelemetry-extension-kotlin") + + testLibrary("io.ktor:ktor-server-netty:$ktorVersion") + testLibrary("io.ktor:ktor-client-cio:$ktorVersion") +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + // generate metadata for Java 1.8 reflection on method parameters, used in @WithSpan tests + javaParameters = true + } +} diff --git a/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/HttpClientInstrumentation.java b/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/HttpClientInstrumentation.java new file mode 100644 index 000000000000..09dfcca67e20 --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/HttpClientInstrumentation.java @@ -0,0 +1,62 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.ktor.v3_0; + +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.takesArgument; +import static net.bytebuddy.matcher.ElementMatchers.takesArguments; + +import io.ktor.client.HttpClientConfig; +import io.ktor.client.engine.HttpClientEngineConfig; +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.instrumentation.ktor.internal.KtorBuilderUtil; +import io.opentelemetry.instrumentation.ktor.v3_0.client.KtorClientTracing; +import io.opentelemetry.instrumentation.ktor.v3_0.client.KtorClientTracingBuilder; +import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import kotlin.Unit; +import kotlin.jvm.functions.Function1; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; + +public class HttpClientInstrumentation implements TypeInstrumentation { + @Override + public ElementMatcher typeMatcher() { + return named("io.ktor.client.HttpClient"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isConstructor() + .and(takesArguments(2)) + .and(takesArgument(1, named("io.ktor.client.HttpClientConfig"))), + this.getClass().getName() + "$ConstructorAdvice"); + } + + @SuppressWarnings("unused") + public static class ConstructorAdvice { + + @Advice.OnMethodEnter + public static void onEnter( + @Advice.Argument(1) HttpClientConfig httpClientConfig) { + httpClientConfig.install(KtorClientTracing.Companion, new SetupFunction()); + } + } + + public static class SetupFunction implements Function1 { + + @Override + public Unit invoke(KtorClientTracingBuilder builder) { + builder.setOpenTelemetry(GlobalOpenTelemetry.get()); + KtorBuilderUtil.clientBuilderExtractor.invoke(builder).configure(AgentCommonConfig.get()); + return Unit.INSTANCE; + } + } +} diff --git a/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/KtorClientInstrumentationModule.java b/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/KtorClientInstrumentationModule.java new file mode 100644 index 000000000000..666a83d8e59d --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/KtorClientInstrumentationModule.java @@ -0,0 +1,39 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.ktor.v3_0; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; +import static java.util.Collections.singletonList; + +import com.google.auto.service.AutoService; +import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; + +@AutoService(InstrumentationModule.class) +public class KtorClientInstrumentationModule extends InstrumentationModule { + + public KtorClientInstrumentationModule() { + super("ktor", "ktor-client", "ktor-3.0", "ktor-client-3.0"); + } + + @Override + public boolean isHelperClass(String className) { + return className.startsWith("io.opentelemetry.extension.kotlin."); + } + + @Override + public ElementMatcher.Junction classLoaderMatcher() { + // added in ktor 3 + return hasClassesNamed("io.ktor.client.content.ProgressListener"); + } + + @Override + public List typeInstrumentations() { + return singletonList(new HttpClientInstrumentation()); + } +} diff --git a/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/KtorServerInstrumentationModule.java b/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/KtorServerInstrumentationModule.java new file mode 100644 index 000000000000..11152c53526d --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/KtorServerInstrumentationModule.java @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.ktor.v3_0; + +import static java.util.Collections.singletonList; + +import com.google.auto.service.AutoService; +import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import java.util.List; + +@AutoService(InstrumentationModule.class) +public class KtorServerInstrumentationModule extends InstrumentationModule { + + public KtorServerInstrumentationModule() { + super("ktor", "ktor-server", "ktor-3.0", "ktor-server-3.0"); + } + + @Override + public boolean isHelperClass(String className) { + return className.startsWith("io.opentelemetry.extension.kotlin."); + } + + @Override + public List typeInstrumentations() { + return singletonList(new ServerInstrumentation()); + } +} diff --git a/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/ServerInstrumentation.java b/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/ServerInstrumentation.java new file mode 100644 index 000000000000..df4335fa686d --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/ServerInstrumentation.java @@ -0,0 +1,57 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.ktor.v3_0; + +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.named; + +import io.ktor.server.application.Application; +import io.ktor.server.application.ApplicationPluginKt; +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.instrumentation.ktor.internal.KtorBuilderUtil; +import io.opentelemetry.instrumentation.ktor.server.AbstractKtorServerTracingBuilder; +import io.opentelemetry.instrumentation.ktor.v3_0.server.KtorServerTracingBuilderKt; +import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import kotlin.Unit; +import kotlin.jvm.functions.Function1; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; + +public class ServerInstrumentation implements TypeInstrumentation { + @Override + public ElementMatcher typeMatcher() { + return named("io.ktor.server.engine.EmbeddedServer"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isConstructor(), this.getClass().getName() + "$ConstructorAdvice"); + } + + @SuppressWarnings("unused") + public static class ConstructorAdvice { + + @Advice.OnMethodExit + public static void onExit(@Advice.FieldValue("_applicationInstance") Application application) { + ApplicationPluginKt.install( + application, KtorServerTracingBuilderKt.getKtorServerTracing(), new SetupFunction()); + } + } + + public static class SetupFunction implements Function1 { + + @Override + public Unit invoke(AbstractKtorServerTracingBuilder builder) { + builder.setOpenTelemetry(GlobalOpenTelemetry.get()); + KtorBuilderUtil.serverBuilderExtractor.invoke(builder).configure(AgentCommonConfig.get()); + return Unit.INSTANCE; + } + } +} diff --git a/instrumentation/ktor/ktor-3.0/javaagent/src/test/java/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientTest.kt b/instrumentation/ktor/ktor-3.0/javaagent/src/test/java/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientTest.kt new file mode 100644 index 000000000000..b9e3623e01a9 --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/javaagent/src/test/java/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientTest.kt @@ -0,0 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.client + +import io.ktor.client.* +import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension +import org.junit.jupiter.api.extension.RegisterExtension + +class KtorHttpClientTest : AbstractKtorHttpClientTest() { + + companion object { + @JvmStatic + @RegisterExtension + private val TESTING = HttpClientInstrumentationExtension.forAgent() + } + + override fun HttpClientConfig<*>.installTracing() { + } +} diff --git a/instrumentation/ktor/ktor-3.0/javaagent/src/test/java/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorHttpServerTest.kt b/instrumentation/ktor/ktor-3.0/javaagent/src/test/java/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorHttpServerTest.kt new file mode 100644 index 000000000000..138a6911144d --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/javaagent/src/test/java/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorHttpServerTest.kt @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.server + +import io.ktor.server.application.* +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension +import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension +import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions +import org.junit.jupiter.api.extension.RegisterExtension + +class KtorHttpServerTest : AbstractKtorHttpServerTest() { + + companion object { + @JvmStatic + @RegisterExtension + val TESTING: InstrumentationExtension = HttpServerInstrumentationExtension.forAgent() + } + + override fun getTesting(): InstrumentationExtension { + return TESTING + } + + override fun installOpenTelemetry(application: Application) { + } + + override fun configure(options: HttpServerTestOptions) { + super.configure(options) + options.setTestException(false) + } +} diff --git a/instrumentation/ktor/ktor-3.0/library/README.md b/instrumentation/ktor/ktor-3.0/library/README.md new file mode 100644 index 000000000000..ce6fe411b3cd --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/library/README.md @@ -0,0 +1,60 @@ +# Library Instrumentation for Ktor version 3.0 and higher + +This package contains libraries to help instrument Ktor. Server and client instrumentations are supported. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the [latest +release](https://search.maven.org/search?q=g:io.opentelemetry.instrumentation%20AND%20a:opentelemetry-ktor-3.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-ktor-3.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-ktor-3.0:OPENTELEMETRY_VERSION") +``` + +## Usage + +## Initializing server instrumentation + +Initialize instrumentation by installing the `KtorServerTracing` feature. You must set the `OpenTelemetry` to use with +the feature. + +```kotlin +val openTelemetry: OpenTelemetry = ... + +embeddedServer(Netty, 8080) { + install(KtorServerTracing) { + setOpenTelemetry(openTelemetry) + } +} +``` + +## Initializing client instrumentation + +Initialize instrumentation by installing the `KtorClientTracing` feature. You must set the `OpenTelemetry` to use with +the feature. + +```kotlin +val openTelemetry: OpenTelemetry = ... + +val client = HttpClient { + install(KtorClientTracing) { + setOpenTelemetry(openTelemetry) + } +} +``` diff --git a/instrumentation/ktor/ktor-3.0/library/build.gradle.kts b/instrumentation/ktor/ktor-3.0/library/build.gradle.kts new file mode 100644 index 000000000000..eb796b47455d --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/library/build.gradle.kts @@ -0,0 +1,34 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + id("otel.library-instrumentation") + + id("org.jetbrains.kotlin.jvm") +} + +val ktorVersion = "3.0.0" + +dependencies { + library("io.ktor:ktor-client-core:$ktorVersion") + library("io.ktor:ktor-server-core:$ktorVersion") + + api(project(":instrumentation:ktor:ktor-2-common:library")) + implementation("io.opentelemetry:opentelemetry-extension-kotlin") + + compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + + testImplementation(project(":instrumentation:ktor:ktor-3.0:testing")) + testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + + testLibrary("io.ktor:ktor-server-netty:$ktorVersion") + testLibrary("io.ktor:ktor-client-cio:$ktorVersion") +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + @Suppress("deprecation") + languageVersion.set(KotlinVersion.KOTLIN_1_6) + } +} diff --git a/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/InstrumentationProperties.kt b/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/InstrumentationProperties.kt new file mode 100644 index 000000000000..722f27ca21e7 --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/InstrumentationProperties.kt @@ -0,0 +1,14 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0 + +/** + * Common properties for both client and server instrumentations + */ +internal object InstrumentationProperties { + + internal const val INSTRUMENTATION_NAME = "io.opentelemetry.ktor-3.0" +} diff --git a/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorClientTracing.kt b/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorClientTracing.kt new file mode 100644 index 000000000000..d5bf578cc56c --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorClientTracing.kt @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.client + +import io.ktor.client.* +import io.ktor.client.plugins.* +import io.ktor.client.request.* +import io.ktor.client.statement.* +import io.ktor.util.* +import io.opentelemetry.context.propagation.ContextPropagators +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter +import io.opentelemetry.instrumentation.ktor.client.AbstractKtorClientTracing +import io.opentelemetry.instrumentation.ktor.internal.KtorClientTracingUtil + +class KtorClientTracing internal constructor( + instrumenter: Instrumenter, + propagators: ContextPropagators +) : AbstractKtorClientTracing(instrumenter, propagators) { + + companion object : HttpClientPlugin { + + override val key = AttributeKey("OpenTelemetry") + + override fun prepare(block: KtorClientTracingBuilder.() -> Unit) = KtorClientTracingBuilder().apply(block).build() + + override fun install(plugin: KtorClientTracing, scope: HttpClient) { + KtorClientTracingUtil.install(plugin, scope) + } + } +} diff --git a/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorClientTracingBuilder.kt b/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorClientTracingBuilder.kt new file mode 100644 index 000000000000..6f68939d9f06 --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorClientTracingBuilder.kt @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.client + +import io.opentelemetry.instrumentation.ktor.client.AbstractKtorClientTracingBuilder +import io.opentelemetry.instrumentation.ktor.v3_0.InstrumentationProperties.INSTRUMENTATION_NAME + +class KtorClientTracingBuilder : AbstractKtorClientTracingBuilder(INSTRUMENTATION_NAME) { + + internal fun build(): KtorClientTracing = KtorClientTracing( + instrumenter = clientBuilder.build(), + propagators = getOpenTelemetry().propagators, + ) +} diff --git a/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorServerTracingBuilder.kt b/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorServerTracingBuilder.kt new file mode 100644 index 000000000000..a086f7473fd8 --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorServerTracingBuilder.kt @@ -0,0 +1,29 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.server + +import io.ktor.server.application.* +import io.ktor.server.routing.* +import io.opentelemetry.context.Context +import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRoute +import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRouteSource +import io.opentelemetry.instrumentation.ktor.internal.KtorServerTracingUtil +import io.opentelemetry.instrumentation.ktor.server.AbstractKtorServerTracingBuilder +import io.opentelemetry.instrumentation.ktor.v3_0.InstrumentationProperties.INSTRUMENTATION_NAME + +class KtorServerTracingBuilder internal constructor( + instrumentationName: String +) : AbstractKtorServerTracingBuilder(instrumentationName) + +val KtorServerTracing = createRouteScopedPlugin("OpenTelemetry", { KtorServerTracingBuilder(INSTRUMENTATION_NAME) }) { + require(pluginConfig.isOpenTelemetryInitialized()) { "OpenTelemetry must be set" } + + KtorServerTracingUtil.configureTracing(pluginConfig, application) + + application.monitor.subscribe(RoutingRoot.RoutingCallStarted) { call -> + HttpServerRoute.update(Context.current(), HttpServerRouteSource.SERVER, { _, arg -> arg.route.parent.toString() }, call) + } +} diff --git a/instrumentation/ktor/ktor-3.0/library/src/test/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientTest.kt b/instrumentation/ktor/ktor-3.0/library/src/test/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientTest.kt new file mode 100644 index 000000000000..0249949e8ebb --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/library/src/test/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientTest.kt @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.client + +import io.ktor.client.* +import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension +import org.junit.jupiter.api.extension.RegisterExtension + +class KtorHttpClientTest : AbstractKtorHttpClientTest() { + + companion object { + @JvmStatic + @RegisterExtension + private val TESTING = HttpClientInstrumentationExtension.forLibrary() + } + + override fun HttpClientConfig<*>.installTracing() { + install(KtorClientTracing) { + setOpenTelemetry(TESTING.openTelemetry) + capturedRequestHeaders(TEST_REQUEST_HEADER) + capturedResponseHeaders(TEST_RESPONSE_HEADER) + } + } +} diff --git a/instrumentation/ktor/ktor-3.0/library/src/test/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorHttpServerTest.kt b/instrumentation/ktor/ktor-3.0/library/src/test/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorHttpServerTest.kt new file mode 100644 index 000000000000..61caec27af83 --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/library/src/test/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/KtorHttpServerTest.kt @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.server + +import io.ktor.server.application.* +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension +import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension +import org.junit.jupiter.api.extension.RegisterExtension + +class KtorHttpServerTest : AbstractKtorHttpServerTest() { + + companion object { + @JvmStatic + @RegisterExtension + val TESTING: InstrumentationExtension = HttpServerInstrumentationExtension.forLibrary() + } + + override fun getTesting(): InstrumentationExtension { + return TESTING + } + + override fun installOpenTelemetry(application: Application) { + application.apply { + install(KtorServerTracing) { + setOpenTelemetry(TESTING.openTelemetry) + capturedRequestHeaders(TEST_REQUEST_HEADER) + capturedResponseHeaders(TEST_RESPONSE_HEADER) + } + } + } +} diff --git a/instrumentation/ktor/ktor-3.0/testing/build.gradle.kts b/instrumentation/ktor/ktor-3.0/testing/build.gradle.kts new file mode 100644 index 000000000000..d3fb3f3d0acc --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/testing/build.gradle.kts @@ -0,0 +1,28 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + id("otel.java-conventions") + + id("org.jetbrains.kotlin.jvm") +} + +val ktorVersion = "3.0.0" + +dependencies { + api(project(":testing-common")) + + implementation("io.ktor:ktor-client-core:$ktorVersion") + implementation("io.ktor:ktor-server-core:$ktorVersion") + + implementation("io.opentelemetry:opentelemetry-extension-kotlin") + + compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + compileOnly("io.ktor:ktor-server-netty:$ktorVersion") + compileOnly("io.ktor:ktor-client-cio:$ktorVersion") +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } +} diff --git a/instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/AbstractKtorHttpClientTest.kt b/instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/AbstractKtorHttpClientTest.kt new file mode 100644 index 000000000000..2e698e34e461 --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/AbstractKtorHttpClientTest.kt @@ -0,0 +1,88 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.client + +import io.ktor.client.* +import io.ktor.client.engine.cio.* +import io.ktor.client.plugins.* +import io.ktor.client.request.* +import io.ktor.http.* +import io.opentelemetry.context.Context +import io.opentelemetry.extension.kotlin.asContextElement +import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest +import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult +import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions +import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES +import io.opentelemetry.semconv.NetworkAttributes +import kotlinx.coroutines.* +import org.junit.jupiter.api.AfterAll +import java.net.URI + +abstract class AbstractKtorHttpClientTest : AbstractHttpClientTest() { + + private val client = HttpClient(CIO) { + install(HttpRedirect) + + installTracing() + } + private val singleConnectionClient = HttpClient(CIO) { + engine { + maxConnectionsCount = 1 + } + + installTracing() + } + + @AfterAll + fun tearDown() { + client.close() + singleConnectionClient.close() + } + + abstract fun HttpClientConfig<*>.installTracing() + + override fun buildRequest(requestMethod: String, uri: URI, requestHeaders: MutableMap) = HttpRequestBuilder(uri.toURL()).apply { + method = HttpMethod.parse(requestMethod) + + requestHeaders.forEach { (header, value) -> headers.append(header, value) } + } + + override fun sendRequest(request: HttpRequestBuilder, method: String, uri: URI, headers: MutableMap) = runBlocking { + client.request(request).status.value + } + + override fun sendRequestWithCallback( + request: HttpRequestBuilder, + method: String, + uri: URI, + headers: MutableMap, + httpClientResult: HttpClientResult, + ) { + CoroutineScope(Dispatchers.Default + Context.current().asContextElement()).launch { + try { + val statusCode = client.request(request).status.value + httpClientResult.complete(statusCode) + } catch (e: Throwable) { + httpClientResult.complete(e) + } + } + } + + override fun configure(optionsBuilder: HttpClientTestOptions.Builder) { + with(optionsBuilder) { + disableTestReadTimeout() + markAsLowLevelInstrumentation() + setMaxRedirects(20) + spanEndsAfterBody() + + setHttpAttributes { DEFAULT_HTTP_ATTRIBUTES - setOf(NetworkAttributes.NETWORK_PROTOCOL_VERSION) } + + setSingleConnectionFactory { host, port -> + KtorHttpClientSingleConnection(singleConnectionClient, host, port) + } + } + } +} diff --git a/instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientSingleConnection.kt b/instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientSingleConnection.kt new file mode 100644 index 000000000000..30290d4f1e0f --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/client/KtorHttpClientSingleConnection.kt @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.client + +import io.ktor.client.* +import io.ktor.client.engine.cio.* +import io.ktor.client.request.* +import io.opentelemetry.instrumentation.testing.junit.http.SingleConnection +import kotlinx.coroutines.runBlocking + +class KtorHttpClientSingleConnection( + private val client: HttpClient, + private val host: String, + private val port: Int +) : SingleConnection { + + override fun doRequest(path: String, requestHeaders: MutableMap) = runBlocking { + val request = HttpRequestBuilder( + scheme = "http", + host = host, + port = port, + path = path, + ).apply { + requestHeaders.forEach { (name, value) -> headers.append(name, value) } + } + + client.request(request).status.value + } +} diff --git a/instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/AbstractKtorHttpServerTest.kt b/instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/AbstractKtorHttpServerTest.kt new file mode 100644 index 000000000000..24d4eba8c5e4 --- /dev/null +++ b/instrumentation/ktor/ktor-3.0/testing/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v3_0/server/AbstractKtorHttpServerTest.kt @@ -0,0 +1,141 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.ktor.v3_0.server + +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.engine.* +import io.ktor.server.netty.* +import io.ktor.server.request.* +import io.ktor.server.response.* +import io.ktor.server.routing.* +import io.opentelemetry.api.trace.Span +import io.opentelemetry.api.trace.SpanKind +import io.opentelemetry.api.trace.StatusCode +import io.opentelemetry.context.Context +import io.opentelemetry.extension.kotlin.asContextElement +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension +import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest +import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions +import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint +import io.opentelemetry.semconv.ServerAttributes +import kotlinx.coroutines.withContext +import java.util.concurrent.ExecutionException +import java.util.concurrent.TimeUnit + +abstract class AbstractKtorHttpServerTest : AbstractHttpServerTest>() { + + abstract fun getTesting(): InstrumentationExtension + + abstract fun installOpenTelemetry(application: Application) + + override fun setupServer(): EmbeddedServer<*, *> { + return embeddedServer(Netty, port = port) { + installOpenTelemetry(this) + + routing { + get(ServerEndpoint.SUCCESS.path) { + controller(ServerEndpoint.SUCCESS) { + call.respondText(ServerEndpoint.SUCCESS.body, status = HttpStatusCode.fromValue(ServerEndpoint.SUCCESS.status)) + } + } + + get(ServerEndpoint.REDIRECT.path) { + controller(ServerEndpoint.REDIRECT) { + call.respondRedirect(ServerEndpoint.REDIRECT.body) + } + } + + get(ServerEndpoint.ERROR.path) { + controller(ServerEndpoint.ERROR) { + call.respondText(ServerEndpoint.ERROR.body, status = HttpStatusCode.fromValue(ServerEndpoint.ERROR.status)) + } + } + + get(ServerEndpoint.EXCEPTION.path) { + controller(ServerEndpoint.EXCEPTION) { + throw IllegalStateException(ServerEndpoint.EXCEPTION.body) + } + } + + get("/query") { + controller(ServerEndpoint.QUERY_PARAM) { + call.respondText("some=${call.request.queryParameters["some"]}", status = HttpStatusCode.fromValue(ServerEndpoint.QUERY_PARAM.status)) + } + } + + get("/path/{id}/param") { + controller(ServerEndpoint.PATH_PARAM) { + call.respondText( + call.parameters["id"] + ?: "", + status = HttpStatusCode.fromValue(ServerEndpoint.PATH_PARAM.status), + ) + } + } + + get("/child") { + controller(ServerEndpoint.INDEXED_CHILD) { + ServerEndpoint.INDEXED_CHILD.collectSpanAttributes { call.request.queryParameters[it] } + call.respondText(ServerEndpoint.INDEXED_CHILD.body, status = HttpStatusCode.fromValue(ServerEndpoint.INDEXED_CHILD.status)) + } + } + + get("/captureHeaders") { + controller(ServerEndpoint.CAPTURE_HEADERS) { + call.response.header("X-Test-Response", call.request.header("X-Test-Request") ?: "") + call.respondText(ServerEndpoint.CAPTURE_HEADERS.body, status = HttpStatusCode.fromValue(ServerEndpoint.CAPTURE_HEADERS.status)) + } + } + } + }.start() + } + + override fun stopServer(server: EmbeddedServer<*, *>) { + server.stop(0, 10, TimeUnit.SECONDS) + } + + // Copy in HttpServerTest.controller but make it a suspending function + private suspend fun controller(endpoint: ServerEndpoint, wrapped: suspend () -> Unit) { + assert(Span.current().spanContext.isValid, { "Controller should have a parent span. " }) + if (endpoint == ServerEndpoint.NOT_FOUND) { + wrapped() + } + val span = getTesting().openTelemetry.getTracer("test").spanBuilder("controller").setSpanKind(SpanKind.INTERNAL).startSpan() + try { + withContext(Context.current().with(span).asContextElement()) { + wrapped() + } + span.end() + } catch (e: Exception) { + span.setStatus(StatusCode.ERROR) + span.recordException(if (e is ExecutionException) e.cause ?: e else e) + span.end() + throw e + } + } + + override fun configure(options: HttpServerTestOptions) { + options.setTestPathParam(true) + + options.setHttpAttributes { + HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES - ServerAttributes.SERVER_PORT + } + + options.setExpectedHttpRoute { endpoint, method -> + when (endpoint) { + ServerEndpoint.PATH_PARAM -> "/path/{id}/param" + else -> expectedHttpRoute(endpoint, method) + } + } + + // ktor does not have a controller lifecycle so the server span ends immediately when the + // response is sent, which is before the controller span finishes. + options.setVerifyServerSpanEndTime(false) + + options.setResponseCodeOnNonStandardHttpMethod(405) + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index c9e944fdb48c..8f897c9cade7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -402,6 +402,10 @@ include(":instrumentation:ktor:ktor-1.0:library") include(":instrumentation:ktor:ktor-2.0:javaagent") include(":instrumentation:ktor:ktor-2.0:library") include(":instrumentation:ktor:ktor-2.0:testing") +include(":instrumentation:ktor:ktor-2-common:library") +include(":instrumentation:ktor:ktor-3.0:javaagent") +include(":instrumentation:ktor:ktor-3.0:library") +include(":instrumentation:ktor:ktor-3.0:testing") include(":instrumentation:ktor:ktor-common:library") include(":instrumentation:kubernetes-client-7.0:javaagent") include(":instrumentation:kubernetes-client-7.0:javaagent-unit-tests") From ad21efb378ede3efdd9ae8d4a0da34ef15eaec75 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Tue, 12 Nov 2024 10:02:15 -0500 Subject: [PATCH 24/40] Convert aws 1.11 client tests from groovy to java (#12606) --- .../awssdk/v1_11/Aws1ClientTest.groovy | 137 --------- .../awssdk/v1_11/DynamoDbClientTest.java | 27 ++ .../awssdk/v1_11/Ec2ClientTest.java | 27 ++ .../awssdk/v1_11/KinesisClientTest.java | 27 ++ .../awssdk/v1_11/RdsClientTest.java | 27 ++ .../awssdk/v1_11/S3ClientTest.java | 153 ++++++++++ .../awssdk/v1_11/SnsClientTest.java | 27 ++ .../v1_11/instrumentor/Aws1ClientTest.groovy | 16 - .../awssdk/v1_11/DynamoDbClientTest.java | 27 ++ .../awssdk/v1_11/Ec2ClientTest.java | 27 ++ .../awssdk/v1_11/KinesisClientTest.java | 27 ++ .../awssdk/v1_11/RdsClientTest.java | 27 ++ .../awssdk/v1_11/S3ClientTest.java | 27 ++ .../awssdk/v1_11/SnsClientTest.java | 27 ++ .../awssdk/v1_11/Aws1ClientTest.groovy | 19 -- .../awssdk/v1_11/DynamoDbClientTest.java | 30 ++ .../awssdk/v1_11/Ec2ClientTest.java | 30 ++ .../awssdk/v1_11/KinesisClientTest.java | 30 ++ .../awssdk/v1_11/RdsClientTest.java | 30 ++ .../awssdk/v1_11/S3ClientTest.java | 30 ++ .../awssdk/v1_11/SnsClientTest.java | 30 ++ .../aws-sdk-1.11/testing/build.gradle.kts | 2 - .../v1_11/AbstractAws1ClientTest.groovy | 286 ------------------ .../v1_11/AbstractBaseAwsClientTest.java | 132 ++++++++ .../v1_11/AbstractDynamoDbClientTest.java | 46 +++ .../awssdk/v1_11/AbstractEc2ClientTest.java | 46 +++ .../v1_11/AbstractKinesisClientTest.java | 69 +++++ .../awssdk/v1_11/AbstractRdsClientTest.java | 47 +++ .../awssdk/v1_11/AbstractS3ClientTest.java | 182 +++++++++++ .../awssdk/v1_11/AbstractSnsClientTest.java | 76 +++++ 30 files changed, 1228 insertions(+), 460 deletions(-) delete mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/DynamoDbClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Ec2ClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/KinesisClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RdsClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsClientTest.java delete mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/instrumentor/Aws1ClientTest.groovy create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/DynamoDbClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Ec2ClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/KinesisClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RdsClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsClientTest.java delete mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/DynamoDbClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/Ec2ClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/KinesisClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/RdsClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/S3ClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/SnsClientTest.java delete mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractBaseAwsClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractDynamoDbClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractEc2ClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractKinesisClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractRdsClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractS3ClientTest.java create mode 100644 instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSnsClientTest.java diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy deleted file mode 100644 index 8aabe4ffdff3..000000000000 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11 - -import com.amazonaws.AmazonWebServiceClient -import com.amazonaws.ClientConfiguration -import com.amazonaws.Request -import com.amazonaws.auth.BasicAWSCredentials -import com.amazonaws.auth.NoOpSigner -import com.amazonaws.auth.SignerFactory -import com.amazonaws.handlers.RequestHandler2 -import com.amazonaws.regions.Regions -import com.amazonaws.services.s3.AmazonS3Client -import com.amazonaws.services.s3.AmazonS3ClientBuilder -import io.opentelemetry.api.trace.Span -import io.opentelemetry.api.trace.SpanKind -import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractAws1ClientTest -import io.opentelemetry.instrumentation.test.AgentTestTrait -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes -import io.opentelemetry.semconv.ServerAttributes -import io.opentelemetry.semconv.ErrorAttributes -import io.opentelemetry.semconv.HttpAttributes -import io.opentelemetry.semconv.UrlAttributes - -import static io.opentelemetry.api.trace.StatusCode.ERROR - -class Aws1ClientTest extends AbstractAws1ClientTest implements AgentTestTrait { - @Override - def configureClient(def client) { - return client - } - - // Verify agent instruments old and new construction patterns. - - def "request handler is hooked up with builder"() { - setup: - def builder = AmazonS3ClientBuilder.standard() - .withRegion(Regions.US_EAST_1) - if (addHandler) { - builder.withRequestHandlers(new RequestHandler2() {}) - } - AmazonWebServiceClient client = builder.build() - - expect: - client.requestHandler2s != null - client.requestHandler2s.size() == size - client.requestHandler2s.get(position).getClass().getSimpleName() == "TracingRequestHandler" - - where: - addHandler | size | position - true | 2 | 1 - false | 1 | 0 - } - - def "request handler is hooked up with constructor"() { - setup: - String accessKey = "asdf" - String secretKey = "qwerty" - def credentials = new BasicAWSCredentials(accessKey, secretKey) - def client = new AmazonS3Client(credentials) - if (addHandler) { - client.addRequestHandler(new RequestHandler2() {}) - } - - expect: - client.requestHandler2s != null - client.requestHandler2s.size() == size - client.requestHandler2s.get(0).getClass().getSimpleName() == "TracingRequestHandler" - - where: - addHandler | size - true | 2 - false | 1 - } - - // Test cases that require workarounds using bytecode instrumentation - - def "naughty request handler doesn't break the trace"() { - setup: - def client = new AmazonS3Client(CREDENTIALS_PROVIDER_CHAIN) - client.addRequestHandler(new RequestHandler2() { - void beforeRequest(Request request) { - throw new IllegalStateException("bad handler") - } - }) - - when: - client.getObject("someBucket", "someKey") - - then: - !Span.current().getSpanContext().isValid() - thrown IllegalStateException - - assertTraces(1) { - trace(0, 1) { - span(0) { - name "S3.HeadBucket" - kind SpanKind.CLIENT - status ERROR - errorEvent IllegalStateException, "bad handler" - hasNoParent() - attributes { - "$UrlAttributes.URL_FULL" "https://s3.amazonaws.com" - "$HttpAttributes.HTTP_REQUEST_METHOD" "HEAD" - "$ServerAttributes.SERVER_ADDRESS" "s3.amazonaws.com" - "$RpcIncubatingAttributes.RPC_SYSTEM" "aws-api" - "$RpcIncubatingAttributes.RPC_SERVICE" "Amazon S3" - "$RpcIncubatingAttributes.RPC_METHOD" "HeadBucket" - "aws.endpoint" "https://s3.amazonaws.com" - "aws.agent" "java-aws-sdk" - "aws.bucket.name" "someBucket" - "$ErrorAttributes.ERROR_TYPE" IllegalStateException.name - } - } - } - } - } - - def "calling generatePresignedUrl does not leak context"() { - setup: - SignerFactory.registerSigner("noop", NoOpSigner) - def client = AmazonS3ClientBuilder.standard() - .withRegion(Regions.US_EAST_1) - .withClientConfiguration(new ClientConfiguration().withSignerOverride("noop")) - .build() - - when: - client.generatePresignedUrl("someBucket", "someKey", new Date()) - - then: - // expecting no active span after call to generatePresignedUrl - !Span.current().getSpanContext().isValid() - } -} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/DynamoDbClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/DynamoDbClientTest.java new file mode 100644 index 000000000000..c4ebb6a07c79 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/DynamoDbClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractDynamoDbClientTest; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class DynamoDbClientTest extends AbstractDynamoDbClientTest { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonDynamoDBClientBuilder configureClient(AmazonDynamoDBClientBuilder clientBuilder) { + return clientBuilder; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Ec2ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Ec2ClientTest.java new file mode 100644 index 000000000000..a2366f14596b --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Ec2ClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractEc2ClientTest; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class Ec2ClientTest extends AbstractEc2ClientTest { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonEC2ClientBuilder configureClient(AmazonEC2ClientBuilder clientBuilder) { + return clientBuilder; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/KinesisClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/KinesisClientTest.java new file mode 100644 index 000000000000..070515665472 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/KinesisClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.kinesis.AmazonKinesisClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractKinesisClientTest; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class KinesisClientTest extends AbstractKinesisClientTest { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonKinesisClientBuilder configureClient(AmazonKinesisClientBuilder clientBuilder) { + return clientBuilder; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RdsClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RdsClientTest.java new file mode 100644 index 000000000000..87849fe7af10 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RdsClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.rds.AmazonRDSClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractRdsClientTest; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class RdsClientTest extends AbstractRdsClientTest { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonRDSClientBuilder configureClient(AmazonRDSClientBuilder client) { + return client; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java new file mode 100644 index 000000000000..fa8bd71d66be --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java @@ -0,0 +1,153 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.api.trace.SpanKind.CLIENT; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +import com.amazonaws.ClientConfiguration; +import com.amazonaws.Request; +import com.amazonaws.auth.BasicAWSCredentials; +import com.amazonaws.auth.NoOpSigner; +import com.amazonaws.auth.SignerFactory; +import com.amazonaws.handlers.RequestHandler2; +import com.amazonaws.regions.Regions; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3Client; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractS3ClientTest; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.sdk.trace.data.StatusData; +import java.util.Date; +import java.util.List; +import java.util.stream.Stream; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +class S3ClientTest extends AbstractS3ClientTest { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonS3ClientBuilder configureClient(AmazonS3ClientBuilder client) { + return client; + } + + // Verify agent instruments old and new construction patterns. + @ParameterizedTest + @MethodSource("provideS3Arguments") + void testRequestHandlerIsHookedUpWithBuilder(boolean addHandler, int size, int position) + throws Exception { + AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1); + + if (addHandler) { + builder.withRequestHandlers(new RequestHandler2() {}); + } + AmazonS3 client = builder.build(); + + List requestHandler2s = extractRequestHandlers(client); + assertThat(requestHandler2s).isNotNull(); + assertThat(requestHandler2s.size()).isEqualTo(size); + assertThat(requestHandler2s.get(position).getClass().getSimpleName()) + .isEqualTo("TracingRequestHandler"); + } + + private static Stream provideS3Arguments() { + return Stream.of(Arguments.of(true, 2, 1), Arguments.of(false, 1, 0)); + } + + @ParameterizedTest + @MethodSource("provideS3Arguments") + @SuppressWarnings("deprecation") // AmazonS3Client constructor is deprecated + void testRequestHandlerIsHookedUpWithConstructor(boolean addHandler, int size) throws Exception { + BasicAWSCredentials credentials = new BasicAWSCredentials("asdf", "qwerty"); + AmazonS3Client client = new AmazonS3Client(credentials); + if (addHandler) { + client.addRequestHandler(new RequestHandler2() {}); + } + + List requestHandler2s = extractRequestHandlers(client); + + assertThat(requestHandler2s).isNotNull(); + assertThat(requestHandler2s.size()).isEqualTo(size); + assertThat(requestHandler2s.get(0).getClass().getSimpleName()) + .isEqualTo("TracingRequestHandler"); + } + + @Test + @SuppressWarnings("deprecation") // AmazonS3Client constructor is deprecated + void testNaughtyRequestHandlerDoesntBreakTheTrace() { + AmazonS3Client client = new AmazonS3Client(credentialsProvider); + client.addRequestHandler( + new RequestHandler2() { + @Override + public void beforeRequest(Request request) { + throw new IllegalStateException("bad handler"); + } + }); + + Throwable caught = catchThrowable(() -> client.getObject("someBucket", "someKey")); + + assertThat(caught).isInstanceOf(IllegalStateException.class); + assertThat(Span.current().getSpanContext().isValid()).isFalse(); + + testing() + .waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName("S3.HeadBucket") + .hasKind(CLIENT) + .hasStatus(StatusData.error()) + .hasException(caught) + .hasNoParent() + .hasAttributesSatisfyingExactly( + equalTo(URL_FULL, "https://s3.amazonaws.com"), + equalTo(HTTP_REQUEST_METHOD, "HEAD"), + equalTo(SERVER_ADDRESS, "s3.amazonaws.com"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Amazon S3"), + equalTo(RPC_METHOD, "HeadBucket"), + equalTo(stringKey("aws.endpoint"), "https://s3.amazonaws.com"), + equalTo(stringKey("aws.agent"), "java-aws-sdk"), + equalTo(stringKey("aws.bucket.name"), "someBucket"), + equalTo(ERROR_TYPE, IllegalStateException.class.getName())))); + } + + @Test + void testCallingGeneratePresignedUrlDoesNotLeakContext() { + SignerFactory.registerSigner("noop", NoOpSigner.class); + AmazonS3 client = + AmazonS3ClientBuilder.standard() + .withRegion(Regions.US_EAST_1) + .withClientConfiguration(new ClientConfiguration().withSignerOverride("noop")) + .build(); + + client.generatePresignedUrl("someBucket", "someKey", new Date()); + + assertThat(Span.current().getSpanContext().isValid()).isFalse(); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsClientTest.java new file mode 100644 index 000000000000..22fa16628403 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.sns.AmazonSNSClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractSnsClientTest; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class SnsClientTest extends AbstractSnsClientTest { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonSNSClientBuilder configureClient(AmazonSNSClientBuilder clientBuilder) { + return clientBuilder; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/instrumentor/Aws1ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/instrumentor/Aws1ClientTest.groovy deleted file mode 100644 index 24a138e80993..000000000000 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/instrumentor/Aws1ClientTest.groovy +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.awssdk.v1_11.instrumentor - -import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractAws1ClientTest -import io.opentelemetry.instrumentation.test.LibraryTestTrait - -class Aws1ClientTest extends AbstractAws1ClientTest implements LibraryTestTrait { - @Override - def configureClient(def client) { - return client - } -} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/DynamoDbClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/DynamoDbClientTest.java new file mode 100644 index 000000000000..9455ef45c01e --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/DynamoDbClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractDynamoDbClientTest; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class DynamoDbClientTest extends AbstractDynamoDbClientTest { + @RegisterExtension + static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonDynamoDBClientBuilder configureClient(AmazonDynamoDBClientBuilder client) { + return client; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Ec2ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Ec2ClientTest.java new file mode 100644 index 000000000000..6c4b6cacaab5 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Ec2ClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractEc2ClientTest; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class Ec2ClientTest extends AbstractEc2ClientTest { + @RegisterExtension + static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonEC2ClientBuilder configureClient(AmazonEC2ClientBuilder clientBuilder) { + return clientBuilder; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/KinesisClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/KinesisClientTest.java new file mode 100644 index 000000000000..696ae7997787 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/KinesisClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.kinesis.AmazonKinesisClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractKinesisClientTest; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class KinesisClientTest extends AbstractKinesisClientTest { + @RegisterExtension + static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonKinesisClientBuilder configureClient(AmazonKinesisClientBuilder clientBuilder) { + return clientBuilder; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RdsClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RdsClientTest.java new file mode 100644 index 000000000000..07dbab293b00 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RdsClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.rds.AmazonRDSClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractRdsClientTest; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class RdsClientTest extends AbstractRdsClientTest { + @RegisterExtension + static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonRDSClientBuilder configureClient(AmazonRDSClientBuilder client) { + return client; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java new file mode 100644 index 000000000000..d16b91df6725 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/S3ClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractS3ClientTest; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class S3ClientTest extends AbstractS3ClientTest { + @RegisterExtension + static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonS3ClientBuilder configureClient(AmazonS3ClientBuilder client) { + return client; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsClientTest.java new file mode 100644 index 000000000000..54227249a9ec --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/SnsClientTest.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.sns.AmazonSNSClientBuilder; +import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractSnsClientTest; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class SnsClientTest extends AbstractSnsClientTest { + @RegisterExtension + static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonSNSClientBuilder configureClient(AmazonSNSClientBuilder clientBuilder) { + return clientBuilder; + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy deleted file mode 100644 index 3fa3506617f6..000000000000 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.awssdk.v1_11 - -import io.opentelemetry.instrumentation.test.LibraryTestTrait - -class Aws1ClientTest extends AbstractAws1ClientTest implements LibraryTestTrait { - @Override - def configureClient(def client) { - client.withRequestHandlers( - AwsSdkTelemetry.builder(getOpenTelemetry()) - .setCaptureExperimentalSpanAttributes(true) - .build() - .newRequestHandler()) - } -} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/DynamoDbClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/DynamoDbClientTest.java new file mode 100644 index 000000000000..697f0e98c6eb --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/DynamoDbClientTest.java @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class DynamoDbClientTest extends AbstractDynamoDbClientTest { + @RegisterExtension + private static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonDynamoDBClientBuilder configureClient(AmazonDynamoDBClientBuilder clientBuilder) { + return clientBuilder.withRequestHandlers( + AwsSdkTelemetry.builder(testing().getOpenTelemetry()) + .setCaptureExperimentalSpanAttributes(true) + .build() + .newRequestHandler()); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/Ec2ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/Ec2ClientTest.java new file mode 100644 index 000000000000..bccd1a4d2eb6 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/Ec2ClientTest.java @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class Ec2ClientTest extends AbstractEc2ClientTest { + @RegisterExtension + private static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonEC2ClientBuilder configureClient(AmazonEC2ClientBuilder clientBuilder) { + return clientBuilder.withRequestHandlers( + AwsSdkTelemetry.builder(testing().getOpenTelemetry()) + .setCaptureExperimentalSpanAttributes(true) + .build() + .newRequestHandler()); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/KinesisClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/KinesisClientTest.java new file mode 100644 index 000000000000..5837d70d2cb3 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/KinesisClientTest.java @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.kinesis.AmazonKinesisClientBuilder; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class KinesisClientTest extends AbstractKinesisClientTest { + @RegisterExtension + private static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonKinesisClientBuilder configureClient(AmazonKinesisClientBuilder clientBuilder) { + return clientBuilder.withRequestHandlers( + AwsSdkTelemetry.builder(testing().getOpenTelemetry()) + .setCaptureExperimentalSpanAttributes(true) + .build() + .newRequestHandler()); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/RdsClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/RdsClientTest.java new file mode 100644 index 000000000000..d4b86cdf1e93 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/RdsClientTest.java @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.rds.AmazonRDSClientBuilder; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class RdsClientTest extends AbstractRdsClientTest { + @RegisterExtension + private static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonRDSClientBuilder configureClient(AmazonRDSClientBuilder clientBuilder) { + return clientBuilder.withRequestHandlers( + AwsSdkTelemetry.builder(testing().getOpenTelemetry()) + .setCaptureExperimentalSpanAttributes(true) + .build() + .newRequestHandler()); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/S3ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/S3ClientTest.java new file mode 100644 index 000000000000..f14c5d04584b --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/S3ClientTest.java @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class S3ClientTest extends AbstractS3ClientTest { + @RegisterExtension + private static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonS3ClientBuilder configureClient(AmazonS3ClientBuilder clientBuilder) { + return clientBuilder.withRequestHandlers( + AwsSdkTelemetry.builder(testing().getOpenTelemetry()) + .setCaptureExperimentalSpanAttributes(true) + .build() + .newRequestHandler()); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/SnsClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/SnsClientTest.java new file mode 100644 index 000000000000..fa6b765e8a59 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v1_11/SnsClientTest.java @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.sns.AmazonSNSClientBuilder; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class SnsClientTest extends AbstractSnsClientTest { + @RegisterExtension + private static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + protected InstrumentationExtension testing() { + return testing; + } + + @Override + public AmazonSNSClientBuilder configureClient(AmazonSNSClientBuilder clientBuilder) { + return clientBuilder.withRequestHandlers( + AwsSdkTelemetry.builder(testing().getOpenTelemetry()) + .setCaptureExperimentalSpanAttributes(true) + .build() + .newRequestHandler()); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/build.gradle.kts b/instrumentation/aws-sdk/aws-sdk-1.11/testing/build.gradle.kts index b15ba0bd52a3..545f5dffce2c 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/build.gradle.kts +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/build.gradle.kts @@ -20,7 +20,5 @@ dependencies { implementation("com.google.guava:guava") - implementation("org.apache.groovy:groovy") implementation("io.opentelemetry:opentelemetry-api") - implementation("org.spockframework:spock-core") } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy deleted file mode 100644 index c4c5bbb9f47a..000000000000 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.awssdk.v1_11 - -import com.amazonaws.AmazonClientException -import com.amazonaws.ClientConfiguration -import com.amazonaws.SDKGlobalConfiguration -import com.amazonaws.SdkClientException -import com.amazonaws.auth.AWSCredentialsProviderChain -import com.amazonaws.auth.AWSStaticCredentialsProvider -import com.amazonaws.auth.AnonymousAWSCredentials -import com.amazonaws.auth.EnvironmentVariableCredentialsProvider -import com.amazonaws.auth.InstanceProfileCredentialsProvider -import com.amazonaws.auth.SystemPropertiesCredentialsProvider -import com.amazonaws.auth.profile.ProfileCredentialsProvider -import com.amazonaws.client.builder.AwsClientBuilder -import com.amazonaws.retry.PredefinedRetryPolicies -import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder -import com.amazonaws.services.dynamodbv2.model.CreateTableRequest -import com.amazonaws.services.ec2.AmazonEC2ClientBuilder -import com.amazonaws.services.kinesis.AmazonKinesisClientBuilder -import com.amazonaws.services.kinesis.model.DeleteStreamRequest -import com.amazonaws.services.rds.AmazonRDSClientBuilder -import com.amazonaws.services.rds.model.DeleteOptionGroupRequest -import com.amazonaws.services.s3.AmazonS3Client -import com.amazonaws.services.s3.AmazonS3ClientBuilder -import com.amazonaws.services.sns.AmazonSNSClientBuilder -import com.amazonaws.services.sns.model.PublishRequest -import io.opentelemetry.api.trace.Span -import io.opentelemetry.instrumentation.test.InstrumentationSpecification -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes -import io.opentelemetry.semconv.incubating.AwsIncubatingAttributes -import io.opentelemetry.semconv.ServerAttributes -import io.opentelemetry.semconv.ErrorAttributes -import io.opentelemetry.semconv.HttpAttributes -import io.opentelemetry.semconv.NetworkAttributes -import io.opentelemetry.semconv.UrlAttributes -import io.opentelemetry.testing.internal.armeria.common.HttpResponse -import io.opentelemetry.testing.internal.armeria.common.HttpStatus -import io.opentelemetry.testing.internal.armeria.common.MediaType -import io.opentelemetry.testing.internal.armeria.testing.junit5.server.mock.MockWebServerExtension -import spock.lang.Shared -import spock.lang.Unroll - -import java.time.Duration - -import static io.opentelemetry.api.trace.SpanKind.CLIENT -import static io.opentelemetry.api.trace.SpanKind.PRODUCER -import static io.opentelemetry.api.trace.StatusCode.ERROR -import static io.opentelemetry.instrumentation.test.utils.PortUtils.UNUSABLE_PORT - -abstract class AbstractAws1ClientTest extends InstrumentationSpecification { - - abstract T configureClient(T client) - - static final CREDENTIALS_PROVIDER_CHAIN = new AWSCredentialsProviderChain( - new EnvironmentVariableCredentialsProvider(), - new SystemPropertiesCredentialsProvider(), - new ProfileCredentialsProvider(), - new InstanceProfileCredentialsProvider()) - - @Shared - def credentialsProvider = new AWSStaticCredentialsProvider(new AnonymousAWSCredentials()) - - @Shared - def server = new MockWebServerExtension() - - @Shared - def endpoint - - def setupSpec() { - System.setProperty(SDKGlobalConfiguration.ACCESS_KEY_SYSTEM_PROPERTY, "my-access-key") - System.setProperty(SDKGlobalConfiguration.SECRET_KEY_SYSTEM_PROPERTY, "my-secret-key") - server.start() - endpoint = new AwsClientBuilder.EndpointConfiguration("${server.httpUri()}", "us-west-2") - } - - def cleanupSpec() { - System.clearProperty(SDKGlobalConfiguration.ACCESS_KEY_SYSTEM_PROPERTY) - System.clearProperty(SDKGlobalConfiguration.SECRET_KEY_SYSTEM_PROPERTY) - server.stop() - } - - def setup() { - server.beforeTestExecution(null) - } - - @Unroll - def "send #operation request with mocked response"() { - setup: - server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, body)) - - when: - def client = configureClient(clientBuilder).withEndpointConfiguration(endpoint).withCredentials(credentialsProvider).build() - def response = call.call(client) - - then: - response != null - - client.requestHandler2s != null - client.requestHandler2s.find { it.getClass().getSimpleName() == "TracingRequestHandler" } != null - - def hasRequestId = service in ["SNS", "RDS", "EC2"] - - assertTraces(1) { - trace(0, 1) { - span(0) { - name "$service.$operation" - kind operation == "SendMessage" ? PRODUCER : CLIENT - hasNoParent() - attributes { - "$UrlAttributes.URL_FULL" "${server.httpUri()}" - "$HttpAttributes.HTTP_REQUEST_METHOD" "$method" - "$HttpAttributes.HTTP_RESPONSE_STATUS_CODE" 200 - "$NetworkAttributes.NETWORK_PROTOCOL_VERSION" "1.1" - "$ServerAttributes.SERVER_PORT" server.httpPort() - "$ServerAttributes.SERVER_ADDRESS" "127.0.0.1" - "$RpcIncubatingAttributes.RPC_SYSTEM" "aws-api" - "$RpcIncubatingAttributes.RPC_SERVICE" { it.contains(service) } - "$RpcIncubatingAttributes.RPC_METHOD" "${operation}" - "aws.endpoint" "${server.httpUri()}" - "aws.agent" "java-aws-sdk" - "$AwsIncubatingAttributes.AWS_REQUEST_ID" hasRequestId ? String : null - for (def addedTag : additionalAttributes) { - "$addedTag.key" "$addedTag.value" - } - } - } - } - } - - def request = server.takeRequest() - request.request().headers().get("X-Amzn-Trace-Id") != null - request.request().headers().get("traceparent") == null - - where: - service | operation | method | path | clientBuilder | call | additionalAttributes | body - "S3" | "CreateBucket" | "PUT" | "/testbucket/" | AmazonS3ClientBuilder.standard().withPathStyleAccessEnabled(true) | { c -> c.createBucket("testbucket") } | ["aws.bucket.name": "testbucket"] | "" - "S3" | "GetObject" | "GET" | "/someBucket/someKey" | AmazonS3ClientBuilder.standard().withPathStyleAccessEnabled(true) | { c -> c.getObject("someBucket", "someKey") } | ["aws.bucket.name": "someBucket"] | "" - "DynamoDBv2" | "CreateTable" | "POST" | "/" | AmazonDynamoDBClientBuilder.standard() | { c -> c.createTable(new CreateTableRequest("sometable", null)) } | ["aws.table.name": "sometable"] | "" - "Kinesis" | "DeleteStream" | "POST" | "/" | AmazonKinesisClientBuilder.standard() | { c -> c.deleteStream(new DeleteStreamRequest().withStreamName("somestream")) } | ["aws.stream.name": "somestream"] | "" - // Some users may implicitly subclass the request object to mimic a fluent style - "Kinesis" | "DeleteStream" | "POST" | "/" | AmazonKinesisClientBuilder.standard() | { c -> - c.deleteStream(new DeleteStreamRequest() { - { - withStreamName("somestream") - } - }) - } | ["aws.stream.name": "somestream"] | "" - "EC2" | "AllocateAddress" | "POST" | "/" | AmazonEC2ClientBuilder.standard() | { c -> c.allocateAddress() } | [:] | """ - - 59dbff89-35bd-4eac-99ed-be587EXAMPLE - 192.0.2.1 - standard - - """ - "RDS" | "DeleteOptionGroup" | "POST" | "/" | AmazonRDSClientBuilder.standard() | { c -> c.deleteOptionGroup(new DeleteOptionGroupRequest()) } | [:] | """ - - - 0ac9cda2-bbf4-11d3-f92b-31fa5e8dbc99 - - - """ - "SNS" | "Publish" | "POST" | "d74b8436-ae13-5ab4-a9ff-ce54dfea72a0" | AmazonSNSClientBuilder.standard() | { c -> c.publish(new PublishRequest().withMessage("somemessage").withTopicArn("somearn")) } | ["$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME": "somearn"] | """ - - - 567910cd-659e-55d4-8ccb-5aaf14679dc0 - - - d74b8436-ae13-5ab4-a9ff-ce54dfea72a0 - - - """ - "SNS" | "Publish" | "POST" | "d74b8436-ae13-5ab4-a9ff-ce54dfea72a0" | AmazonSNSClientBuilder.standard() | { c -> c.publish(new PublishRequest().withMessage("somemessage").withTargetArn("somearn")) } | ["$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME": "somearn"] | """ - - - 567910cd-659e-55d4-8ccb-5aaf14679dc0 - - - d74b8436-ae13-5ab4-a9ff-ce54dfea72a0 - - - """ - } - - def "send #operation request to closed port"() { - setup: - server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, body)) - - when: - def client = configureClient(clientBuilder) - .withCredentials(CREDENTIALS_PROVIDER_CHAIN) - .withClientConfiguration(new ClientConfiguration().withRetryPolicy(PredefinedRetryPolicies.getDefaultRetryPolicyWithCustomMaxRetries(0))) - .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://127.0.0.1:${UNUSABLE_PORT}", "us-east-1")) - .build() - call.call(client) - - then: - thrown SdkClientException - - assertTraces(1) { - trace(0, 1) { - span(0) { - name "$service.$operation" - kind CLIENT - status ERROR - errorEvent SdkClientException, ~/Unable to execute HTTP request/ - hasNoParent() - attributes { - "$UrlAttributes.URL_FULL" "http://127.0.0.1:${UNUSABLE_PORT}" - "$HttpAttributes.HTTP_REQUEST_METHOD" "$method" - "$ServerAttributes.SERVER_ADDRESS" "127.0.0.1" - "$ServerAttributes.SERVER_PORT" 61 - "$RpcIncubatingAttributes.RPC_SYSTEM" "aws-api" - "$RpcIncubatingAttributes.RPC_SERVICE" { it.contains(service) } - "$RpcIncubatingAttributes.RPC_METHOD" "${operation}" - "aws.endpoint" "http://127.0.0.1:${UNUSABLE_PORT}" - "aws.agent" "java-aws-sdk" - for (def addedTag : additionalAttributes) { - "$addedTag.key" "$addedTag.value" - } - "$ErrorAttributes.ERROR_TYPE" SdkClientException.name - } - } - } - } - - where: - service | operation | method | url | call | additionalAttributes | body | clientBuilder - "S3" | "GetObject" | "GET" | "someBucket/someKey" | { c -> c.getObject("someBucket", "someKey") } | ["aws.bucket.name": "someBucket"] | "" | AmazonS3ClientBuilder.standard() - } - - // TODO(anuraaga): Add events for retries. - def "timeout and retry errors not captured"() { - setup: - // One retry so two requests. - server.enqueue(HttpResponse.delayed(HttpResponse.of(HttpStatus.OK), Duration.ofMillis(5000))) - server.enqueue(HttpResponse.delayed(HttpResponse.of(HttpStatus.OK), Duration.ofMillis(5000))) - AmazonS3Client client = configureClient(AmazonS3ClientBuilder.standard()) - .withClientConfiguration(new ClientConfiguration() - .withRequestTimeout(50 /* ms */) - .withRetryPolicy(PredefinedRetryPolicies.getDefaultRetryPolicyWithCustomMaxRetries(1))) - .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("${server.httpUri()}", "us-east-1")) - .build() - - when: - client.getObject("someBucket", "someKey") - - then: - !Span.current().getSpanContext().isValid() - thrown AmazonClientException - - assertTraces(1) { - trace(0, 1) { - span(0) { - name "S3.GetObject" - kind CLIENT - status ERROR - try { - errorEvent AmazonClientException, ~/Unable to execute HTTP request/ - } catch (AssertionError e) { - errorEvent SdkClientException, "Unable to execute HTTP request: Request did not complete before the request timeout configuration." - } - hasNoParent() - attributes { - "$UrlAttributes.URL_FULL" "${server.httpUri()}" - "$HttpAttributes.HTTP_REQUEST_METHOD" "GET" - "$ServerAttributes.SERVER_PORT" server.httpPort() - "$ServerAttributes.SERVER_ADDRESS" "127.0.0.1" - "$RpcIncubatingAttributes.RPC_SYSTEM" "aws-api" - "$RpcIncubatingAttributes.RPC_SERVICE" "Amazon S3" - "$RpcIncubatingAttributes.RPC_METHOD" "GetObject" - "aws.endpoint" "${server.httpUri()}" - "aws.agent" "java-aws-sdk" - "aws.bucket.name" "someBucket" - "$ErrorAttributes.ERROR_TYPE" {it == SdkClientException.name || it == AmazonClientException.name } - } - } - } - } - } -} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractBaseAwsClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractBaseAwsClientTest.java new file mode 100644 index 000000000000..c76bffa37562 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractBaseAwsClientTest.java @@ -0,0 +1,132 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.api.trace.SpanKind.CLIENT; +import static io.opentelemetry.api.trace.SpanKind.PRODUCER; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; +import static java.util.Arrays.asList; +import static org.assertj.core.api.Assertions.assertThat; + +import com.amazonaws.AmazonWebServiceClient; +import com.amazonaws.SDKGlobalConfiguration; +import com.amazonaws.auth.AWSStaticCredentialsProvider; +import com.amazonaws.auth.AnonymousAWSCredentials; +import com.amazonaws.client.builder.AwsClientBuilder; +import com.amazonaws.handlers.RequestHandler2; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; +import io.opentelemetry.testing.internal.armeria.testing.junit5.server.mock.MockWebServerExtension; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; + +public abstract class AbstractBaseAwsClientTest { + protected abstract InstrumentationExtension testing(); + + protected abstract boolean hasRequestId(); + + protected static MockWebServerExtension server = new MockWebServerExtension(); + protected static AwsClientBuilder.EndpointConfiguration endpoint; + protected static final AWSStaticCredentialsProvider credentialsProvider = + new AWSStaticCredentialsProvider(new AnonymousAWSCredentials()); + + @BeforeAll + static void setUp() { + System.setProperty(SDKGlobalConfiguration.ACCESS_KEY_SYSTEM_PROPERTY, "my-access-key"); + System.setProperty(SDKGlobalConfiguration.SECRET_KEY_SYSTEM_PROPERTY, "my-secret-key"); + server.start(); + endpoint = new AwsClientBuilder.EndpointConfiguration(server.httpUri().toString(), "us-west-2"); + } + + @BeforeEach + void reset() { + server.beforeTestExecution(null); + } + + @AfterAll + static void cleanUp() { + System.clearProperty(SDKGlobalConfiguration.ACCESS_KEY_SYSTEM_PROPERTY); + System.clearProperty(SDKGlobalConfiguration.SECRET_KEY_SYSTEM_PROPERTY); + server.stop(); + } + + public void assertRequestWithMockedResponse( + Object response, + Object client, + String service, + String operation, + String method, + Map additionalAttributes) + throws Exception { + + assertThat(response).isNotNull(); + + List requestHandler2s = extractRequestHandlers(client); + assertThat(requestHandler2s).isNotNull(); + assertThat( + requestHandler2s.stream() + .filter(h -> "TracingRequestHandler".equals(h.getClass().getSimpleName()))) + .isNotNull(); + + testing() + .waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> { + List attributes = + new ArrayList<>( + asList( + equalTo(URL_FULL, server.httpUri().toString()), + equalTo(HTTP_REQUEST_METHOD, method), + equalTo(HTTP_RESPONSE_STATUS_CODE, 200), + equalTo(NETWORK_PROTOCOL_VERSION, "1.1"), + equalTo(SERVER_PORT, server.httpPort()), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(RPC_SYSTEM, "aws-api"), + satisfies(RPC_SERVICE, v -> v.contains(service)), + equalTo(RPC_METHOD, operation), + equalTo(stringKey("aws.endpoint"), endpoint.getServiceEndpoint()), + equalTo(stringKey("aws.agent"), "java-aws-sdk"))); + + if (hasRequestId()) { + attributes.add( + satisfies( + stringKey("aws.request_id"), v -> v.isInstanceOf(String.class))); + } + + additionalAttributes.forEach( + (k, v) -> attributes.add(equalTo(stringKey(k), v))); + + span.hasName(service + "." + operation) + .hasKind(operation.equals("SendMessage") ? PRODUCER : CLIENT) + .hasNoParent() + .hasAttributesSatisfyingExactly(attributes); + })); + } + + @SuppressWarnings("unchecked") + protected List extractRequestHandlers(Object client) throws Exception { + Field requestHandler2sField = AmazonWebServiceClient.class.getDeclaredField("requestHandler2s"); + requestHandler2sField.setAccessible(true); + return (List) requestHandler2sField.get(client); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractDynamoDbClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractDynamoDbClientTest.java new file mode 100644 index 000000000000..ba62420ae920 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractDynamoDbClientTest.java @@ -0,0 +1,46 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; +import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; +import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; +import com.google.common.collect.ImmutableMap; +import io.opentelemetry.testing.internal.armeria.common.HttpResponse; +import io.opentelemetry.testing.internal.armeria.common.HttpStatus; +import io.opentelemetry.testing.internal.armeria.common.MediaType; +import org.junit.jupiter.api.Test; + +public abstract class AbstractDynamoDbClientTest extends AbstractBaseAwsClientTest { + + public abstract AmazonDynamoDBClientBuilder configureClient(AmazonDynamoDBClientBuilder client); + + @Override + protected boolean hasRequestId() { + return false; + } + + @Test + public void sendRequestWithMockedResponse() throws Exception { + AmazonDynamoDBClientBuilder clientBuilder = AmazonDynamoDBClientBuilder.standard(); + AmazonDynamoDB client = + configureClient(clientBuilder) + .withEndpointConfiguration(endpoint) + .withCredentials(credentialsProvider) + .build(); + + server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, "")); + + Object response = client.createTable(new CreateTableRequest("sometable", null)); + assertRequestWithMockedResponse( + response, + client, + "DynamoDBv2", + "CreateTable", + "POST", + ImmutableMap.of("aws.table.name", "sometable")); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractEc2ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractEc2ClientTest.java new file mode 100644 index 000000000000..7ba705fa20ec --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractEc2ClientTest.java @@ -0,0 +1,46 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.ec2.AmazonEC2; +import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; +import io.opentelemetry.testing.internal.armeria.common.HttpResponse; +import io.opentelemetry.testing.internal.armeria.common.HttpStatus; +import io.opentelemetry.testing.internal.armeria.common.MediaType; +import java.util.Collections; +import org.junit.jupiter.api.Test; + +public abstract class AbstractEc2ClientTest extends AbstractBaseAwsClientTest { + + public abstract AmazonEC2ClientBuilder configureClient(AmazonEC2ClientBuilder client); + + @Override + protected boolean hasRequestId() { + return true; + } + + @Test + public void sendRequestWithMockedResponse() throws Exception { + AmazonEC2ClientBuilder clientBuilder = AmazonEC2ClientBuilder.standard(); + AmazonEC2 client = + configureClient(clientBuilder) + .withEndpointConfiguration(endpoint) + .withCredentials(credentialsProvider) + .build(); + + String body = + "" + + " 59dbff89-35bd-4eac-99ed-be587EXAMPLE" + + " 192.0.2.1" + + " standard" + + ""; + server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, body)); + + Object response = client.allocateAddress(); + assertRequestWithMockedResponse( + response, client, "EC2", "AllocateAddress", "POST", Collections.emptyMap()); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractKinesisClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractKinesisClientTest.java new file mode 100644 index 000000000000..372780343fc1 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractKinesisClientTest.java @@ -0,0 +1,69 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.kinesis.AmazonKinesis; +import com.amazonaws.services.kinesis.AmazonKinesisClientBuilder; +import com.amazonaws.services.kinesis.model.DeleteStreamRequest; +import com.google.common.collect.ImmutableMap; +import io.opentelemetry.testing.internal.armeria.common.HttpResponse; +import io.opentelemetry.testing.internal.armeria.common.HttpStatus; +import io.opentelemetry.testing.internal.armeria.common.MediaType; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public abstract class AbstractKinesisClientTest extends AbstractBaseAwsClientTest { + + public abstract AmazonKinesisClientBuilder configureClient(AmazonKinesisClientBuilder client); + + @Override + protected boolean hasRequestId() { + return false; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testSendRequestWithMockedResponse( + String operation, Function call) throws Exception { + AmazonKinesisClientBuilder clientBuilder = AmazonKinesisClientBuilder.standard(); + + AmazonKinesis client = + configureClient(clientBuilder) + .withEndpointConfiguration(endpoint) + .withCredentials(credentialsProvider) + .build(); + + server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, "")); + + Map additionalAttributes = ImmutableMap.of("aws.stream.name", "somestream"); + Object response = call.apply(client); + assertRequestWithMockedResponse( + response, client, "Kinesis", operation, "POST", additionalAttributes); + } + + private static Stream provideArguments() { + return Stream.of( + Arguments.of( + "DeleteStream", + (Function) + c -> c.deleteStream(new DeleteStreamRequest().withStreamName("somestream"))), + // Some users may implicitly subclass the request object to mimic a fluent style + Arguments.of( + "CustomDeleteStream", + (Function) + c -> c.deleteStream(new CustomDeleteStreamRequest("somestream")))); + } + + public static class CustomDeleteStreamRequest extends DeleteStreamRequest { + public CustomDeleteStreamRequest(String streamName) { + withStreamName(streamName); + } + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractRdsClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractRdsClientTest.java new file mode 100644 index 000000000000..040812e57024 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractRdsClientTest.java @@ -0,0 +1,47 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import com.amazonaws.services.rds.AmazonRDS; +import com.amazonaws.services.rds.AmazonRDSClientBuilder; +import com.amazonaws.services.rds.model.DeleteOptionGroupRequest; +import io.opentelemetry.testing.internal.armeria.common.HttpResponse; +import io.opentelemetry.testing.internal.armeria.common.HttpStatus; +import io.opentelemetry.testing.internal.armeria.common.MediaType; +import java.util.Collections; +import org.junit.jupiter.api.Test; + +public abstract class AbstractRdsClientTest extends AbstractBaseAwsClientTest { + + public abstract AmazonRDSClientBuilder configureClient(AmazonRDSClientBuilder client); + + @Override + protected boolean hasRequestId() { + return true; + } + + @Test + public void sendRequestWithMockedResponse() throws Exception { + AmazonRDSClientBuilder clientBuilder = AmazonRDSClientBuilder.standard(); + AmazonRDS client = + configureClient(clientBuilder) + .withEndpointConfiguration(endpoint) + .withCredentials(credentialsProvider) + .build(); + + String body = + "" + + " " + + " 0ac9cda2-bbf4-11d3-f92b-31fa5e8dbc99" + + " " + + ""; + server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, body)); + + Object response = client.deleteOptionGroup(new DeleteOptionGroupRequest()); + assertRequestWithMockedResponse( + response, client, "RDS", "DeleteOptionGroup", "POST", Collections.emptyMap()); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractS3ClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractS3ClientTest.java new file mode 100644 index 000000000000..37333d093464 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractS3ClientTest.java @@ -0,0 +1,182 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.api.trace.SpanKind.CLIENT; +import static io.opentelemetry.instrumentation.test.utils.PortUtils.UNUSABLE_PORT; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; +import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; +import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; +import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE; +import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +import com.amazonaws.AmazonClientException; +import com.amazonaws.ClientConfiguration; +import com.amazonaws.SdkClientException; +import com.amazonaws.client.builder.AwsClientBuilder; +import com.amazonaws.retry.PredefinedRetryPolicies; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import com.google.common.collect.ImmutableMap; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.sdk.trace.data.StatusData; +import io.opentelemetry.testing.internal.armeria.common.HttpResponse; +import io.opentelemetry.testing.internal.armeria.common.HttpStatus; +import io.opentelemetry.testing.internal.armeria.common.MediaType; +import java.time.Duration; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Stream; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public abstract class AbstractS3ClientTest extends AbstractBaseAwsClientTest { + + public abstract AmazonS3ClientBuilder configureClient(AmazonS3ClientBuilder client); + + private final AmazonS3ClientBuilder clientBuilder = + AmazonS3ClientBuilder.standard().withPathStyleAccessEnabled(true); + + @Override + protected boolean hasRequestId() { + return false; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testSendRequestWithMockedResponse( + String operation, + String method, + Function call, + Map additionalAttributes) + throws Exception { + + AmazonS3 client = + configureClient(clientBuilder) + .withEndpointConfiguration(endpoint) + .withCredentials(credentialsProvider) + .build(); + + server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, "")); + + Object response = call.apply(client); + assertRequestWithMockedResponse( + response, client, "S3", operation, method, additionalAttributes); + } + + private static Stream provideArguments() { + return Stream.of( + Arguments.of( + "CreateBucket", + "PUT", + (Function) c -> c.createBucket("testbucket"), + ImmutableMap.of("aws.bucket.name", "testbucket")), + Arguments.of( + "GetObject", + "GET", + (Function) c -> c.getObject("someBucket", "someKey"), + ImmutableMap.of("aws.bucket.name", "someBucket"))); + } + + @Test + public void testSendRequestToClosedPort() { + server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, "")); + + AmazonS3 client = + configureClient(clientBuilder) + .withCredentials(credentialsProvider) + .withClientConfiguration( + new ClientConfiguration() + .withRetryPolicy( + PredefinedRetryPolicies.getDefaultRetryPolicyWithCustomMaxRetries(0))) + .withEndpointConfiguration( + new AwsClientBuilder.EndpointConfiguration( + "http://127.0.0.1:" + UNUSABLE_PORT, "us-east-1")) + .build(); + + Throwable caught = catchThrowable(() -> client.getObject("someBucket", "someKey")); + assertThat(caught).isInstanceOf(SdkClientException.class); + + testing() + .waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName("S3.GetObject") + .hasKind(CLIENT) + .hasStatus(StatusData.error()) + .hasException(caught) + .hasNoParent() + .hasAttributesSatisfyingExactly( + equalTo(URL_FULL, "http://127.0.0.1:" + UNUSABLE_PORT), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, 61), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Amazon S3"), + equalTo(RPC_METHOD, "GetObject"), + equalTo( + stringKey("aws.endpoint"), "http://127.0.0.1:" + UNUSABLE_PORT), + equalTo(stringKey("aws.agent"), "java-aws-sdk"), + equalTo(stringKey("aws.bucket.name"), "someBucket"), + equalTo(ERROR_TYPE, SdkClientException.class.getName())))); + } + + @Test + void testTimeoutAndRetryErrorsNotCaptured() { + server.enqueue(HttpResponse.delayed(HttpResponse.of(HttpStatus.OK), Duration.ofSeconds(5))); + server.enqueue(HttpResponse.delayed(HttpResponse.of(HttpStatus.OK), Duration.ofSeconds(5))); + AmazonS3 client = + configureClient(AmazonS3ClientBuilder.standard()) + .withClientConfiguration( + new ClientConfiguration() + .withRequestTimeout(50 /* ms */) + .withRetryPolicy( + PredefinedRetryPolicies.getDefaultRetryPolicyWithCustomMaxRetries(1))) + .withEndpointConfiguration( + new AwsClientBuilder.EndpointConfiguration( + server.httpUri().toString(), "us-east-1")) + .build(); + + Throwable caught = catchThrowable(() -> client.getObject("someBucket", "someKey")); + assertThat(caught).isInstanceOf(AmazonClientException.class); + assertThat(Span.current().getSpanContext().isValid()).isFalse(); + + testing() + .waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName("S3.GetObject") + .hasKind(CLIENT) + .hasStatus(StatusData.error()) + .hasNoParent() + .hasException( + new SdkClientException( + "Unable to execute HTTP request: Request did not complete before the request timeout configuration.")) + .hasAttributesSatisfyingExactly( + equalTo(URL_FULL, server.httpUri().toString()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_PORT, server.httpPort()), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(RPC_SYSTEM, "aws-api"), + equalTo(RPC_SERVICE, "Amazon S3"), + equalTo(RPC_METHOD, "GetObject"), + equalTo(stringKey("aws.endpoint"), server.httpUri().toString()), + equalTo(stringKey("aws.agent"), "java-aws-sdk"), + equalTo(stringKey("aws.bucket.name"), "someBucket"), + equalTo(ERROR_TYPE, SdkClientException.class.getName())))); + } +} diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSnsClientTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSnsClientTest.java new file mode 100644 index 000000000000..4a728f645c55 --- /dev/null +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSnsClientTest.java @@ -0,0 +1,76 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.awssdk.v1_11; + +import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME; + +import com.amazonaws.services.sns.AmazonSNS; +import com.amazonaws.services.sns.AmazonSNSClientBuilder; +import com.amazonaws.services.sns.model.PublishRequest; +import com.google.common.collect.ImmutableMap; +import io.opentelemetry.testing.internal.armeria.common.HttpResponse; +import io.opentelemetry.testing.internal.armeria.common.HttpStatus; +import io.opentelemetry.testing.internal.armeria.common.MediaType; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public abstract class AbstractSnsClientTest extends AbstractBaseAwsClientTest { + + public abstract AmazonSNSClientBuilder configureClient(AmazonSNSClientBuilder client); + + @Override + protected boolean hasRequestId() { + return true; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testSendRequestWithMockedResponse(Function call) throws Exception { + AmazonSNSClientBuilder clientBuilder = AmazonSNSClientBuilder.standard(); + AmazonSNS client = + configureClient(clientBuilder) + .withEndpointConfiguration(endpoint) + .withCredentials(credentialsProvider) + .build(); + + String body = + "" + + " " + + " 567910cd-659e-55d4-8ccb-5aaf14679dc0" + + " " + + " " + + " d74b8436-ae13-5ab4-a9ff-ce54dfea72a0" + + " " + + ""; + + server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, body)); + + Map additionalAttributes = + ImmutableMap.of(MESSAGING_DESTINATION_NAME.toString(), "somearn"); + + Object response = call.apply(client); + assertRequestWithMockedResponse( + response, client, "SNS", "Publish", "POST", additionalAttributes); + } + + private static Stream provideArguments() { + return Stream.of( + Arguments.of( + (Function) + c -> + c.publish( + new PublishRequest().withMessage("somemessage").withTopicArn("somearn"))), + Arguments.of( + (Function) + c -> + c.publish( + new PublishRequest().withMessage("somemessage").withTargetArn("somearn")))); + } +} From 647fc45914725b4805f63b97c0084f951397c774 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 18:19:50 +0200 Subject: [PATCH 25/40] fix(deps): update dependency io.netty:netty-bom to v4.1.115.final (#12618) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- conventions/src/main/kotlin/otel.java-conventions.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conventions/src/main/kotlin/otel.java-conventions.gradle.kts b/conventions/src/main/kotlin/otel.java-conventions.gradle.kts index 299c5a2981fd..fa08fe38cc7a 100644 --- a/conventions/src/main/kotlin/otel.java-conventions.gradle.kts +++ b/conventions/src/main/kotlin/otel.java-conventions.gradle.kts @@ -143,7 +143,7 @@ abstract class NettyAlignmentRule : ComponentMetadataRule { with(ctx.details) { if (id.group == "io.netty" && id.name != "netty") { if (id.version.startsWith("4.1.")) { - belongsTo("io.netty:netty-bom:4.1.114.Final", false) + belongsTo("io.netty:netty-bom:4.1.115.Final", false) } else if (id.version.startsWith("4.0.")) { belongsTo("io.netty:netty-bom:4.0.56.Final", false) } From 3d5492184fee622a27c170eafa9bea48920890ce Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 13 Nov 2024 00:00:03 +0200 Subject: [PATCH 26/40] Convert rediscala test to scala (#12616) --- .../rediscala-1.8/javaagent/build.gradle.kts | 1 + .../test/groovy/RediscalaClientTest.groovy | 145 -------------- .../rediscala/RediscalaClientTest.scala | 189 ++++++++++++++++++ 3 files changed, 190 insertions(+), 145 deletions(-) delete mode 100644 instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy create mode 100644 instrumentation/rediscala-1.8/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/rediscala/RediscalaClientTest.scala diff --git a/instrumentation/rediscala-1.8/javaagent/build.gradle.kts b/instrumentation/rediscala-1.8/javaagent/build.gradle.kts index 8442cb3dbf1b..f790124dd665 100644 --- a/instrumentation/rediscala-1.8/javaagent/build.gradle.kts +++ b/instrumentation/rediscala-1.8/javaagent/build.gradle.kts @@ -1,5 +1,6 @@ plugins { id("otel.javaagent-instrumentation") + id("otel.scala-conventions") } muzzle { diff --git a/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy b/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy deleted file mode 100644 index e81106cbdf84..000000000000 --- a/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes -import org.testcontainers.containers.GenericContainer -import redis.ByteStringDeserializerDefault -import redis.ByteStringSerializerLowPriority -import redis.RedisClient -import redis.RedisDispatcher -import scala.Option -import scala.concurrent.Await -import scala.concurrent.duration.Duration -import spock.lang.Shared - -import static io.opentelemetry.api.trace.SpanKind.CLIENT -import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable - -class RediscalaClientTest extends AgentInstrumentationSpecification { - - private static GenericContainer redisServer = new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379) - - @Shared - int port - - @Shared - def system - - @Shared - RedisClient redisClient - - def setupSpec() { - redisServer.start() - String host = redisServer.getHost() - port = redisServer.getMappedPort(6379) - // latest has separate artifacts for akka an pekko, currently latestDepTestLibrary picks the - // pekko one - try { - def clazz = Class.forName("akka.actor.ActorSystem") - system = clazz.getMethod("create").invoke(null) - } catch (ClassNotFoundException exception) { - def clazz = Class.forName("org.apache.pekko.actor.ActorSystem") - system = clazz.getMethod("create").invoke(null) - } - // latest RedisClient constructor takes username as argument - if (RedisClient.metaClass.getMetaMethod("username") != null) { - redisClient = new RedisClient(host, - port, - Option.apply(null), - Option.apply(null), - Option.apply(null), - "RedisClient", - Option.apply(null), - system, - new RedisDispatcher("rediscala.rediscala-client-worker-dispatcher")) - } else { - redisClient = new RedisClient(host, - port, - Option.apply(null), - Option.apply(null), - "RedisClient", - Option.apply(null), - system, - new RedisDispatcher("rediscala.rediscala-client-worker-dispatcher")) - } - } - - def cleanupSpec() { - redisServer.stop() - system?.terminate() - } - - def "set command"() { - when: - def value = redisClient.set("foo", - "bar", - Option.apply(null), - Option.apply(null), - false, - false, - new ByteStringSerializerLowPriority.String$()) - - - then: - Await.result(value, Duration.apply("3 second")) == true - assertTraces(1) { - trace(0, 1) { - span(0) { - name "SET" - kind CLIENT - attributes { - "$DbIncubatingAttributes.DB_SYSTEM" "redis" - "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SET" - } - } - } - } - } - - def "get command"() { - when: - def (write, value) = runWithSpan("parent") { - def w = redisClient.set("bar", - "baz", - Option.apply(null), - Option.apply(null), - false, - false, - new ByteStringSerializerLowPriority.String$()) - def v = redisClient.get("bar", new ByteStringDeserializerDefault.String$()) - return new Tuple(w, v) - } - - then: - Await.result(write, Duration.apply("3 second")) == true - Await.result(value, Duration.apply("3 second")) == Option.apply("baz") - assertTraces(1) { - trace(0, 3) { - span(0) { - name "parent" - } - span(1) { - name "SET" - kind CLIENT - childOf span(0) - attributes { - "$DbIncubatingAttributes.DB_SYSTEM" "redis" - "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "SET" - } - } - span(2) { - name "GET" - kind CLIENT - childOf span(0) - attributes { - "$DbIncubatingAttributes.DB_SYSTEM" "redis" - "${maybeStable(DbIncubatingAttributes.DB_OPERATION)}" "GET" - } - } - } - } - } -} diff --git a/instrumentation/rediscala-1.8/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/rediscala/RediscalaClientTest.scala b/instrumentation/rediscala-1.8/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/rediscala/RediscalaClientTest.scala new file mode 100644 index 000000000000..34292a6d60c5 --- /dev/null +++ b/instrumentation/rediscala-1.8/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/rediscala/RediscalaClientTest.scala @@ -0,0 +1,189 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package rediscala + +import io.opentelemetry.api.trace.SpanKind.CLIENT +import io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension +import io.opentelemetry.instrumentation.testing.util.ThrowingSupplier +import io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo +import io.opentelemetry.sdk.testing.assertj.{SpanDataAssert, TraceAssert} +import io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION +import io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM +import io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemIncubatingValues.REDIS +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.{AfterAll, BeforeAll, Test, TestInstance} +import org.junit.jupiter.api.extension.RegisterExtension +import org.testcontainers.containers.GenericContainer +import redis.{RedisClient, RedisDispatcher} + +import java.util.function.Consumer +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, Future} + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class RediscalaClientTest { + + @RegisterExtension val testing = AgentInstrumentationExtension.create + + var system: Object = null + var redisServer: GenericContainer[_] = null + var redisClient: RedisClient = null + + @BeforeAll + def setUp(): Unit = { + redisServer = + new GenericContainer("redis:6.2.3-alpine").withExposedPorts(6379) + redisServer.start() + + val host: String = redisServer.getHost + val port: Integer = redisServer.getMappedPort(6379) + + try { + val clazz = Class.forName("akka.actor.ActorSystem") + system = clazz.getMethod("create").invoke(null) + } catch { + case _: ClassNotFoundException => + val clazz = Class.forName("org.apache.pekko.actor.ActorSystem") + system = clazz.getMethod("create").invoke(null) + } + + try { + // latest RedisClient constructor takes username as argument + classOf[RedisClient].getMethod("username") + redisClient = classOf[RedisClient] + .getConstructors()(0) + .newInstance( + host, + port, + Option.apply(null), + Option.apply(null), + Option.apply(null), + "RedisClient", + Option.apply(null), + system, + RedisDispatcher("rediscala.rediscala-client-worker-dispatcher") + ) + .asInstanceOf[RedisClient] + } catch { + case _: Exception => + redisClient = classOf[RedisClient] + .getConstructors()(0) + .newInstance( + host, + port, + Option.apply(null), + Option.apply(null), + "RedisClient", + Option.apply(null), + system, + RedisDispatcher("rediscala.rediscala-client-worker-dispatcher") + ) + .asInstanceOf[RedisClient] + } + } + + @AfterAll + def tearDown(): Unit = { + if (system != null) { + system.getClass.getMethod("terminate").invoke(system) + } + redisServer.stop() + } + + @Test def testSetCommand(): Unit = { + val value = testing.runWithSpan( + "parent", + new ThrowingSupplier[Future[Boolean], Exception] { + override def get(): Future[Boolean] = { + redisClient.set("foo", "bar") + } + } + ) + + assertThat(Await.result(value, Duration.apply("3 second"))).isTrue + testing.waitAndAssertTraces(new Consumer[TraceAssert] { + override def accept(trace: TraceAssert): Unit = + trace.hasSpansSatisfyingExactly( + new Consumer[SpanDataAssert] { + override def accept(span: SpanDataAssert): Unit = { + span.hasName("parent").hasNoParent + } + }, + new Consumer[SpanDataAssert] { + override def accept(span: SpanDataAssert): Unit = { + span + .hasName("SET") + .hasKind(CLIENT) + .hasParent(trace.getSpan(0)) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM, REDIS), + equalTo(SemconvStabilityUtil.maybeStable(DB_OPERATION), "SET") + ) + } + } + ) + }) + } + + @Test def testGetCommand(): Unit = { + val (write, value) = testing.runWithSpan( + "parent", + new ThrowingSupplier[ + (Future[Boolean], Future[Option[String]]), + Exception + ] { + override def get(): (Future[Boolean], Future[Option[String]]) = { + val write = redisClient.set("bar", "baz") + val value = redisClient.get[String]("bar") + (write, value) + } + } + ) + + assertThat(Await.result(write, Duration.apply("3 second"))).isTrue + assertThat( + Await + .result(value, Duration.apply("3 second")) + .get + ).isEqualTo("baz") + + testing.waitAndAssertTraces(new Consumer[TraceAssert] { + override def accept(trace: TraceAssert): Unit = + trace.hasSpansSatisfyingExactly( + new Consumer[SpanDataAssert] { + override def accept(span: SpanDataAssert): Unit = { + span.hasName("parent").hasNoParent + } + }, + new Consumer[SpanDataAssert] { + override def accept(span: SpanDataAssert): Unit = { + span + .hasName("SET") + .hasKind(CLIENT) + .hasParent(trace.getSpan(0)) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM, REDIS), + equalTo(SemconvStabilityUtil.maybeStable(DB_OPERATION), "SET") + ) + } + }, + new Consumer[SpanDataAssert] { + override def accept(span: SpanDataAssert): Unit = { + span + .hasName("GET") + .hasKind(CLIENT) + .hasParent(trace.getSpan(0)) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM, REDIS), + equalTo(SemconvStabilityUtil.maybeStable(DB_OPERATION), "GET") + ) + } + } + ) + }) + } +} From cd65f9aa883070934f81b9821c91f8c80c409a0f Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Tue, 12 Nov 2024 18:26:13 -0800 Subject: [PATCH 27/40] Update change log for upcoming release (#12607) Co-authored-by: Steve Rao Co-authored-by: Lauri Tulmin --- CHANGELOG.md | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92e019ebd390..bd3b8a5f868b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,57 @@ ## Unreleased +### 🌟 New javaagent instrumentation + +- Ktor 3 instrumentation + ([#12562](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12562)) + +### 🌟 New library instrumentation + +- Ktor 3 instrumentation + ([#12562](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12562)) + +### Migration notes + +- Spring Boot Starter Scheduling instrumentation scope name changed from + `io.opentelemetry.spring-scheduling-3.1` to `io.opentelemetry.spring-boot-autoconfigure` + to reflect the module's name. +- Default flush timeout for aws lambda javaagent instrumentation changed from 1 second + to 10 seconds to match the flush timeout used in the aws lambda library instrumentation. + ([#12576](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12576)) + +### 📈 Enhancements + +- Delegate loading of java package to platform loader + ([#12505](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12505)) +- Set up virtual field transforms before otel sdk is initialized + ([#12444](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12444)) - Update azure-core-tracing-opentelemetry version and improve HTTP suppression to back off - when Azure SDK tracing was disabled. + when Azure SDK tracing is disabled. ([#12489](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12489)) +- Ktor2 http client uses low level instrumentation + ([#12530](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12530)) +- Add logback mdc instrumentation to spring boot starter + ([#12515](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12515)) +- Run class load listener only once + ([#12565](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12565)) +- Remove duplicate byte buddy classes to reduce agent jar file size + ([#12571](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12571)) +- Support additional JVM arg syntax in service name resource detector + ([#12544](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12544)) + +### 🛠️ Bug fixes + +- Fix derby directory connection string parser + ([#12479](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12479)) +- Improve whitespace handling in oracle jdbc url parser + ([#12512](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12512)) +- Fix SpanKey bridging for unbridgeable span + ([#12511](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12511)) +- Fix lettuce instrumentation and tests to pass against latest version + ([#12552](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12552)) +- Fix Kafka initialization occasionally failed due to concurrent injection of OpenTelemetryMetricsReporter + ([#12583](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/12583)) ## Version 2.9.0 (2024-10-17) From 5059f9a0fd4e1a9299bb6b894921c2cb04a0ebfe Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Tue, 12 Nov 2024 18:51:24 -0800 Subject: [PATCH 28/40] Map lettuce 5.1 `db.namespace` to `db.name` (unless using experimental database semconv stability opt-in) (#12609) --- .../lettuce/v5_1/OpenTelemetryTracing.java | 12 ++++++++++++ .../lettuce/v5_1/AbstractLettuceClientTest.java | 9 ++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java index 6fb88f269b5e..3b2e06f3b64e 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java @@ -43,6 +43,8 @@ final class OpenTelemetryTracing implements Tracing { private static final AttributeKey DB_SYSTEM = AttributeKey.stringKey("db.system"); private static final AttributeKey DB_STATEMENT = AttributeKey.stringKey("db.statement"); private static final AttributeKey DB_QUERY_TEXT = AttributeKey.stringKey("db.query.text"); + private static final AttributeKey DB_REDIS_DATABASE_INDEX = + AttributeKey.longKey("db.redis.database_index"); // copied from DbIncubatingAttributes.DbSystemIncubatingValues private static final String REDIS = "redis"; @@ -313,6 +315,16 @@ public synchronized Tracer.Span tag(String key, String value) { argsString = value; return this; } + if (key.equals("db.namespace") && SemconvStability.emitOldDatabaseSemconv()) { + // map backwards into db.redis.database.index + long val = Long.parseLong(value); + if (span != null) { + span.setAttribute(DB_REDIS_DATABASE_INDEX, val); + } else { + spanBuilder.setAttribute(DB_REDIS_DATABASE_INDEX, val); + } + return this; + } if (span != null) { span.setAttribute(key, value); } else { diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java index dff22a6a78e7..56573539a278 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java @@ -7,9 +7,11 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAMESPACE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_REDIS_DATABASE_INDEX; import io.lettuce.core.RedisClient; import io.lettuce.core.api.StatefulRedisConnection; +import io.opentelemetry.instrumentation.api.internal.SemconvStability; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; @@ -80,10 +82,15 @@ private ContainerConnection(StatefulRedisConnection connection, } } + @SuppressWarnings("deprecation") // using deprecated semconv protected static List addExtraAttributes(AttributeAssertion... assertions) { List result = new ArrayList<>(Arrays.asList(assertions)); if (Boolean.getBoolean("testLatestDeps")) { - result.add(equalTo(DB_NAMESPACE, "0")); + if (SemconvStability.emitStableDatabaseSemconv()) { + result.add(equalTo(DB_NAMESPACE, "0")); + } else { + result.add(equalTo(DB_REDIS_DATABASE_INDEX, 0)); + } } return result; } From c5d030b669cb850c67a8781f6647f5aaa7cf9440 Mon Sep 17 00:00:00 2001 From: OpenTelemetry Bot <107717825+opentelemetrybot@users.noreply.github.com> Date: Tue, 12 Nov 2024 21:54:23 -0600 Subject: [PATCH 29/40] Update version to 2.11.0-SNAPSHOT (#12619) --- CHANGELOG.md | 2 ++ .../opentelemetry-instrumentation-annotations.txt | 2 +- .../opentelemetry-instrumentation-api.txt | 2 +- .../opentelemetry-spring-boot-autoconfigure.txt | 2 +- .../opentelemetry-spring-boot-starter.txt | 2 +- examples/distro/build.gradle | 6 +++--- examples/extension/build.gradle | 8 ++++---- version.gradle.kts | 4 ++-- 8 files changed, 15 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd3b8a5f868b..8ab04afa2249 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## Version 2.10.0 (2024-11-13) + ### 🌟 New javaagent instrumentation - Ktor 3 instrumentation diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-annotations.txt b/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-annotations.txt index 84c7ec708367..8ad4d9e30cd4 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-annotations.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-annotations.txt @@ -1,2 +1,2 @@ -Comparing source compatibility of opentelemetry-instrumentation-annotations-2.10.0-SNAPSHOT.jar against opentelemetry-instrumentation-annotations-2.9.0.jar +Comparing source compatibility of opentelemetry-instrumentation-annotations-2.11.0-SNAPSHOT.jar against opentelemetry-instrumentation-annotations-2.9.0.jar No changes. \ No newline at end of file diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-api.txt b/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-api.txt index a7162c2594c7..64fd0a7713f5 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-api.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-api.txt @@ -1,2 +1,2 @@ -Comparing source compatibility of opentelemetry-instrumentation-api-2.10.0-SNAPSHOT.jar against opentelemetry-instrumentation-api-2.9.0.jar +Comparing source compatibility of opentelemetry-instrumentation-api-2.11.0-SNAPSHOT.jar against opentelemetry-instrumentation-api-2.9.0.jar No changes. \ No newline at end of file diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt index cbd60e06475f..516e373c54b8 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt @@ -1,2 +1,2 @@ -Comparing source compatibility of opentelemetry-spring-boot-autoconfigure-2.10.0-SNAPSHOT.jar against opentelemetry-spring-boot-autoconfigure-2.9.0.jar +Comparing source compatibility of opentelemetry-spring-boot-autoconfigure-2.11.0-SNAPSHOT.jar against opentelemetry-spring-boot-autoconfigure-2.9.0.jar No changes. \ No newline at end of file diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-starter.txt b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-starter.txt index 14eda4096401..1d9e19d9e7d1 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-starter.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-starter.txt @@ -1,2 +1,2 @@ -Comparing source compatibility of opentelemetry-spring-boot-starter-2.10.0-SNAPSHOT.jar against opentelemetry-spring-boot-starter-2.9.0.jar +Comparing source compatibility of opentelemetry-spring-boot-starter-2.11.0-SNAPSHOT.jar against opentelemetry-spring-boot-starter-2.9.0.jar No changes. \ No newline at end of file diff --git a/examples/distro/build.gradle b/examples/distro/build.gradle index 919ab23f50b1..a379c0a9fcac 100644 --- a/examples/distro/build.gradle +++ b/examples/distro/build.gradle @@ -14,7 +14,7 @@ buildscript { dependencies { classpath "com.diffplug.spotless:spotless-plugin-gradle:6.25.0" classpath "com.gradleup.shadow:shadow-gradle-plugin:8.3.5" - classpath "io.opentelemetry.instrumentation:gradle-plugins:2.10.0-alpha-SNAPSHOT" + classpath "io.opentelemetry.instrumentation:gradle-plugins:2.11.0-alpha-SNAPSHOT" } } @@ -30,8 +30,8 @@ subprojects { opentelemetrySdk : "1.44.1", // these lines are managed by .github/scripts/update-version.sh - opentelemetryJavaagent : "2.10.0-SNAPSHOT", - opentelemetryJavaagentAlpha: "2.10.0-alpha-SNAPSHOT", + opentelemetryJavaagent : "2.11.0-SNAPSHOT", + opentelemetryJavaagentAlpha: "2.11.0-alpha-SNAPSHOT", autoservice : "1.1.1", junit : "5.11.3" diff --git a/examples/extension/build.gradle b/examples/extension/build.gradle index 610fd82184b7..eca76678b076 100644 --- a/examples/extension/build.gradle +++ b/examples/extension/build.gradle @@ -13,8 +13,8 @@ plugins { id "com.gradleup.shadow" version "8.3.5" id "com.diffplug.spotless" version "6.25.0" - id "io.opentelemetry.instrumentation.muzzle-generation" version "2.10.0-alpha-SNAPSHOT" - id "io.opentelemetry.instrumentation.muzzle-check" version "2.10.0-alpha-SNAPSHOT" + id "io.opentelemetry.instrumentation.muzzle-generation" version "2.11.0-alpha-SNAPSHOT" + id "io.opentelemetry.instrumentation.muzzle-check" version "2.11.0-alpha-SNAPSHOT" } group 'io.opentelemetry.example' @@ -26,8 +26,8 @@ ext { opentelemetrySdk : "1.44.1", // these lines are managed by .github/scripts/update-version.sh - opentelemetryJavaagent : "2.10.0-SNAPSHOT", - opentelemetryJavaagentAlpha: "2.10.0-alpha-SNAPSHOT", + opentelemetryJavaagent : "2.11.0-SNAPSHOT", + opentelemetryJavaagentAlpha: "2.11.0-alpha-SNAPSHOT", junit : "5.11.3" ] diff --git a/version.gradle.kts b/version.gradle.kts index df6008f01d96..966960107c1f 100644 --- a/version.gradle.kts +++ b/version.gradle.kts @@ -1,5 +1,5 @@ -val stableVersion = "2.10.0-SNAPSHOT" -val alphaVersion = "2.10.0-alpha-SNAPSHOT" +val stableVersion = "2.11.0-SNAPSHOT" +val alphaVersion = "2.11.0-alpha-SNAPSHOT" allprojects { if (findProperty("otel.stable") != "true") { From 29bb9a3b89253c0122e8b8ddcf88fbddfefced9c Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 13 Nov 2024 13:14:44 +0200 Subject: [PATCH 30/40] Update api diffs (#12720) --- .../opentelemetry-instrumentation-annotations.txt | 2 +- .../current_vs_latest/opentelemetry-instrumentation-api.txt | 2 +- .../opentelemetry-spring-boot-autoconfigure.txt | 2 +- .../current_vs_latest/opentelemetry-spring-boot-starter.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-annotations.txt b/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-annotations.txt index 8ad4d9e30cd4..79f1f06b721f 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-annotations.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-annotations.txt @@ -1,2 +1,2 @@ -Comparing source compatibility of opentelemetry-instrumentation-annotations-2.11.0-SNAPSHOT.jar against opentelemetry-instrumentation-annotations-2.9.0.jar +Comparing source compatibility of opentelemetry-instrumentation-annotations-2.11.0-SNAPSHOT.jar against opentelemetry-instrumentation-annotations-2.10.0.jar No changes. \ No newline at end of file diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-api.txt b/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-api.txt index 64fd0a7713f5..c09bab2b8f36 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-api.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-instrumentation-api.txt @@ -1,2 +1,2 @@ -Comparing source compatibility of opentelemetry-instrumentation-api-2.11.0-SNAPSHOT.jar against opentelemetry-instrumentation-api-2.9.0.jar +Comparing source compatibility of opentelemetry-instrumentation-api-2.11.0-SNAPSHOT.jar against opentelemetry-instrumentation-api-2.10.0.jar No changes. \ No newline at end of file diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt index 516e373c54b8..409d0e3e7b4f 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt @@ -1,2 +1,2 @@ -Comparing source compatibility of opentelemetry-spring-boot-autoconfigure-2.11.0-SNAPSHOT.jar against opentelemetry-spring-boot-autoconfigure-2.9.0.jar +Comparing source compatibility of opentelemetry-spring-boot-autoconfigure-2.11.0-SNAPSHOT.jar against opentelemetry-spring-boot-autoconfigure-2.10.0.jar No changes. \ No newline at end of file diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-starter.txt b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-starter.txt index 1d9e19d9e7d1..3a320c59c805 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-starter.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-starter.txt @@ -1,2 +1,2 @@ -Comparing source compatibility of opentelemetry-spring-boot-starter-2.11.0-SNAPSHOT.jar against opentelemetry-spring-boot-starter-2.9.0.jar +Comparing source compatibility of opentelemetry-spring-boot-starter-2.11.0-SNAPSHOT.jar against opentelemetry-spring-boot-starter-2.10.0.jar No changes. \ No newline at end of file From 1599aa5c57da6d6e16ee00364a0f03d21b994e72 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 14:52:15 +0200 Subject: [PATCH 31/40] chore(deps): update plugin com.gradle.develocity to v3.18.2 (#12721) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- settings.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 8f897c9cade7..68cd7bff023f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,7 +13,7 @@ pluginManagement { } plugins { - id("com.gradle.develocity") version "3.18.1" + id("com.gradle.develocity") version "3.18.2" id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2" id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" // this can't live in pluginManagement currently due to From ab79c1a8be5452e2974f2ae21be8ab1374ae1a29 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 14:52:34 +0200 Subject: [PATCH 32/40] fix(deps): update dependency com.gradle.develocity:com.gradle.develocity.gradle.plugin to v3.18.2 (#12722) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- conventions/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conventions/build.gradle.kts b/conventions/build.gradle.kts index 8aff20a27861..88afc93817b6 100644 --- a/conventions/build.gradle.kts +++ b/conventions/build.gradle.kts @@ -59,7 +59,7 @@ dependencies { implementation("gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.18") implementation("com.gradleup.shadow:shadow-gradle-plugin:8.3.5") implementation("org.apache.httpcomponents:httpclient:4.5.14") - implementation("com.gradle.develocity:com.gradle.develocity.gradle.plugin:3.18.1") + implementation("com.gradle.develocity:com.gradle.develocity.gradle.plugin:3.18.2") implementation("org.owasp:dependency-check-gradle:11.1.0") implementation("ru.vyarus:gradle-animalsniffer-plugin:1.7.1") implementation("org.spdx:spdx-gradle-plugin:0.8.0") From b55f3fbf0873c39292c23aa4439ab78108fc96a8 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 13 Nov 2024 08:14:29 -0800 Subject: [PATCH 33/40] Fix post release automation (#12725) --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2b112aa68513..e4c97daf23a2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -249,6 +249,8 @@ jobs: run: .github/scripts/use-cla-approved-github-bot.sh - name: Wait for release to be available in maven central + env: + VERSION: ${{ needs.release.outputs.version }} run: | until curl --silent \ --show-error \ From 153cde825ba5d794347271915c06781c8babbffa Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 14 Nov 2024 04:53:44 +0200 Subject: [PATCH 34/40] Group renovate updates for develocity (#12723) --- .github/renovate.json5 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 3b6204be20c0..0a4dea95f86a 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -46,8 +46,8 @@ "groupName": "quarkus packages" }, { - "matchPackagePrefixes": ["com.gradle.enterprise"], - "groupName": "gradle enterprise packages" + "matchPackagePrefixes": ["com.gradle.develocity"], + "groupName": "gradle develocity packages" }, { "matchPackagePrefixes": ["org.eclipse.jetty:"], From e91bb38880809a76baecbb740c64e7cb5d8db429 Mon Sep 17 00:00:00 2001 From: larryluogit Date: Thu, 14 Nov 2024 00:59:39 -0500 Subject: [PATCH 35/40] Update K6 image used by benchmark overhead tests (#12726) --- .../src/test/java/io/opentelemetry/containers/K6Container.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark-overhead/src/test/java/io/opentelemetry/containers/K6Container.java b/benchmark-overhead/src/test/java/io/opentelemetry/containers/K6Container.java index 7f6994d1a5d7..419c5e9b91b7 100644 --- a/benchmark-overhead/src/test/java/io/opentelemetry/containers/K6Container.java +++ b/benchmark-overhead/src/test/java/io/opentelemetry/containers/K6Container.java @@ -35,7 +35,7 @@ public K6Container( public GenericContainer build() { String k6OutputFile = namingConventions.container.k6Results(agent); - return new GenericContainer<>(DockerImageName.parse("loadimpact/k6")) + return new GenericContainer<>(DockerImageName.parse("grafana/k6")) .withNetwork(network) .withNetworkAliases("k6") .withLogConsumer(new Slf4jLogConsumer(logger)) From 15e611e2bb84ef1e4124af2b28b576a70592f833 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 14 Nov 2024 08:00:56 +0200 Subject: [PATCH 36/40] Log4j2: add option to fill code attributes (#12592) --- .../log4j-appender-2.17/javaagent/README.md | 15 ++- .../javaagent/build.gradle.kts | 5 +- .../v2_17/Log4jAppenderInstrumentation.java | 7 +- .../log4j/appender/v2_17/Log4jHelper.java | 60 +++++++++- .../log4j/appender/v2_17/Log4j2Test.java | 63 ++++++---- .../appender/v2_17/Slf4jToLog4jTest.java | 37 ++++-- .../log4j-appender-2.17/library/README.md | 3 + .../library/build.gradle.kts | 1 + .../appender/v2_17/LogEventToReplay.java | 6 +- .../appender/v2_17/OpenTelemetryAppender.java | 25 +++- .../v2_17/internal/LogEventMapper.java | 31 ++++- .../AbstractOpenTelemetryAppenderTest.java | 108 +++++++++++------- .../LogReplayOpenTelemetryAppenderTest.java | 32 ++++-- .../v2_17/internal/LogEventMapperTest.java | 15 +-- .../library/src/test/resources/log4j2.xml | 2 +- 15 files changed, 300 insertions(+), 110 deletions(-) diff --git a/instrumentation/log4j/log4j-appender-2.17/javaagent/README.md b/instrumentation/log4j/log4j-appender-2.17/javaagent/README.md index a78c4d9c395e..e3bf213d9498 100644 --- a/instrumentation/log4j/log4j-appender-2.17/javaagent/README.md +++ b/instrumentation/log4j/log4j-appender-2.17/javaagent/README.md @@ -1,8 +1,11 @@ # Settings for the Log4j Appender instrumentation -| System property | Type | Default | Description | -|-----------------------------------------------------------------------------------| ------- | ------- |-----------------------------------------------------------------------------------------------------------------------| -| `otel.instrumentation.log4j-appender.experimental-log-attributes` | Boolean | `false` | Enable the capture of experimental log attributes `thread.name` and `thread.id`. | -| `otel.instrumentation.log4j-appender.experimental.capture-map-message-attributes` | Boolean | `false` | Enable the capture of `MapMessage` attributes. | -| `otel.instrumentation.log4j-appender.experimental.capture-marker-attribute` | Boolean | `false` | Enable the capture of Log4j markers as attributes. | -| `otel.instrumentation.log4j-appender.experimental.capture-mdc-attributes` | String | | Comma separated list of context data attributes to capture. Use the wildcard character `*` to capture all attributes. | +| System property | Type | Default | Description | +|-----------------------------------------------------------------------------------|---------|---------|-----------------------------------------------------------------------------------------------------------------------------------------------| +| `otel.instrumentation.log4j-appender.experimental-log-attributes` | Boolean | `false` | Enable the capture of experimental log attributes `thread.name` and `thread.id`. | +| `otel.instrumentation.log4j-appender.experimental.capture-code-attributes` | Boolean | `false` | Enable the capture of [source code attributes]. Note that capturing source code attributes at logging sites might add a performance overhead. | +| `otel.instrumentation.log4j-appender.experimental.capture-map-message-attributes` | Boolean | `false` | Enable the capture of `MapMessage` attributes. | +| `otel.instrumentation.log4j-appender.experimental.capture-marker-attribute` | Boolean | `false` | Enable the capture of Log4j markers as attributes. | +| `otel.instrumentation.log4j-appender.experimental.capture-mdc-attributes` | String | | Comma separated list of context data attributes to capture. Use the wildcard character `*` to capture all attributes. | + +[source code attributes]: https://github.com/open-telemetry/semantic-conventions/blob/main/docs/general/attributes.md#source-code-attributes diff --git a/instrumentation/log4j/log4j-appender-2.17/javaagent/build.gradle.kts b/instrumentation/log4j/log4j-appender-2.17/javaagent/build.gradle.kts index 2594f5da0463..15fee0051d3f 100644 --- a/instrumentation/log4j/log4j-appender-2.17/javaagent/build.gradle.kts +++ b/instrumentation/log4j/log4j-appender-2.17/javaagent/build.gradle.kts @@ -14,7 +14,7 @@ muzzle { val testLatestDeps = findProperty("testLatestDeps") as Boolean dependencies { - library("org.apache.logging.log4j:log4j-core:2.17.0") + library("org.apache.logging.log4j:log4j-core:2.0") compileOnly(project(":javaagent-bootstrap")) @@ -56,9 +56,10 @@ tasks { tasks.withType().configureEach { // TODO run tests both with and without experimental log attributes + jvmArgs("-Dotel.instrumentation.log4j-appender.experimental-log-attributes=true") + jvmArgs("-Dotel.instrumentation.log4j-appender.experimental.capture-code-attributes=true") jvmArgs("-Dotel.instrumentation.log4j-appender.experimental.capture-map-message-attributes=true") jvmArgs("-Dotel.instrumentation.log4j-appender.experimental.capture-mdc-attributes=*") - jvmArgs("-Dotel.instrumentation.log4j-appender.experimental-log-attributes=true") jvmArgs("-Dotel.instrumentation.log4j-appender.experimental.capture-marker-attribute=true") } diff --git a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/appender/v2_17/Log4jAppenderInstrumentation.java b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/appender/v2_17/Log4jAppenderInstrumentation.java index 9e89793aef38..4c026b86cd9a 100644 --- a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/appender/v2_17/Log4jAppenderInstrumentation.java +++ b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/appender/v2_17/Log4jAppenderInstrumentation.java @@ -73,6 +73,8 @@ public static void methodEnter( @Advice.This Logger logger, @Advice.Argument(0) Level level, @Advice.Argument(1) Marker marker, + @Advice.Argument(2) String loggerClassName, + @Advice.Argument(3) StackTraceElement location, @Advice.Argument(4) Message message, @Advice.Argument(5) Throwable t, @Advice.Local("otelCallDepth") CallDepth callDepth) { @@ -80,7 +82,7 @@ public static void methodEnter( // logging framework delegates to another callDepth = CallDepth.forClass(LoggerProvider.class); if (callDepth.getAndIncrement() == 0) { - Log4jHelper.capture(logger, level, marker, message, t); + Log4jHelper.capture(logger, loggerClassName, location, level, marker, message, t); } } @@ -96,6 +98,7 @@ public static class LogMessageAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static void methodEnter( @Advice.This Logger logger, + @Advice.Argument(0) String loggerClassName, @Advice.Argument(1) Level level, @Advice.Argument(2) Marker marker, @Advice.Argument(3) Message message, @@ -105,7 +108,7 @@ public static void methodEnter( // logging framework delegates to another callDepth = CallDepth.forClass(LoggerProvider.class); if (callDepth.getAndIncrement() == 0) { - Log4jHelper.capture(logger, level, marker, message, t); + Log4jHelper.capture(logger, loggerClassName, null, level, marker, message, t); } } diff --git a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/appender/v2_17/Log4jHelper.java b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/appender/v2_17/Log4jHelper.java index 9ab4d41abf55..6fc308cc1dd9 100644 --- a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/appender/v2_17/Log4jHelper.java +++ b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/appender/v2_17/Log4jHelper.java @@ -14,6 +14,9 @@ import io.opentelemetry.instrumentation.log4j.appender.v2_17.internal.ContextDataAccessor; import io.opentelemetry.instrumentation.log4j.appender.v2_17.internal.LogEventMapper; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; import java.time.Instant; import java.util.List; import java.util.Map; @@ -28,14 +31,17 @@ public final class Log4jHelper { private static final LogEventMapper> mapper; - private static final boolean captureExperimentalAttributes; + private static final MethodHandle stackTraceMethodHandle = getStackTraceMethodHandle(); static { InstrumentationConfig config = AgentInstrumentationConfig.get(); captureExperimentalAttributes = config.getBoolean("otel.instrumentation.log4j-appender.experimental-log-attributes", false); + boolean captureCodeAttributes = + config.getBoolean( + "otel.instrumentation.log4j-appender.experimental.capture-code-attributes", false); boolean captureMapMessageAttributes = config.getBoolean( "otel.instrumentation.log4j-appender.experimental.capture-map-message-attributes", @@ -51,13 +57,20 @@ public final class Log4jHelper { new LogEventMapper<>( ContextDataAccessorImpl.INSTANCE, captureExperimentalAttributes, + captureCodeAttributes, captureMapMessageAttributes, captureMarkerAttribute, captureContextDataAttributes); } public static void capture( - Logger logger, Level level, Marker marker, Message message, Throwable throwable) { + Logger logger, + String loggerClassName, + StackTraceElement location, + Level level, + Marker marker, + Message message, + Throwable throwable) { String instrumentationName = logger.getName(); if (instrumentationName == null || instrumentationName.isEmpty()) { instrumentationName = "ROOT"; @@ -86,11 +99,54 @@ public static void capture( contextData, threadName, threadId, + () -> location != null ? location : getLocation(loggerClassName), Context.current()); builder.setTimestamp(Instant.now()); builder.emit(); } + private static StackTraceElement getLocation(String loggerClassName) { + if (stackTraceMethodHandle == null) { + return null; + } + + try { + return (StackTraceElement) stackTraceMethodHandle.invoke(loggerClassName); + } catch (Throwable exception) { + return null; + } + } + + private static MethodHandle getStackTraceMethodHandle() { + Class stackTraceClass = null; + try { + // since 2.9.0 + stackTraceClass = Class.forName("org.apache.logging.log4j.util.StackLocatorUtil"); + } catch (ClassNotFoundException exception) { + // ignore + } + if (stackTraceClass == null) { + try { + // before 2.9.0 + stackTraceClass = Class.forName("org.apache.logging.log4j.core.impl.Log4jLogEvent"); + } catch (ClassNotFoundException exception) { + // ignore + } + } + if (stackTraceClass == null) { + return null; + } + try { + return MethodHandles.lookup() + .findStatic( + stackTraceClass, + "calcLocation", + MethodType.methodType(StackTraceElement.class, String.class)); + } catch (Exception exception) { + return null; + } + } + private enum ContextDataAccessorImpl implements ContextDataAccessor> { INSTANCE; diff --git a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Log4j2Test.java b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Log4j2Test.java index 4825a990633e..0ea83e6e95c8 100644 --- a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Log4j2Test.java +++ b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Log4j2Test.java @@ -11,6 +11,12 @@ import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FILEPATH; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FUNCTION; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_LINENO; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_NAMESPACE; +import static io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes.THREAD_ID; +import static io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes.THREAD_NAME; import static java.util.concurrent.TimeUnit.MILLISECONDS; import io.opentelemetry.api.common.AttributeKey; @@ -22,7 +28,6 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; @@ -35,6 +40,7 @@ import org.apache.logging.log4j.ThreadContext; import org.apache.logging.log4j.message.StringMapMessage; import org.apache.logging.log4j.message.StructuredDataMessage; +import org.assertj.core.api.AbstractLongAssert; import org.assertj.core.api.AssertAccess; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -112,11 +118,12 @@ private static void test( List attributeAsserts = new ArrayList<>( Arrays.asList( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, - Thread.currentThread().getName()), - equalTo( - ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()))); + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(CODE_NAMESPACE, Log4j2Test.class.getName()), + equalTo(CODE_FUNCTION, "performLogging"), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, "Log4j2Test.java"))); if (logException) { attributeAsserts.addAll( Arrays.asList( @@ -158,9 +165,12 @@ void testContextData() { .hasAttributesSatisfyingExactly( equalTo(AttributeKey.stringKey("key1"), "val1"), equalTo(AttributeKey.stringKey("key2"), "val2"), - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()))); + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(CODE_NAMESPACE, Log4j2Test.class.getName()), + equalTo(CODE_FUNCTION, "testContextData"), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, "Log4j2Test.java"))); } @Test @@ -180,9 +190,12 @@ void testStringMapMessage() { .hasAttributesSatisfyingExactly( equalTo(AttributeKey.stringKey("log4j.map_message.key1"), "val1"), equalTo(AttributeKey.stringKey("log4j.map_message.key2"), "val2"), - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()))); + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(CODE_NAMESPACE, Log4j2Test.class.getName()), + equalTo(CODE_FUNCTION, "testStringMapMessage"), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, "Log4j2Test.java"))); } @Test @@ -201,9 +214,12 @@ void testStringMapMessageWithSpecialAttribute() { .hasSeverityText("INFO") .hasAttributesSatisfyingExactly( equalTo(AttributeKey.stringKey("log4j.map_message.key1"), "val1"), - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()))); + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(CODE_NAMESPACE, Log4j2Test.class.getName()), + equalTo(CODE_FUNCTION, "testStringMapMessageWithSpecialAttribute"), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, "Log4j2Test.java"))); } @Test @@ -223,9 +239,12 @@ void testStructuredDataMapMessage() { .hasAttributesSatisfyingExactly( equalTo(AttributeKey.stringKey("log4j.map_message.key1"), "val1"), equalTo(AttributeKey.stringKey("log4j.map_message.key2"), "val2"), - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()))); + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(CODE_NAMESPACE, Log4j2Test.class.getName()), + equalTo(CODE_FUNCTION, "testStructuredDataMapMessage"), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, "Log4j2Test.java"))); } @Test @@ -238,8 +257,12 @@ public void testMarker() { testing.waitAndAssertLogRecords( logRecord -> logRecord.hasAttributesSatisfyingExactly( - equalTo(ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(CODE_NAMESPACE, Log4j2Test.class.getName()), + equalTo(CODE_FUNCTION, "testMarker"), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, "Log4j2Test.java"), equalTo(AttributeKey.stringKey("log4j.marker"), markerName))); } diff --git a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Slf4jToLog4jTest.java b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Slf4jToLog4jTest.java index ce6249fe4ed6..c1f5d1b93298 100644 --- a/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Slf4jToLog4jTest.java +++ b/instrumentation/log4j/log4j-appender-2.17/javaagent/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/Slf4jToLog4jTest.java @@ -11,6 +11,12 @@ import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FILEPATH; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FUNCTION; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_LINENO; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_NAMESPACE; +import static io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes.THREAD_ID; +import static io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes.THREAD_NAME; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.logs.Severity; @@ -19,11 +25,11 @@ import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; -import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; +import org.assertj.core.api.AbstractLongAssert; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; @@ -103,11 +109,12 @@ private static void test( List attributeAsserts = new ArrayList<>( Arrays.asList( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, - Thread.currentThread().getName()), - equalTo( - ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()))); + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(CODE_NAMESPACE, Slf4jToLog4jTest.class.getName()), + equalTo(CODE_FUNCTION, "performLogging"), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, "Slf4jToLog4jTest.java"))); if (logException) { attributeAsserts.addAll( Arrays.asList( @@ -145,14 +152,16 @@ void testMdc() { .hasAttributesSatisfyingExactly( equalTo(AttributeKey.stringKey("key1"), "val1"), equalTo(AttributeKey.stringKey("key2"), "val2"), - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()))); + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(CODE_NAMESPACE, Slf4jToLog4jTest.class.getName()), + equalTo(CODE_FUNCTION, "testMdc"), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, "Slf4jToLog4jTest.java"))); } @Test public void testMarker() { - String markerName = "aMarker"; Marker marker = MarkerFactory.getMarker(markerName); @@ -161,8 +170,12 @@ public void testMarker() { testing.waitAndAssertLogRecords( logRecord -> logRecord.hasAttributesSatisfyingExactly( - equalTo(ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(CODE_NAMESPACE, Slf4jToLog4jTest.class.getName()), + equalTo(CODE_FUNCTION, "testMarker"), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, "Slf4jToLog4jTest.java"), equalTo(AttributeKey.stringKey("log4j.marker"), markerName))); } diff --git a/instrumentation/log4j/log4j-appender-2.17/library/README.md b/instrumentation/log4j/log4j-appender-2.17/library/README.md index 4a3d14441a44..9d4a7be38e1f 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/README.md +++ b/instrumentation/log4j/log4j-appender-2.17/library/README.md @@ -95,7 +95,10 @@ The available settings are: | XML Attribute | Type | Default | Description | |------------------------------------|---------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `captureExperimentalAttributes` | Boolean | `false` | Enable the capture of experimental log attributes `thread.name` and `thread.id`. | +| `captureCodeAttributes` | Boolean | `false` | Enable the capture of [source code attributes]. Note that capturing source code attributes at logging sites might add a performance overhead. | | `captureMapMessageAttributes` | Boolean | `false` | Enable the capture of `MapMessage` attributes. | | `captureMarkerAttribute` | Boolean | `false` | Enable the capture of Log4j markers as attributes. | | `captureContextDataAttributes` | String | | Comma separated list of context data attributes to capture. Use the wildcard character `*` to capture all attributes. | | `numLogsCapturedBeforeOtelInstall` | Integer | 1000 | Log telemetry is emitted after the initialization of the OpenTelemetry Log4j appender with an OpenTelemetry object. This setting allows you to modify the size of the cache used to replay the first logs. | + +[source code attributes]: https://github.com/open-telemetry/semantic-conventions/blob/main/docs/general/attributes.md#source-code-attributes diff --git a/instrumentation/log4j/log4j-appender-2.17/library/build.gradle.kts b/instrumentation/log4j/log4j-appender-2.17/library/build.gradle.kts index a0d41b8f78fd..4c80b3a5f2da 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/build.gradle.kts +++ b/instrumentation/log4j/log4j-appender-2.17/library/build.gradle.kts @@ -18,6 +18,7 @@ dependencies { tasks { withType().configureEach { + systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") } diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogEventToReplay.java b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogEventToReplay.java index e765d42e80f1..a165d0edab93 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogEventToReplay.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogEventToReplay.java @@ -36,8 +36,9 @@ class LogEventToReplay implements LogEvent { private final ReadOnlyStringMap contextData; private final String threadName; private final long threadId; + private final StackTraceElement source; - LogEventToReplay(LogEvent logEvent) { + LogEventToReplay(LogEvent logEvent, boolean captureCodeAttributes) { this.loggerName = logEvent.getLoggerName(); Message messageOrigin = logEvent.getMessage(); if (messageOrigin instanceof StructuredDataMessage) { @@ -64,6 +65,7 @@ class LogEventToReplay implements LogEvent { this.contextData = new SortedArrayStringMap(logEvent.getContextData()); this.threadName = logEvent.getThreadName(); this.threadId = logEvent.getThreadId(); + this.source = captureCodeAttributes ? logEvent.getSource() : null; } @Override @@ -125,7 +127,7 @@ public Instant getInstant() { @Override public StackTraceElement getSource() { - return null; + return source; } @Override diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java index aeeadb3e6bce..ff980b3be35a 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java @@ -62,10 +62,9 @@ public class OpenTelemetryAppender extends AbstractAppender { private volatile OpenTelemetry openTelemetry; private final BlockingQueue eventsToReplay; - private final AtomicBoolean replayLimitWarningLogged = new AtomicBoolean(); - private final ReadWriteLock lock = new ReentrantReadWriteLock(); + private final boolean captureCodeAttributes; /** * Installs the {@code openTelemetry} instance on any {@link OpenTelemetryAppender}s identified in @@ -98,6 +97,7 @@ public static class Builder> extends AbstractAppender.Build implements org.apache.logging.log4j.core.util.Builder { @PluginBuilderAttribute private boolean captureExperimentalAttributes; + @PluginBuilderAttribute private boolean captureCodeAttributes; @PluginBuilderAttribute private boolean captureMapMessageAttributes; @PluginBuilderAttribute private boolean captureMarkerAttribute; @PluginBuilderAttribute private String captureContextDataAttributes; @@ -116,6 +116,20 @@ public B setCaptureExperimentalAttributes(boolean captureExperimentalAttributes) return asBuilder(); } + /** + * Sets whether the code attributes (file name, class name, method name and line number) should + * be set to logs. Enabling these attributes can potentially impact performance (see + * https://logging.apache.org/log4j/2.x/manual/performance.html#layouts-location). + * + * @param captureCodeAttributes To enable or disable the code attributes (file name, class name, + * method name and line number) + */ + @CanIgnoreReturnValue + public B captureCodeAttributes(boolean captureCodeAttributes) { + this.captureCodeAttributes = captureCodeAttributes; + return asBuilder(); + } + /** Sets whether log4j {@link MapMessage} attributes should be copied to logs. */ @CanIgnoreReturnValue public B setCaptureMapMessageAttributes(boolean captureMapMessageAttributes) { @@ -170,6 +184,7 @@ public OpenTelemetryAppender build() { isIgnoreExceptions(), getPropertyArray(), captureExperimentalAttributes, + captureCodeAttributes, captureMapMessageAttributes, captureMarkerAttribute, captureContextDataAttributes, @@ -185,6 +200,7 @@ private OpenTelemetryAppender( boolean ignoreExceptions, Property[] properties, boolean captureExperimentalAttributes, + boolean captureCodeAttributes, boolean captureMapMessageAttributes, boolean captureMarkerAttribute, String captureContextDataAttributes, @@ -196,10 +212,12 @@ private OpenTelemetryAppender( new LogEventMapper<>( ContextDataAccessorImpl.INSTANCE, captureExperimentalAttributes, + captureCodeAttributes, captureMapMessageAttributes, captureMarkerAttribute, splitAndFilterBlanksAndNulls(captureContextDataAttributes)); this.openTelemetry = openTelemetry; + this.captureCodeAttributes = captureCodeAttributes; if (numLogsCapturedBeforeOtelInstall != 0) { this.eventsToReplay = new ArrayBlockingQueue<>(numLogsCapturedBeforeOtelInstall); } else { @@ -257,7 +275,7 @@ public void append(LogEvent event) { return; } - LogEventToReplay logEventToReplay = new LogEventToReplay(event); + LogEventToReplay logEventToReplay = new LogEventToReplay(event, captureCodeAttributes); if (!eventsToReplay.offer(logEventToReplay) && !replayLimitWarningLogged.getAndSet(true)) { String message = @@ -309,6 +327,7 @@ private void emit(OpenTelemetry openTelemetry, LogEvent event) { contextData, event.getThreadName(), event.getThreadId(), + event::getSource, context); Instant timestamp = event.getInstant(); diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapper.java b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapper.java index 1116de609bf7..e26958f5215b 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapper.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapper.java @@ -16,6 +16,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.util.List; +import java.util.function.Supplier; import javax.annotation.Nullable; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.Marker; @@ -29,6 +30,12 @@ */ public final class LogEventMapper { + // copied from CodeIncubatingAttributes + private static final AttributeKey CODE_FILEPATH = AttributeKey.stringKey("code.filepath"); + private static final AttributeKey CODE_FUNCTION = AttributeKey.stringKey("code.function"); + private static final AttributeKey CODE_LINENO = AttributeKey.longKey("code.lineno"); + private static final AttributeKey CODE_NAMESPACE = + AttributeKey.stringKey("code.namespace"); // copied from ThreadIncubatingAttributes private static final AttributeKey THREAD_ID = AttributeKey.longKey("thread.id"); private static final AttributeKey THREAD_NAME = AttributeKey.stringKey("thread.name"); @@ -45,6 +52,7 @@ public final class LogEventMapper { private final ContextDataAccessor contextDataAccessor; private final boolean captureExperimentalAttributes; + private final boolean captureCodeAttributes; private final boolean captureMapMessageAttributes; private final boolean captureMarkerAttribute; private final List captureContextDataAttributes; @@ -53,11 +61,13 @@ public final class LogEventMapper { public LogEventMapper( ContextDataAccessor contextDataAccessor, boolean captureExperimentalAttributes, + boolean captureCodeAttributes, boolean captureMapMessageAttributes, boolean captureMarkerAttribute, List captureContextDataAttributes) { this.contextDataAccessor = contextDataAccessor; + this.captureCodeAttributes = captureCodeAttributes; this.captureExperimentalAttributes = captureExperimentalAttributes; this.captureMapMessageAttributes = captureMapMessageAttributes; this.captureMarkerAttribute = captureMarkerAttribute; @@ -71,13 +81,11 @@ public LogEventMapper( * *
    *
  • Fully qualified class name - {@link LogEvent#getLoggerFqcn()} - *
  • Thread name - {@link LogEvent#getThreadName()} - *
  • Thread id - {@link LogEvent#getThreadId()} *
  • Thread priority - {@link LogEvent#getThreadPriority()} - *
  • Marker - {@link LogEvent#getMarker()} *
  • Nested diagnostic context - {@link LogEvent#getContextStack()} *
*/ + @SuppressWarnings("TooManyParameters") public void mapLogEvent( LogRecordBuilder builder, Message message, @@ -87,6 +95,7 @@ public void mapLogEvent( T contextData, String threadName, long threadId, + Supplier sourceSupplier, Context context) { AttributesBuilder attributes = Attributes.builder(); @@ -116,6 +125,22 @@ public void mapLogEvent( attributes.put(THREAD_ID, threadId); } + if (captureCodeAttributes) { + StackTraceElement source = sourceSupplier.get(); + if (source != null) { + String fileName = source.getFileName(); + if (fileName != null) { + attributes.put(CODE_FILEPATH, fileName); + } + attributes.put(CODE_NAMESPACE, source.getClassName()); + attributes.put(CODE_FUNCTION, source.getMethodName()); + int lineNumber = source.getLineNumber(); + if (lineNumber > 0) { + attributes.put(CODE_LINENO, lineNumber); + } + } + } + builder.setAllAttributes(attributes.build()); builder.setContext(context); } diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/AbstractOpenTelemetryAppenderTest.java b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/AbstractOpenTelemetryAppenderTest.java index 74983abdede5..c7be6426f3cb 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/AbstractOpenTelemetryAppenderTest.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/AbstractOpenTelemetryAppenderTest.java @@ -12,6 +12,12 @@ import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FILEPATH; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FUNCTION; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_LINENO; +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_NAMESPACE; +import static io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes.THREAD_ID; +import static io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes.THREAD_NAME; import static java.util.concurrent.TimeUnit.MILLISECONDS; import io.opentelemetry.api.logs.Severity; @@ -20,8 +26,11 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; +import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; import java.time.Instant; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; @@ -31,6 +40,7 @@ import org.apache.logging.log4j.message.FormattedMessage; import org.apache.logging.log4j.message.StringMapMessage; import org.apache.logging.log4j.message.StructuredDataMessage; +import org.assertj.core.api.AbstractLongAssert; import org.assertj.core.api.AssertAccess; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; @@ -96,11 +106,10 @@ void logNoSpan() { .hasInstrumentationScope(instrumentationScopeInfo) .hasBody("log message 1") .hasAttributesSatisfyingExactly( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, - Thread.currentThread().getName()), - equalTo( - ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()))); + addLocationAttributes( + "logNoSpan", + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId())))); } @Test @@ -130,12 +139,13 @@ void logWithExtras() { .hasSeverity(Severity.INFO) .hasSeverityText("INFO") .hasAttributesSatisfyingExactly( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), - equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), - equalTo(EXCEPTION_MESSAGE, "Error!"), - satisfies(EXCEPTION_STACKTRACE, v -> v.contains("logWithExtras"))); + addLocationAttributes( + "logWithExtras", + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(EXCEPTION_TYPE, IllegalStateException.class.getName()), + equalTo(EXCEPTION_MESSAGE, "Error!"), + satisfies(EXCEPTION_STACKTRACE, v -> v.contains("logWithExtras")))); LogRecordData logRecordData = AssertAccess.getActual(logRecord); assertThat(logRecordData.getTimestampEpochNanos()) @@ -164,13 +174,12 @@ void logContextData() { .hasInstrumentationScope(instrumentationScopeInfo) .hasBody("log message 1") .hasAttributesSatisfyingExactly( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, - Thread.currentThread().getName()), - equalTo( - ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), - equalTo(stringKey("key1"), "val1"), - equalTo(stringKey("key2"), "val2"))); + addLocationAttributes( + "logContextData", + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(stringKey("key1"), "val1"), + equalTo(stringKey("key2"), "val2")))); } @Test @@ -189,13 +198,12 @@ void logStringMapMessage() { .hasResource(resource) .hasInstrumentationScope(instrumentationScopeInfo) .hasAttributesSatisfyingExactly( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, - Thread.currentThread().getName()), - equalTo( - ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), - equalTo(stringKey("log4j.map_message.key1"), "val1"), - equalTo(stringKey("log4j.map_message.key2"), "val2"))); + addLocationAttributes( + "logStringMapMessage", + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(stringKey("log4j.map_message.key1"), "val1"), + equalTo(stringKey("log4j.map_message.key2"), "val2")))); } @Test @@ -215,12 +223,11 @@ void logStringMapMessageWithSpecialAttribute() { .hasInstrumentationScope(instrumentationScopeInfo) .hasBody("val2") .hasAttributesSatisfyingExactly( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, - Thread.currentThread().getName()), - equalTo( - ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), - equalTo(stringKey("log4j.map_message.key1"), "val1"))); + addLocationAttributes( + "logStringMapMessageWithSpecialAttribute", + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(stringKey("log4j.map_message.key1"), "val1")))); } @Test @@ -255,12 +262,35 @@ void logStructuredDataMessage() { .hasInstrumentationScope(instrumentationScopeInfo) .hasBody("a message") .hasAttributesSatisfyingExactly( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, - Thread.currentThread().getName()), - equalTo( - ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), - equalTo(stringKey("log4j.map_message.key1"), "val1"), - equalTo(stringKey("log4j.map_message.key2"), "val2"))); + addLocationAttributes( + "logStructuredDataMessage", + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(stringKey("log4j.map_message.key1"), "val1"), + equalTo(stringKey("log4j.map_message.key2"), "val2")))); + } + + private static List addLocationAttributes( + String methodName, AttributeAssertion... assertions) { + return addLocationAttributes(AbstractOpenTelemetryAppenderTest.class, methodName, assertions); + } + + protected static List addLocationAttributes( + Class testClass, String methodName, AttributeAssertion... assertions) { + String selector = System.getProperty("Log4j2.contextSelector"); + boolean async = selector != null && selector.endsWith("AsyncLoggerContextSelector"); + if (async && !Boolean.getBoolean("testLatestDeps")) { + // source info is not available by default when async logger is used in non latest dep tests + return Arrays.asList(assertions); + } + + List result = new ArrayList<>(Arrays.asList(assertions)); + result.addAll( + Arrays.asList( + equalTo(CODE_NAMESPACE, testClass.getName()), + equalTo(CODE_FUNCTION, methodName), + satisfies(CODE_LINENO, AbstractLongAssert::isPositive), + equalTo(CODE_FILEPATH, testClass.getSimpleName() + ".java"))); + return result; } } diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogReplayOpenTelemetryAppenderTest.java b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogReplayOpenTelemetryAppenderTest.java index fde9d06511d3..aeccb412fcd9 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogReplayOpenTelemetryAppenderTest.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogReplayOpenTelemetryAppenderTest.java @@ -7,10 +7,13 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes.THREAD_ID; +import static io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes.THREAD_NAME; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; -import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; +import io.opentelemetry.sdk.testing.assertj.AttributeAssertion; +import java.util.List; import org.apache.logging.log4j.message.StringMapMessage; import org.apache.logging.log4j.message.StructuredDataMessage; import org.junit.jupiter.api.AfterEach; @@ -95,11 +98,12 @@ void twoLogsStringMapMessage() { .hasResource(resource) .hasInstrumentationScope(instrumentationScopeInfo) .hasAttributesSatisfyingExactly( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), - equalTo(stringKey("log4j.map_message.key1"), "val1"), - equalTo(stringKey("log4j.map_message.key2"), "val2"))); + addLocationAttributes( + "twoLogsStringMapMessage", + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(stringKey("log4j.map_message.key1"), "val1"), + equalTo(stringKey("log4j.map_message.key2"), "val2")))); } @Test @@ -128,10 +132,16 @@ void twoLogsStructuredDataMessage() { .hasInstrumentationScope(instrumentationScopeInfo) .hasBody("a message") .hasAttributesSatisfyingExactly( - equalTo( - ThreadIncubatingAttributes.THREAD_NAME, Thread.currentThread().getName()), - equalTo(ThreadIncubatingAttributes.THREAD_ID, Thread.currentThread().getId()), - equalTo(stringKey("log4j.map_message.key1"), "val1"), - equalTo(stringKey("log4j.map_message.key2"), "val2"))); + addLocationAttributes( + "twoLogsStructuredDataMessage", + equalTo(THREAD_NAME, Thread.currentThread().getName()), + equalTo(THREAD_ID, Thread.currentThread().getId()), + equalTo(stringKey("log4j.map_message.key1"), "val1"), + equalTo(stringKey("log4j.map_message.key2"), "val2")))); + } + + private static List addLocationAttributes( + String methodName, AttributeAssertion... assertions) { + return addLocationAttributes(LogReplayOpenTelemetryAppenderTest.class, methodName, assertions); } } diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapperTest.java b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapperTest.java index 535e2c857e35..ce374ff97b9b 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapperTest.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/test/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapperTest.java @@ -31,7 +31,8 @@ class LogEventMapperTest { void testDefault() { // given LogEventMapper> mapper = - new LogEventMapper<>(ContextDataAccessorImpl.INSTANCE, false, false, false, emptyList()); + new LogEventMapper<>( + ContextDataAccessorImpl.INSTANCE, false, false, false, false, emptyList()); Map contextData = new HashMap<>(); contextData.put("key1", "value1"); contextData.put("key2", "value2"); @@ -49,7 +50,7 @@ void testSome() { // given LogEventMapper> mapper = new LogEventMapper<>( - ContextDataAccessorImpl.INSTANCE, false, false, false, singletonList("key2")); + ContextDataAccessorImpl.INSTANCE, false, false, false, false, singletonList("key2")); Map contextData = new HashMap<>(); contextData.put("key1", "value1"); contextData.put("key2", "value2"); @@ -67,7 +68,7 @@ void testAll() { // given LogEventMapper> mapper = new LogEventMapper<>( - ContextDataAccessorImpl.INSTANCE, false, false, false, singletonList("*")); + ContextDataAccessorImpl.INSTANCE, false, false, false, false, singletonList("*")); Map contextData = new HashMap<>(); contextData.put("key1", "value1"); contextData.put("key2", "value2"); @@ -86,7 +87,7 @@ void testCaptureMapMessageDisabled() { // given LogEventMapper> mapper = new LogEventMapper<>( - ContextDataAccessorImpl.INSTANCE, false, false, false, singletonList("*")); + ContextDataAccessorImpl.INSTANCE, false, false, false, false, singletonList("*")); StringMapMessage message = new StringMapMessage(); message.put("key1", "value1"); @@ -108,7 +109,7 @@ void testCaptureMapMessageWithSpecialAttribute() { // given LogEventMapper> mapper = new LogEventMapper<>( - ContextDataAccessorImpl.INSTANCE, false, true, false, singletonList("*")); + ContextDataAccessorImpl.INSTANCE, false, false, true, false, singletonList("*")); StringMapMessage message = new StringMapMessage(); message.put("key1", "value1"); @@ -130,7 +131,7 @@ void testCaptureMapMessageWithoutSpecialAttribute() { // given LogEventMapper> mapper = new LogEventMapper<>( - ContextDataAccessorImpl.INSTANCE, false, true, false, singletonList("*")); + ContextDataAccessorImpl.INSTANCE, false, false, true, false, singletonList("*")); StringMapMessage message = new StringMapMessage(); message.put("key1", "value1"); @@ -155,7 +156,7 @@ void testCaptureStructuredDataMessage() { // given LogEventMapper> mapper = new LogEventMapper<>( - ContextDataAccessorImpl.INSTANCE, false, true, false, singletonList("*")); + ContextDataAccessorImpl.INSTANCE, false, false, true, false, singletonList("*")); StructuredDataMessage message = new StructuredDataMessage("an id", "a message", "a type"); message.put("key1", "value1"); diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/test/resources/log4j2.xml b/instrumentation/log4j/log4j-appender-2.17/library/src/test/resources/log4j2.xml index 39c79fc1c7fd..1953d256c0b7 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/test/resources/log4j2.xml +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/test/resources/log4j2.xml @@ -6,7 +6,7 @@ pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} traceId: %X{trace_id} spanId: %X{span_id} flags: %X{trace_flags} - %msg%n"/> - + From 8ff6cb0de04b1862bc1e04613583e4276520a9c2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 14:08:43 +0200 Subject: [PATCH 37/40] fix(deps): update armeria packages to v1.31.0 (minor) (#12728) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- smoke-tests/images/fake-backend/build.gradle.kts | 2 +- testing/armeria-shaded-for-testing/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/smoke-tests/images/fake-backend/build.gradle.kts b/smoke-tests/images/fake-backend/build.gradle.kts index 3ec0081a2dd7..2a11503666d1 100644 --- a/smoke-tests/images/fake-backend/build.gradle.kts +++ b/smoke-tests/images/fake-backend/build.gradle.kts @@ -11,7 +11,7 @@ plugins { } dependencies { - implementation("com.linecorp.armeria:armeria-grpc:1.30.1") + implementation("com.linecorp.armeria:armeria-grpc:1.31.0") implementation("io.opentelemetry.proto:opentelemetry-proto") runtimeOnly("org.slf4j:slf4j-simple") } diff --git a/testing/armeria-shaded-for-testing/build.gradle.kts b/testing/armeria-shaded-for-testing/build.gradle.kts index 629df89b3184..6a0fe7f1d7ad 100644 --- a/testing/armeria-shaded-for-testing/build.gradle.kts +++ b/testing/armeria-shaded-for-testing/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } dependencies { - implementation("com.linecorp.armeria:armeria-junit5:1.30.1") + implementation("com.linecorp.armeria:armeria-junit5:1.31.0") } tasks { From c6318016b3e497153ad2e55b640891a00570a1d8 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 14 Nov 2024 17:50:38 +0200 Subject: [PATCH 38/40] Logback: don't make MDCPropertyMap of logging event immutable (#12718) --- .../mdc/v1_0/LoggingEventInstrumentation.java | 10 +- .../mdc/v1_0/OpenTelemetryAppender.java | 14 +- .../logback/mdc/v1_0/internal/UnionMap.java | 214 ------------------ .../logback/mdc/v1_0/LogbackTest.java | 15 ++ .../logback/mdc/v1_0/TestAppender.java | 70 ++++++ .../mdc/v1_0/internal/UnionMapTest.java | 104 --------- .../library/src/test/resources/logback.xml | 2 + 7 files changed, 96 insertions(+), 333 deletions(-) delete mode 100644 instrumentation/logback/logback-mdc-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/internal/UnionMap.java create mode 100644 instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/TestAppender.java delete mode 100644 instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/internal/UnionMapTest.java diff --git a/instrumentation/logback/logback-mdc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/mdc/v1_0/LoggingEventInstrumentation.java b/instrumentation/logback/logback-mdc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/mdc/v1_0/LoggingEventInstrumentation.java index 93768e2f9857..5ff59fcb3f39 100644 --- a/instrumentation/logback/logback-mdc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/mdc/v1_0/LoggingEventInstrumentation.java +++ b/instrumentation/logback/logback-mdc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/mdc/v1_0/LoggingEventInstrumentation.java @@ -22,7 +22,6 @@ import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.util.VirtualField; -import io.opentelemetry.instrumentation.logback.mdc.v1_0.internal.UnionMap; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.bootstrap.internal.ConfiguredResourceAttributesHolder; @@ -74,6 +73,9 @@ public static void onExit( } Map spanContextData = new HashMap<>(); + if (contextData != null) { + spanContextData.putAll(contextData); + } SpanContext spanContext = Java8BytecodeBridge.spanFromContext(context).getSpanContext(); @@ -96,11 +98,7 @@ public static void onExit( } } - if (contextData == null) { - contextData = spanContextData; - } else { - contextData = new UnionMap<>(contextData, spanContextData); - } + contextData = spanContextData; } } } diff --git a/instrumentation/logback/logback-mdc-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/OpenTelemetryAppender.java b/instrumentation/logback/logback-mdc-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/OpenTelemetryAppender.java index 99b480efada0..8fdb009f06a3 100644 --- a/instrumentation/logback/logback-mdc-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/OpenTelemetryAppender.java +++ b/instrumentation/logback/logback-mdc-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/OpenTelemetryAppender.java @@ -17,7 +17,6 @@ import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.incubator.log.LoggingContextConstants; -import io.opentelemetry.instrumentation.logback.mdc.v1_0.internal.UnionMap; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Iterator; @@ -83,6 +82,9 @@ private void processEvent(ILoggingEvent event) { } Map contextData = new HashMap<>(); + if (eventContext != null) { + contextData.putAll(eventContext); + } Context context = Context.current(); Span currentSpan = Span.fromContext(context); @@ -102,20 +104,14 @@ private void processEvent(ILoggingEvent event) { "baggage." + key, value.getValue())); } - if (eventContext == null) { - eventContext = contextData; - } else { - eventContext = new UnionMap<>(eventContext, contextData); - } - Map eventContextMap = eventContext; LoggerContextVO oldVo = event.getLoggerContextVO(); LoggerContextVO vo = oldVo != null - ? new LoggerContextVO(oldVo.getName(), eventContextMap, oldVo.getBirthTime()) + ? new LoggerContextVO(oldVo.getName(), contextData, oldVo.getBirthTime()) : null; try { - MDC_MAP_FIELD.set(event, eventContextMap); + MDC_MAP_FIELD.set(event, contextData); } catch (IllegalAccessException ignored) { // setAccessible(true) was called on the field } diff --git a/instrumentation/logback/logback-mdc-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/internal/UnionMap.java b/instrumentation/logback/logback-mdc-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/internal/UnionMap.java deleted file mode 100644 index e84b136d7d0d..000000000000 --- a/instrumentation/logback/logback-mdc-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/internal/UnionMap.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.logback.mdc.v1_0.internal; - -import java.io.Serializable; -import java.util.AbstractMap; -import java.util.AbstractSet; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Set; - -/** - * An immutable view over two maps, with keys resolving from the first map first, or otherwise the - * second if not present in the first. - * - *

This class is internal and is hence not for public use. Its APIs are unstable and can change - * at any time. - */ -public final class UnionMap extends AbstractMap implements Serializable { - private static final long serialVersionUID = 1L; - - private final Map first; - private final Map second; - private int size = -1; - private Set> entrySet; - - public UnionMap(Map first, Map second) { - this.first = first; - this.second = second; - } - - @Override - public int size() { - if (size >= 0) { - return size; - } - - Map a; - Map b; - if (first.size() >= second.size()) { - a = first; - b = second; - } else { - a = second; - b = first; - } - - int size = a.size(); - if (!b.isEmpty()) { - for (K k : b.keySet()) { - if (!a.containsKey(k)) { - size++; - } - } - } - - return this.size = size; - } - - @Override - public boolean isEmpty() { - return first.isEmpty() && second.isEmpty(); - } - - @Override - public boolean containsKey(Object key) { - return first.containsKey(key) || second.containsKey(key); - } - - @Override - public boolean containsValue(Object value) { - return first.containsValue(value) || second.containsValue(value); - } - - @Override - public V get(Object key) { - V value = first.get(key); - return value != null ? value : second.get(key); - } - - @Override - public V put(K key, V value) { - throw new UnsupportedOperationException(); - } - - @Override - public V remove(Object key) { - throw new UnsupportedOperationException(); - } - - @Override - public void clear() { - throw new UnsupportedOperationException(); - } - - @Override - public Set> entrySet() { - if (entrySet != null) { - return entrySet; - } - - // Check for dupes first to reduce allocations on the vastly more common case where there aren't - // any. - boolean secondHasDupes = false; - for (Entry entry : second.entrySet()) { - if (first.containsKey(entry.getKey())) { - secondHasDupes = true; - break; - } - } - - Set> filteredSecond; - if (!secondHasDupes) { - filteredSecond = second.entrySet(); - } else { - filteredSecond = new LinkedHashSet<>(); - for (Entry entry : second.entrySet()) { - if (!first.containsKey(entry.getKey())) { - filteredSecond.add(entry); - } - } - } - return entrySet = - Collections.unmodifiableSet(new ConcatenatedSet<>(first.entrySet(), filteredSecond)); - } - - private Object writeReplace() { - // serialize this object as HashMap - return new HashMap<>(this); - } - - // Member sets must be deduped by caller. - static final class ConcatenatedSet extends AbstractSet { - - private final Set first; - private final Set second; - - private final int size; - - ConcatenatedSet(Set first, Set second) { - this.first = first; - this.second = second; - - size = first.size() + second.size(); - } - - @Override - public int size() { - return size; - } - - @Override - public boolean add(T t) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean remove(Object o) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean addAll(Collection c) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean retainAll(Collection c) { - throw new UnsupportedOperationException(); - } - - @Override - public void clear() { - throw new UnsupportedOperationException(); - } - - @Override - public Iterator iterator() { - return new ConcatenatedSetIterator(); - } - - class ConcatenatedSetIterator implements Iterator { - final Iterator firstItr = first.iterator(); - final Iterator secondItr = second.iterator(); - - ConcatenatedSetIterator() {} - - @Override - public boolean hasNext() { - return firstItr.hasNext() || secondItr.hasNext(); - } - - @Override - public T next() { - if (firstItr.hasNext()) { - return firstItr.next(); - } - return secondItr.next(); - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - } - } -} diff --git a/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/LogbackTest.java b/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/LogbackTest.java index d0de1c10e672..f676e8f3cf4e 100644 --- a/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/LogbackTest.java +++ b/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/LogbackTest.java @@ -5,8 +5,12 @@ package io.opentelemetry.instrumentation.logback.mdc.v1_0; +import static org.assertj.core.api.Assertions.assertThat; + import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import java.util.Map; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; class LogbackTest extends AbstractLogbackTest { @@ -18,4 +22,15 @@ class LogbackTest extends AbstractLogbackTest { public InstrumentationExtension getInstrumentationExtension() { return testing; } + + @Test + void testMdcMutable() { + TestAppender testAppender = TestAppender.instance; + runWithSpanAndBaggage("test", baggage, () -> logger.info("log message")); + + assertThat(testAppender.lastEvent.getMessage()).isEqualTo("log message"); + Map map = testAppender.lastEvent.getMDCPropertyMap(); + // verify that mdc map associated with the event is mutable + map.put("test", "test"); + } } diff --git a/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/TestAppender.java b/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/TestAppender.java new file mode 100644 index 000000000000..e001771dd6ec --- /dev/null +++ b/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/TestAppender.java @@ -0,0 +1,70 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.logback.mdc.v1_0; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.Appender; +import ch.qos.logback.core.UnsynchronizedAppenderBase; +import ch.qos.logback.core.spi.AppenderAttachable; +import ch.qos.logback.core.spi.AppenderAttachableImpl; +import java.util.Iterator; + +public class TestAppender extends UnsynchronizedAppenderBase + implements AppenderAttachable { + + static TestAppender instance; + private final AppenderAttachableImpl aai = new AppenderAttachableImpl<>(); + ILoggingEvent lastEvent; + + public TestAppender() { + instance = this; + } + + private void processEvent(ILoggingEvent event) { + lastEvent = event; + } + + @Override + protected void append(ILoggingEvent event) { + processEvent(event); + aai.appendLoopOnAppenders(event); + } + + @Override + public void addAppender(Appender appender) { + aai.addAppender(appender); + } + + @Override + public Iterator> iteratorForAppenders() { + return aai.iteratorForAppenders(); + } + + @Override + public Appender getAppender(String name) { + return aai.getAppender(name); + } + + @Override + public boolean isAttached(Appender appender) { + return aai.isAttached(appender); + } + + @Override + public void detachAndStopAllAppenders() { + aai.detachAndStopAllAppenders(); + } + + @Override + public boolean detachAppender(Appender appender) { + return aai.detachAppender(appender); + } + + @Override + public boolean detachAppender(String name) { + return aai.detachAppender(name); + } +} diff --git a/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/internal/UnionMapTest.java b/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/internal/UnionMapTest.java deleted file mode 100644 index 1656c55f41c1..000000000000 --- a/instrumentation/logback/logback-mdc-1.0/library/src/test/java/io/opentelemetry/instrumentation/logback/mdc/v1_0/internal/UnionMapTest.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.logback.mdc.v1_0.internal; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.google.common.collect.ImmutableMap; -import java.util.Collections; -import java.util.Map; -import java.util.Set; -import java.util.stream.Stream; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -class UnionMapTest { - - @ParameterizedTest - @MethodSource("providesMapsArguments") - void testMaps(Map first, Map second) { - UnionMap union = new UnionMap<>(first, second); - - assertThat(union.get("cat")).isEqualTo("meow"); - assertThat(union.get("dog")).isEqualTo("bark"); - assertThat(union.get("foo")).isEqualTo("bar"); - assertThat(union.get("hello")).isEqualTo("world"); - assertThat(union.get("giraffe")).isNull(); - - assertThat(union.isEmpty()).isFalse(); - assertThat(union.size()).isEqualTo(4); - assertThat(union.containsKey("cat")).isTrue(); - assertThat(union.containsKey("dog")).isTrue(); - assertThat(union.containsKey("foo")).isTrue(); - assertThat(union.containsKey("hello")).isTrue(); - assertThat(union.containsKey("giraffe")).isFalse(); - - Set> set = union.entrySet(); - assertThat(set.isEmpty()).isFalse(); - assertThat(set.size()).isEqualTo(4); - assertThat(set.toArray().length).isEqualTo(4); - } - - private static Stream providesMapsArguments() { - ImmutableMap firstArg = - ImmutableMap.of( - "cat", "meow", - "dog", "bark"); - - return Stream.of( - Arguments.of( - firstArg, - ImmutableMap.of( - "foo", "bar", - "hello", "world")), - Arguments.of( - firstArg, - ImmutableMap.of( - "foo", "bar", - "hello", "world", - "cat", "moo"))); - } - - @Test - void testBothEmpty() { - UnionMap union = new UnionMap<>(Collections.emptyMap(), Collections.emptyMap()); - - assertThat(union.isEmpty()).isTrue(); - assertThat(union.size()).isEqualTo(0); - assertThat(union.get("cat")).isNull(); - - Set> set = union.entrySet(); - assertThat(set.isEmpty()).isTrue(); - assertThat(set.size()).isEqualTo(0); - - assertThat(set.toArray().length).isEqualTo(0); - } - - @ParameterizedTest - @MethodSource("providesOneEmptyArguments") - void testOneEmpty(Map first, Map second) { - UnionMap union = new UnionMap<>(first, second); - - assertThat(union.isEmpty()).isFalse(); - assertThat(union.size()).isEqualTo(1); - assertThat(union.get("cat")).isEqualTo("meow"); - assertThat(union.get("dog")).isNull(); - - Set> set = union.entrySet(); - assertThat(set.isEmpty()).isFalse(); - assertThat(set.size()).isEqualTo(1); - - assertThat(set.toArray().length).isEqualTo(1); - } - - private static Stream providesOneEmptyArguments() { - return Stream.of( - Arguments.of(ImmutableMap.of("cat", "meow"), Collections.emptyMap()), - Arguments.of(Collections.emptyMap(), ImmutableMap.of("cat", "meow"))); - } -} diff --git a/instrumentation/logback/logback-mdc-1.0/library/src/test/resources/logback.xml b/instrumentation/logback/logback-mdc-1.0/library/src/test/resources/logback.xml index b934356e3af4..aed73c5b3f47 100644 --- a/instrumentation/logback/logback-mdc-1.0/library/src/test/resources/logback.xml +++ b/instrumentation/logback/logback-mdc-1.0/library/src/test/resources/logback.xml @@ -17,10 +17,12 @@ + + From 6bafd2b3d5c6cef04dbf20fb8f63ad642c682a55 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 15 Nov 2024 05:17:29 +0200 Subject: [PATCH 39/40] Fill jvm.thread.state attribute for jvm.thread.count metric on jdk8 (#12724) --- .../runtimemetrics/java8/Threads.java | 67 ++++++++++++++++++- .../java8/ThreadsStableSemconvTest.java | 53 ++++++++++++++- 2 files changed, 115 insertions(+), 5 deletions(-) diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java8/Threads.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java8/Threads.java index 238c15e37a74..d3af5bf00ea9 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java8/Threads.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java8/Threads.java @@ -25,6 +25,8 @@ import java.util.Locale; import java.util.Map; import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Supplier; import javax.annotation.Nullable; /** @@ -55,11 +57,34 @@ public final class Threads { /** Register observers for java runtime class metrics. */ public static List registerObservers(OpenTelemetry openTelemetry) { - return INSTANCE.registerObservers(openTelemetry, ManagementFactory.getThreadMXBean()); + return INSTANCE.registerObservers(openTelemetry, !isJava9OrNewer()); + } + + private List registerObservers(OpenTelemetry openTelemetry, boolean useThread) { + if (useThread) { + return registerObservers(openTelemetry, Threads::getThreads); + } + return registerObservers(openTelemetry, ManagementFactory.getThreadMXBean()); } // Visible for testing List registerObservers(OpenTelemetry openTelemetry, ThreadMXBean threadBean) { + return registerObservers( + openTelemetry, + isJava9OrNewer() ? Threads::java9AndNewerCallback : Threads::java8Callback, + threadBean); + } + + // Visible for testing + List registerObservers( + OpenTelemetry openTelemetry, Supplier threadSupplier) { + return registerObservers(openTelemetry, Threads::java8ThreadCallback, threadSupplier); + } + + private static List registerObservers( + OpenTelemetry openTelemetry, + Function> callbackProvider, + T threadInfo) { Meter meter = JmxRuntimeMetricsUtil.getMeter(openTelemetry); List observables = new ArrayList<>(); @@ -68,8 +93,7 @@ List registerObservers(OpenTelemetry openTelemetry, ThreadMXBean .upDownCounterBuilder("jvm.thread.count") .setDescription("Number of executing platform threads.") .setUnit("{thread}") - .buildWithCallback( - isJava9OrNewer() ? java9AndNewerCallback(threadBean) : java8Callback(threadBean))); + .buildWithCallback(callbackProvider.apply(threadInfo))); return observables; } @@ -104,6 +128,36 @@ private static Consumer java8Callback(ThreadMXBean th }; } + private static Consumer java8ThreadCallback( + Supplier supplier) { + return measurement -> { + Map counts = new HashMap<>(); + for (Thread thread : supplier.get()) { + Attributes threadAttributes = threadAttributes(thread); + counts.compute(threadAttributes, (k, value) -> value == null ? 1 : value + 1); + } + counts.forEach((threadAttributes, count) -> measurement.record(count, threadAttributes)); + }; + } + + // Visible for testing + static Thread[] getThreads() { + ThreadGroup threadGroup = Thread.currentThread().getThreadGroup(); + while (threadGroup.getParent() != null) { + threadGroup = threadGroup.getParent(); + } + // use a slightly larger array in case new threads are created + int count = threadGroup.activeCount() + 10; + Thread[] threads = new Thread[count]; + int resultSize = threadGroup.enumerate(threads); + if (resultSize == threads.length) { + return threads; + } + Thread[] result = new Thread[resultSize]; + System.arraycopy(threads, 0, result, 0, resultSize); + return result; + } + private static Consumer java9AndNewerCallback( ThreadMXBean threadBean) { return measurement -> { @@ -132,5 +186,12 @@ private static Attributes threadAttributes(ThreadInfo threadInfo) { JvmAttributes.JVM_THREAD_DAEMON, isDaemon, JvmAttributes.JVM_THREAD_STATE, threadState); } + private static Attributes threadAttributes(Thread thread) { + boolean isDaemon = thread.isDaemon(); + String threadState = thread.getState().name().toLowerCase(Locale.ROOT); + return Attributes.of( + JvmAttributes.JVM_THREAD_DAEMON, isDaemon, JvmAttributes.JVM_THREAD_STATE, threadState); + } + private Threads() {} } diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java8/ThreadsStableSemconvTest.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java8/ThreadsStableSemconvTest.java index 55fb6b35e802..7d9eb8aa994e 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java8/ThreadsStableSemconvTest.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java8/ThreadsStableSemconvTest.java @@ -18,6 +18,9 @@ import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledForJreRange; import org.junit.jupiter.api.condition.EnabledOnJre; @@ -41,7 +44,7 @@ class ThreadsStableSemconvTest { @Test @EnabledOnJre(JRE.JAVA_8) - void registerObservers_Java8() { + void registerObservers_Java8Jmx() { when(threadBean.getThreadCount()).thenReturn(7); when(threadBean.getDaemonThreadCount()).thenReturn(2); @@ -75,6 +78,45 @@ void registerObservers_Java8() { equalTo(JVM_THREAD_DAEMON, false)))))); } + @Test + void registerObservers_Java8Thread() { + Thread threadInfo1 = mock(Thread.class, new ThreadInfoAnswer(false, Thread.State.RUNNABLE)); + Thread threadInfo2 = mock(Thread.class, new ThreadInfoAnswer(true, Thread.State.WAITING)); + + Thread[] threads = new Thread[] {threadInfo1, threadInfo2}; + + Threads.INSTANCE + .registerObservers(testing.getOpenTelemetry(), () -> threads) + .forEach(cleanup::deferCleanup); + + testing.waitAndAssertMetrics( + "io.opentelemetry.runtime-telemetry-java8", + "jvm.thread.count", + metrics -> + metrics.anySatisfy( + metricData -> + assertThat(metricData) + .hasInstrumentationScope(EXPECTED_SCOPE) + .hasDescription("Number of executing platform threads.") + .hasUnit("{thread}") + .hasLongSumSatisfying( + sum -> + sum.isNotMonotonic() + .hasPointsSatisfying( + point -> + point + .hasValue(1) + .hasAttributesSatisfying( + equalTo(JVM_THREAD_DAEMON, false), + equalTo(JVM_THREAD_STATE, "runnable")), + point -> + point + .hasValue(1) + .hasAttributesSatisfying( + equalTo(JVM_THREAD_DAEMON, true), + equalTo(JVM_THREAD_STATE, "waiting")))))); + } + @Test @EnabledForJreRange(min = JRE.JAVA_9) void registerObservers_Java9AndNewer() { @@ -120,6 +162,13 @@ void registerObservers_Java9AndNewer() { equalTo(JVM_THREAD_STATE, "waiting")))))); } + @Test + void getThreads() { + Thread[] threads = Threads.getThreads(); + Set set = new HashSet<>(Arrays.asList(threads)); + assertThat(set).contains(Thread.currentThread()); + } + static final class ThreadInfoAnswer implements Answer { private final boolean isDaemon; @@ -135,7 +184,7 @@ public Object answer(InvocationOnMock invocation) { String methodName = invocation.getMethod().getName(); if (methodName.equals("isDaemon")) { return isDaemon; - } else if (methodName.equals("getThreadState")) { + } else if (methodName.equals("getThreadState") || methodName.equals("getState")) { return state; } return null; From 805ce0a3cc73cf0d059a870cd0bb88b9edac69cc Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 15 Nov 2024 12:12:09 +0200 Subject: [PATCH 40/40] Fix armeria-grpc latest dep test (#12734) --- .../javaagent/build.gradle.kts | 34 ++++++++++++++++++- .../javaagent/src/test/proto/helloworld.proto | 22 ++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/proto/helloworld.proto diff --git a/instrumentation/armeria/armeria-grpc-1.14/javaagent/build.gradle.kts b/instrumentation/armeria/armeria-grpc-1.14/javaagent/build.gradle.kts index 65a2309b0f69..aaf3db288728 100644 --- a/instrumentation/armeria/armeria-grpc-1.14/javaagent/build.gradle.kts +++ b/instrumentation/armeria/armeria-grpc-1.14/javaagent/build.gradle.kts @@ -1,5 +1,8 @@ +import com.google.protobuf.gradle.* + plugins { id("otel.javaagent-instrumentation") + id("com.google.protobuf") } muzzle { @@ -18,6 +21,35 @@ dependencies { testInstrumentation(project(":instrumentation:netty:netty-4.1:javaagent")) testInstrumentation(project(":instrumentation:grpc-1.6:javaagent")) - testImplementation(project(":instrumentation:grpc-1.6:testing")) testLibrary("com.linecorp.armeria:armeria-junit5:1.14.0") } + +val latestDepTest = findProperty("testLatestDeps") as Boolean +protobuf { + protoc { + val protocVersion = if (latestDepTest) "4.28.2" else "3.19.2" + artifact = "com.google.protobuf:protoc:$protocVersion" + } + plugins { + id("grpc") { + val grpcVersion = if (latestDepTest) "1.43.2" else "1.68.1" + artifact = "io.grpc:protoc-gen-grpc-java:$grpcVersion" + } + } + generateProtoTasks { + all().configureEach { + plugins { + id("grpc") + } + } + } +} + +afterEvaluate { + // Classpath when compiling protos, we add dependency management directly + // since it doesn't follow Gradle conventions of naming / properties. + dependencies { + add("compileProtoPath", platform(project(":dependencyManagement"))) + add("testCompileProtoPath", platform(project(":dependencyManagement"))) + } +} diff --git a/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/proto/helloworld.proto b/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/proto/helloworld.proto new file mode 100644 index 000000000000..e5a12aadd367 --- /dev/null +++ b/instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/proto/helloworld.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package example; + +service Greeter { + rpc SayHello (Request) returns (Response) { + } + + rpc SayMultipleHello (Request) returns (stream Response) { + } + + rpc Conversation (stream Response) returns (stream Response) { + } +} + +message Request { + string name = 1; +} + +message Response { + string message = 1; +}