From bb90e0835a571a2464c8cca0bbe39dd01a24c9e2 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sat, 26 Oct 2024 15:01:29 -0700 Subject: [PATCH] Fix some assertions (#12520) --- .../azurecore/v1_14/AzureSdkTest.java | 2 +- .../azurecore/v1_19/AzureSdkTest.java | 2 +- .../azurecore/v1_36/AzureSdkTest.java | 5 +++- .../azurecore/v1_36/AzureSdkTestOld.java | 2 +- .../src/test/java/test/GrailsTest.java | 25 +++++++++++++++---- .../graphql/AbstractGraphqlTest.java | 4 +-- .../jetty/v11_0/JettyHandlerTest.java | 16 +++++++++--- .../jetty/v12_0/Jetty12HandlerTest.java | 16 +++++++++--- .../jetty/v8_0/JettyHandlerTest.java | 16 +++++++++--- .../boot/AbstractSpringBootBasedTest.java | 2 +- .../filter/AbstractServletFilterTest.java | 2 +- .../tomcat/v10_0/TomcatAsyncTest.java | 22 +++++++++++----- .../tomcat/v10_0/TomcatHandlerTest.java | 22 +++++++++++----- .../tomcat/v7_0/TomcatAsyncTest.java | 22 +++++++++++----- .../tomcat/v7_0/TomcatHandlerTest.java | 22 +++++++++++----- 15 files changed, 131 insertions(+), 49 deletions(-) diff --git a/instrumentation/azure-core/azure-core-1.14/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkTest.java b/instrumentation/azure-core/azure-core-1.14/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkTest.java index bceda620a0c2..066330a16f55 100644 --- a/instrumentation/azure-core/azure-core-1.14/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkTest.java +++ b/instrumentation/azure-core/azure-core-1.14/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkTest.java @@ -55,6 +55,6 @@ void testSpan() { span.hasName("hello") .hasKind(SpanKind.INTERNAL) .hasStatus(StatusData.ok()) - .hasAttributesSatisfying(Attributes::isEmpty))); + .hasAttributes(Attributes.empty()))); } } diff --git a/instrumentation/azure-core/azure-core-1.19/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkTest.java b/instrumentation/azure-core/azure-core-1.19/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkTest.java index ae3cea3b7ed4..c723d9b37e5a 100644 --- a/instrumentation/azure-core/azure-core-1.19/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkTest.java +++ b/instrumentation/azure-core/azure-core-1.19/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkTest.java @@ -55,6 +55,6 @@ void testSpan() { span.hasName("hello") .hasKind(SpanKind.INTERNAL) .hasStatus(StatusData.ok()) - .hasAttributesSatisfying(Attributes::isEmpty))); + .hasAttributes(Attributes.empty()))); } } 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 f3be2c2129d0..f27cc23d7246 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 @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.azurecore.v1_36; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static org.assertj.core.api.Assertions.assertThat; import com.azure.core.annotation.ExpectedResponses; @@ -22,6 +23,7 @@ import com.azure.core.util.ClientOptions; import com.azure.core.util.Context; import com.azure.core.util.TracingOptions; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.api.internal.SpanKey; @@ -66,7 +68,8 @@ void testSpan() { span.hasName("hello") .hasKind(SpanKind.INTERNAL) .hasStatus(StatusData.unset()) - .hasAttributesSatisfying(Attributes::isEmpty))); + .hasAttributesSatisfyingExactly( + equalTo(AttributeKey.stringKey("az.namespace"), "otel.tests")))); } @Test diff --git a/instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTestOld.java b/instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTestOld.java index 650f84ebeecb..6145cfe5458d 100644 --- a/instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTestOld.java +++ b/instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTestOld.java @@ -50,7 +50,7 @@ void testSpan() { span.hasName("hello") .hasKind(SpanKind.INTERNAL) .hasStatus(StatusData.unset()) - .hasAttributesSatisfying(Attributes::isEmpty))); + .hasAttributes(Attributes.empty()))); } private static com.azure.core.util.tracing.Tracer createAzTracer() { diff --git a/instrumentation/grails-3.0/javaagent/src/test/java/test/GrailsTest.java b/instrumentation/grails-3.0/javaagent/src/test/java/test/GrailsTest.java index 11abd923af40..e8d42efd8169 100644 --- a/instrumentation/grails-3.0/javaagent/src/test/java/test/GrailsTest.java +++ b/instrumentation/grails-3.0/javaagent/src/test/java/test/GrailsTest.java @@ -14,6 +14,8 @@ 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.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import grails.boot.GrailsApp; import grails.boot.config.GrailsAutoConfiguration; @@ -27,6 +29,7 @@ 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.incubating.CodeIncubatingAttributes; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -35,6 +38,7 @@ import java.util.Locale; import java.util.Map; import java.util.function.Consumer; +import org.assertj.core.api.AbstractStringAssert; import org.junit.jupiter.api.extension.RegisterExtension; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.web.ServerProperties; @@ -160,12 +164,19 @@ public SpanDataAssert assertHandlerSpan( @Override public SpanDataAssert assertResponseSpan( SpanDataAssert span, String method, ServerEndpoint endpoint) { + String methodName; if (endpoint == REDIRECT) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendRedirect")); + methodName = "sendRedirect"; + } else if (endpoint == ERROR || endpoint == NOT_FOUND) { + methodName = "sendError"; } else { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendError")); + throw new AssertionError("Unexpected endpoint: " + endpoint.name()); } - span.hasKind(SpanKind.INTERNAL).hasAttributesSatisfying(Attributes::isEmpty); + span.hasKind(SpanKind.INTERNAL) + .satisfies(spanData -> assertThat(spanData.getName()).endsWith("." + methodName)) + .hasAttributesSatisfyingExactly( + equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName), + satisfies(CodeIncubatingAttributes.CODE_NAMESPACE, AbstractStringAssert::isNotEmpty)); return span; } @@ -178,13 +189,17 @@ public List> errorPageSpanAssertions( span.hasName( endpoint == NOT_FOUND ? "ErrorController.notFound" : "ErrorController.index") .hasKind(SpanKind.INTERNAL) - .hasAttributesSatisfying(Attributes::isEmpty)); + .hasAttributes(Attributes.empty())); if (endpoint == NOT_FOUND) { spanAssertions.add( span -> span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendError")) .hasKind(SpanKind.INTERNAL) - .hasAttributesSatisfying(Attributes::isEmpty)); + .hasAttributesSatisfyingExactly( + equalTo(CodeIncubatingAttributes.CODE_FUNCTION, "sendError"), + satisfies( + CodeIncubatingAttributes.CODE_NAMESPACE, + AbstractStringAssert::isNotEmpty))); } return spanAssertions; } 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 fc40a585170b..afc4da0ca6bc 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 @@ -238,7 +238,7 @@ void parseError() { span.hasName("GraphQL Operation") .hasKind(SpanKind.INTERNAL) .hasNoParent() - .hasAttributesSatisfying(Attributes::isEmpty) + .hasAttributes(Attributes.empty()) .hasStatus(StatusData.error()) .hasEventsSatisfyingExactly( event -> @@ -280,7 +280,7 @@ void validationError() { span.hasName("GraphQL Operation") .hasKind(SpanKind.INTERNAL) .hasNoParent() - .hasAttributesSatisfying(Attributes::isEmpty) + .hasAttributes(Attributes.empty()) .hasStatus(StatusData.error()) .hasEventsSatisfyingExactly( event -> 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 4b7fd9f9d3b8..126b79a1da43 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 @@ -14,10 +14,10 @@ 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.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.collect.Sets; -import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest; @@ -26,6 +26,7 @@ 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; import jakarta.servlet.http.HttpServletRequest; @@ -89,12 +90,19 @@ protected void configure(HttpServerTestOptions options) { @Override protected SpanDataAssert assertResponseSpan( SpanDataAssert span, String method, ServerEndpoint endpoint) { + String methodName; if (endpoint == REDIRECT) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendRedirect")); + methodName = "sendRedirect"; } else if (endpoint == ERROR) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendError")); + methodName = "sendError"; + } else { + throw new AssertionError("Unexpected endpoint: " + endpoint.name()); } - span.hasKind(SpanKind.INTERNAL).hasAttributesSatisfying(Attributes::isEmpty); + span.hasKind(SpanKind.INTERNAL) + .satisfies(spanData -> assertThat(spanData.getName()).endsWith("." + methodName)) + .hasAttributesSatisfyingExactly( + equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName), + equalTo(CodeIncubatingAttributes.CODE_NAMESPACE, "org.eclipse.jetty.server.Response")); return span; } 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 46b178e06561..9d0e5e728f00 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 @@ -14,10 +14,10 @@ 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.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.collect.Sets; -import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest; @@ -26,6 +26,7 @@ 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; import java.util.Collections; @@ -69,12 +70,19 @@ protected void configure(HttpServerTestOptions options) { @Override protected SpanDataAssert assertResponseSpan( SpanDataAssert span, String method, ServerEndpoint endpoint) { + String methodName; if (endpoint == REDIRECT) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendRedirect")); + methodName = "sendRedirect"; } else if (endpoint == ERROR) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendError")); + methodName = "sendError"; + } else { + throw new AssertionError("Unexpected endpoint: " + endpoint.name()); } - span.hasKind(SpanKind.INTERNAL).hasAttributesSatisfying(Attributes::isEmpty); + span.hasKind(SpanKind.INTERNAL) + .satisfies(spanData -> assertThat(spanData.getName()).endsWith("." + methodName)) + .hasAttributesSatisfyingExactly( + equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName), + equalTo(CodeIncubatingAttributes.CODE_NAMESPACE, "org.eclipse.jetty.server.Response")); return span; } 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 b18f7a292065..30b119a60c8f 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 @@ -14,10 +14,10 @@ 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.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.collect.Sets; -import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest; @@ -26,6 +26,7 @@ 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; import java.util.Collections; @@ -89,12 +90,19 @@ protected void configure(HttpServerTestOptions options) { @Override protected SpanDataAssert assertResponseSpan( SpanDataAssert span, String method, ServerEndpoint endpoint) { + String methodName; if (endpoint == REDIRECT) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendRedirect")); + methodName = "sendRedirect"; } else if (endpoint == ERROR) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendError")); + methodName = "sendError"; + } else { + throw new AssertionError("Unexpected endpoint: " + endpoint.name()); } - span.hasKind(SpanKind.INTERNAL).hasAttributesSatisfying(Attributes::isEmpty); + span.hasKind(SpanKind.INTERNAL) + .satisfies(spanData -> assertThat(spanData.getName()).endsWith("." + methodName)) + .hasAttributesSatisfyingExactly( + equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName), + equalTo(CodeIncubatingAttributes.CODE_NAMESPACE, "org.eclipse.jetty.server.Response")); return span; } diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-common/testing/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/boot/AbstractSpringBootBasedTest.java b/instrumentation/spring/spring-webmvc/spring-webmvc-common/testing/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/boot/AbstractSpringBootBasedTest.java index 0147d8f672bc..eab035be29fe 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-common/testing/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/boot/AbstractSpringBootBasedTest.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-common/testing/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/boot/AbstractSpringBootBasedTest.java @@ -149,7 +149,7 @@ protected List> errorPageSpanAssertions( span -> span.hasName("BasicErrorController.error") .hasKind(SpanKind.INTERNAL) - .hasAttributesSatisfying(Attributes::isEmpty)); + .hasAttributes(Attributes.empty())); return spanAssertions; } diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-common/testing/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/filter/AbstractServletFilterTest.java b/instrumentation/spring/spring-webmvc/spring-webmvc-common/testing/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/filter/AbstractServletFilterTest.java index 70587e31039e..db292d9224ba 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-common/testing/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/filter/AbstractServletFilterTest.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-common/testing/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/filter/AbstractServletFilterTest.java @@ -98,7 +98,7 @@ protected List> errorPageSpanAssertions( span -> span.hasName("BasicErrorController.error") .hasKind(SpanKind.INTERNAL) - .hasAttributesSatisfying(Attributes::isEmpty)); + .hasAttributes(Attributes.empty())); return spanAssertions; } diff --git a/instrumentation/tomcat/tomcat-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/TomcatAsyncTest.java b/instrumentation/tomcat/tomcat-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/TomcatAsyncTest.java index 9d89fbf376dc..4a08cc9c7a83 100644 --- a/instrumentation/tomcat/tomcat-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/TomcatAsyncTest.java +++ b/instrumentation/tomcat/tomcat-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/TomcatAsyncTest.java @@ -14,9 +14,10 @@ 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.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.api.internal.HttpConstants; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -25,6 +26,7 @@ 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.incubating.CodeIncubatingAttributes; import jakarta.servlet.Servlet; import java.io.File; import java.nio.file.Files; @@ -32,6 +34,7 @@ import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; +import org.assertj.core.api.AbstractStringAssert; import org.junit.jupiter.api.extension.RegisterExtension; class TomcatAsyncTest extends AbstractHttpServerTest { @@ -116,12 +119,19 @@ protected void configure(HttpServerTestOptions options) { @Override protected SpanDataAssert assertResponseSpan( SpanDataAssert span, String method, ServerEndpoint endpoint) { - if (endpoint.equals(REDIRECT)) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendRedirect")); - } else if (endpoint.equals(NOT_FOUND)) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendError")); + String methodName; + if (endpoint == REDIRECT) { + methodName = "sendRedirect"; + } else if (endpoint == NOT_FOUND) { + methodName = "sendError"; + } else { + throw new AssertionError("Unexpected endpoint: " + endpoint.name()); } - span.hasKind(SpanKind.INTERNAL).hasAttributesSatisfying(Attributes::isEmpty); + span.hasKind(SpanKind.INTERNAL) + .satisfies(spanData -> assertThat(spanData.getName()).endsWith("." + methodName)) + .hasAttributesSatisfyingExactly( + equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName), + satisfies(CodeIncubatingAttributes.CODE_NAMESPACE, AbstractStringAssert::isNotEmpty)); return span; } } diff --git a/instrumentation/tomcat/tomcat-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/TomcatHandlerTest.java b/instrumentation/tomcat/tomcat-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/TomcatHandlerTest.java index ad304e683afc..74e666f7a7c9 100644 --- a/instrumentation/tomcat/tomcat-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/TomcatHandlerTest.java +++ b/instrumentation/tomcat/tomcat-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/TomcatHandlerTest.java @@ -18,10 +18,11 @@ 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.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.api.internal.HttpConstants; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -30,6 +31,7 @@ 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.incubating.CodeIncubatingAttributes; import java.io.File; import java.nio.file.Files; import java.util.List; @@ -37,6 +39,7 @@ import org.apache.catalina.LifecycleException; import org.apache.catalina.core.StandardHost; import org.apache.catalina.startup.Tomcat; +import org.assertj.core.api.AbstractStringAssert; import org.junit.jupiter.api.extension.RegisterExtension; class TomcatHandlerTest extends AbstractHttpServerTest { @@ -116,12 +119,19 @@ protected void configure(HttpServerTestOptions options) { @Override protected SpanDataAssert assertResponseSpan( SpanDataAssert span, String method, ServerEndpoint endpoint) { - if (endpoint.equals(REDIRECT)) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendRedirect")); - } else if (endpoint.equals(NOT_FOUND)) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendError")); + String methodName; + if (endpoint == REDIRECT) { + methodName = "sendRedirect"; + } else if (endpoint == NOT_FOUND || endpoint == ERROR) { + methodName = "sendError"; + } else { + throw new AssertionError("Unexpected endpoint: " + endpoint.name()); } - span.hasKind(SpanKind.INTERNAL).hasAttributesSatisfying(Attributes::isEmpty); + span.hasKind(SpanKind.INTERNAL) + .satisfies(spanData -> assertThat(spanData.getName()).endsWith("." + methodName)) + .hasAttributesSatisfyingExactly( + equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName), + satisfies(CodeIncubatingAttributes.CODE_NAMESPACE, AbstractStringAssert::isNotEmpty)); return span; } } diff --git a/instrumentation/tomcat/tomcat-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/TomcatAsyncTest.java b/instrumentation/tomcat/tomcat-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/TomcatAsyncTest.java index 3853768973c7..abe4e5e5eafe 100644 --- a/instrumentation/tomcat/tomcat-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/TomcatAsyncTest.java +++ b/instrumentation/tomcat/tomcat-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/TomcatAsyncTest.java @@ -14,9 +14,10 @@ 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.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.api.internal.HttpConstants; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -25,12 +26,14 @@ 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.incubating.CodeIncubatingAttributes; import java.io.File; import java.nio.file.Files; import java.util.UUID; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; +import org.assertj.core.api.AbstractStringAssert; import org.junit.jupiter.api.extension.RegisterExtension; class TomcatAsyncTest extends AbstractHttpServerTest { @@ -111,12 +114,19 @@ protected void configure(HttpServerTestOptions options) { @Override protected SpanDataAssert assertResponseSpan( SpanDataAssert span, String method, ServerEndpoint endpoint) { - if (endpoint.equals(REDIRECT)) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendRedirect")); - } else if (endpoint.equals(NOT_FOUND)) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendError")); + String methodName; + if (endpoint == REDIRECT) { + methodName = "sendRedirect"; + } else if (endpoint == NOT_FOUND) { + methodName = "sendError"; + } else { + throw new AssertionError("Unexpected endpoint: " + endpoint.name()); } - span.hasKind(SpanKind.INTERNAL).hasAttributesSatisfying(Attributes::isEmpty); + span.hasKind(SpanKind.INTERNAL) + .satisfies(spanData -> assertThat(spanData.getName()).endsWith("." + methodName)) + .hasAttributesSatisfyingExactly( + equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName), + satisfies(CodeIncubatingAttributes.CODE_NAMESPACE, AbstractStringAssert::isNotEmpty)); return span; } } diff --git a/instrumentation/tomcat/tomcat-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/TomcatHandlerTest.java b/instrumentation/tomcat/tomcat-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/TomcatHandlerTest.java index 286f525ac236..23f1b4be3fd0 100644 --- a/instrumentation/tomcat/tomcat-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/TomcatHandlerTest.java +++ b/instrumentation/tomcat/tomcat-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/TomcatHandlerTest.java @@ -18,10 +18,11 @@ 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.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.api.internal.HttpConstants; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -30,6 +31,7 @@ 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.incubating.CodeIncubatingAttributes; import java.io.File; import java.nio.file.Files; import java.util.List; @@ -37,6 +39,7 @@ import org.apache.catalina.LifecycleException; import org.apache.catalina.core.StandardHost; import org.apache.catalina.startup.Tomcat; +import org.assertj.core.api.AbstractStringAssert; import org.junit.jupiter.api.extension.RegisterExtension; class TomcatHandlerTest extends AbstractHttpServerTest { @@ -116,12 +119,19 @@ protected void configure(HttpServerTestOptions options) { @Override protected SpanDataAssert assertResponseSpan( SpanDataAssert span, String method, ServerEndpoint endpoint) { - if (endpoint.equals(REDIRECT)) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendRedirect")); - } else if (endpoint.equals(NOT_FOUND)) { - span.satisfies(spanData -> assertThat(spanData.getName()).endsWith(".sendError")); + String methodName; + if (endpoint == REDIRECT) { + methodName = "sendRedirect"; + } else if (endpoint == NOT_FOUND || endpoint == ERROR) { + methodName = "sendError"; + } else { + throw new AssertionError("Unexpected endpoint: " + endpoint.name()); } - span.hasKind(SpanKind.INTERNAL).hasAttributesSatisfying(Attributes::isEmpty); + span.hasKind(SpanKind.INTERNAL) + .satisfies(spanData -> assertThat(spanData.getName()).endsWith("." + methodName)) + .hasAttributesSatisfyingExactly( + equalTo(CodeIncubatingAttributes.CODE_FUNCTION, methodName), + satisfies(CodeIncubatingAttributes.CODE_NAMESPACE, AbstractStringAssert::isNotEmpty)); return span; } }