diff --git a/instrumentation/apache-dubbo-2.7/javaagent/build.gradle.kts b/instrumentation/apache-dubbo-2.7/javaagent/build.gradle.kts index db6e845aad32..0c68fb84f35e 100644 --- a/instrumentation/apache-dubbo-2.7/javaagent/build.gradle.kts +++ b/instrumentation/apache-dubbo-2.7/javaagent/build.gradle.kts @@ -40,6 +40,7 @@ testing { } tasks.withType().configureEach { + systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") // to suppress non-fatal errors on jdk17 jvmArgs("--add-opens=java.base/java.math=ALL-UNNAMED") 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 672c5a86166d..2590bef9ea1d 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 @@ -29,6 +29,7 @@ import java.net.InetAddress; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; +import java.util.function.Consumer; import org.apache.dubbo.common.utils.NetUtils; import org.apache.dubbo.config.ApplicationConfig; import org.apache.dubbo.config.ProtocolConfig; @@ -38,6 +39,7 @@ import org.apache.dubbo.config.bootstrap.DubboBootstrap; import org.apache.dubbo.rpc.service.GenericService; import org.assertj.core.api.AbstractAssert; +import org.assertj.core.api.AbstractStringAssert; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -143,23 +145,11 @@ void testApacheDubboBase() throws ReflectiveOperationException { satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_PEER_ADDRESS, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(String.class))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(String.class))), satisfies( NETWORK_PEER_PORT, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(Long.class))), - satisfies( - NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isEqualTo("ipv4"), - val -> assertThat(val).isEqualTo("ipv6")))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(Long.class))), + satisfies(NETWORK_TYPE, AbstractDubboTest::assertNetworkType)), span -> span.hasName( "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService/hello") @@ -174,8 +164,7 @@ void testApacheDubboBase() throws ReflectiveOperationException { "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService"), 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)))); + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class))))); testing() .waitAndAssertMetrics( @@ -227,14 +216,7 @@ void testApacheDubboBase() throws ReflectiveOperationException { SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> - assertThat(val).isEqualTo("ipv4"), - val -> - assertThat(val) - .isEqualTo("ipv6")))))))); + AbstractDubboTest::assertNetworkType)))))); } @Test @@ -294,23 +276,11 @@ void testApacheDubboTest() satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_PEER_ADDRESS, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(String.class))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(String.class))), satisfies( NETWORK_PEER_PORT, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(Long.class))), - satisfies( - NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isEqualTo("ipv4"), - val -> assertThat(val).isEqualTo("ipv6")))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(Long.class))), + satisfies(NETWORK_TYPE, AbstractDubboTest::assertNetworkType)), span -> span.hasName( "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService/hello") @@ -326,13 +296,18 @@ void testApacheDubboTest() equalTo(RPC_METHOD, "hello"), satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)), satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)), + // this attribute is not filled reliably, it is either null or + // "ipv4"/"ipv6" satisfies( NETWORK_TYPE, k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isEqualTo("ipv4"), - val -> assertThat(val).isEqualTo("ipv6")))))); + assertLatestDeps( + k, + a -> + a.satisfiesAnyOf( + val -> assertThat(val).isNull(), + val -> assertThat(val).isEqualTo("ipv4"), + val -> assertThat(val).isEqualTo("ipv6"))))))); testing() .waitAndAssertMetrics( @@ -384,13 +359,24 @@ void testApacheDubboTest() SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> - assertThat(val).isEqualTo("ipv4"), - val -> - assertThat(val) - .isEqualTo("ipv6")))))))); + AbstractDubboTest::assertNetworkType)))))); + } + + static void assertNetworkType(AbstractStringAssert stringAssert) { + assertLatestDeps( + stringAssert, + a -> + a.satisfiesAnyOf( + val -> assertThat(val).isEqualTo("ipv4"), + val -> assertThat(val).isEqualTo("ipv6"))); + } + + static void assertLatestDeps( + AbstractAssert assertion, Consumer> action) { + if (Boolean.getBoolean("testLatestDeps")) { + action.accept(assertion); + } else { + assertion.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 1e8a63802fbf..16febc283e9a 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 @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.apachedubbo.v2_7; +import static io.opentelemetry.instrumentation.apachedubbo.v2_7.AbstractDubboTest.assertLatestDeps; import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -186,23 +187,11 @@ void testDubboChain() throws ReflectiveOperationException { satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_PEER_ADDRESS, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(String.class))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(String.class))), satisfies( NETWORK_PEER_PORT, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(Long.class))), - satisfies( - NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isEqualTo("ipv4"), - val -> assertThat(val).isEqualTo("ipv6")))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(Long.class))), + satisfies(NETWORK_TYPE, AbstractDubboTest::assertNetworkType)), span -> span.hasName( "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.MiddleService/hello") @@ -217,14 +206,7 @@ void testDubboChain() throws ReflectiveOperationException { "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.MiddleService"), 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, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isEqualTo("ipv4"), - val -> assertThat(val).isEqualTo("ipv6")))), + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class))), span -> span.hasName("org.apache.dubbo.rpc.service.GenericService/$invoke") .hasKind(SpanKind.CLIENT) @@ -239,23 +221,11 @@ void testDubboChain() throws ReflectiveOperationException { satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_PEER_ADDRESS, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(String.class))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(String.class))), satisfies( NETWORK_PEER_PORT, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(Long.class))), - satisfies( - NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isEqualTo("ipv4"), - val -> assertThat(val).isEqualTo("ipv6")))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(Long.class))), + satisfies(NETWORK_TYPE, AbstractDubboTest::assertNetworkType)), span -> span.hasName( "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService/hello") @@ -270,14 +240,7 @@ void testDubboChain() throws ReflectiveOperationException { "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService"), 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, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isEqualTo("ipv4"), - val -> assertThat(val).isEqualTo("ipv6")))))); + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class))))); testing() .waitAndAssertMetrics( @@ -339,14 +302,7 @@ void testDubboChain() throws ReflectiveOperationException { SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> - assertThat(val).isEqualTo("ipv4"), - val -> - assertThat(val) - .isEqualTo("ipv6")))), + AbstractDubboTest::assertNetworkType)), point -> point.hasAttributesSatisfyingExactly( equalTo( @@ -362,14 +318,7 @@ void testDubboChain() throws ReflectiveOperationException { SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> - assertThat(val).isEqualTo("ipv4"), - val -> - assertThat(val) - .isEqualTo("ipv6")))))))); + AbstractDubboTest::assertNetworkType)))))); } @Test @@ -435,23 +384,11 @@ void testDubboChainInJvm() throws ReflectiveOperationException { satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_PEER_ADDRESS, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(String.class))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(String.class))), satisfies( NETWORK_PEER_PORT, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isInstanceOf(Long.class))), - satisfies( - NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isEqualTo("ipv4"), - val -> assertThat(val).isEqualTo("ipv6")))), + k -> assertLatestDeps(k, a -> a.isInstanceOf(Long.class))), + satisfies(NETWORK_TYPE, AbstractDubboTest::assertNetworkType)), span -> span.hasName( "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.MiddleService/hello") @@ -466,14 +403,7 @@ void testDubboChainInJvm() throws ReflectiveOperationException { "io.opentelemetry.instrumentation.apachedubbo.v2_7.api.MiddleService"), 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, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> assertThat(val).isEqualTo("ipv4"), - val -> assertThat(val).isEqualTo("ipv6")))))); + satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class))))); testing() .waitAndAssertMetrics( @@ -525,13 +455,6 @@ void testDubboChainInJvm() throws ReflectiveOperationException { SERVER_PORT, k -> k.isInstanceOf(Long.class)), satisfies( NETWORK_TYPE, - k -> - k.satisfiesAnyOf( - val -> assertThat(val).isNull(), - val -> - assertThat(val).isEqualTo("ipv4"), - val -> - assertThat(val) - .isEqualTo("ipv6")))))))); + AbstractDubboTest::assertNetworkType)))))); } }