diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/DirectCamelTest.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/DirectCamelTest.java index 49d715e97bb0..48a1e5c9351d 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/DirectCamelTest.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/DirectCamelTest.java @@ -22,6 +22,7 @@ public class DirectCamelTest { @RegisterExtension public static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + private static ConfigurableApplicationContext server; @BeforeAll @@ -49,15 +50,15 @@ public void simpleDirectToSingleService() { testing.waitAndAssertTraces( trace -> trace.hasSpansSatisfyingExactly( - span -> span.hasName("input") - .hasKind(SpanKind.INTERNAL) - .hasNoParent() - .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://input"), - span -> span.hasName("receiver") - .hasKind(SpanKind.INTERNAL) - .hasParent(trace.getSpan(0)) - .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://receiver") - ) - ); + span -> + span.hasName("input") + .hasKind(SpanKind.INTERNAL) + .hasNoParent() + .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://input"), + span -> + span.hasName("receiver") + .hasKind(SpanKind.INTERNAL) + .hasParent(trace.getSpan(0)) + .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://receiver"))); } } diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/MulticastDirectCamelTest.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/MulticastDirectCamelTest.java index b2cd600f8b3c..a77271bd363d 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/MulticastDirectCamelTest.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/MulticastDirectCamelTest.java @@ -22,6 +22,7 @@ public class MulticastDirectCamelTest { @RegisterExtension public static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + private static ConfigurableApplicationContext server; @BeforeAll @@ -48,19 +49,20 @@ public void parallelMulticastToTwoChildServices() { testing.waitAndAssertTraces( trace -> trace.hasSpansSatisfyingExactlyInAnyOrder( - span -> span.hasName("input") - .hasKind(SpanKind.INTERNAL) - .hasNoParent() - .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://input"), - span -> span.hasName("first") - .hasKind(SpanKind.INTERNAL) - .hasParent(trace.getSpan(0)) - .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://first"), - span -> span.hasName("second") - .hasKind(SpanKind.INTERNAL) - .hasParent(trace.getSpan(0)) - .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://second") - ) - ); + span -> + span.hasName("input") + .hasKind(SpanKind.INTERNAL) + .hasNoParent() + .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://input"), + span -> + span.hasName("first") + .hasKind(SpanKind.INTERNAL) + .hasParent(trace.getSpan(0)) + .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://first"), + span -> + span.hasName("second") + .hasKind(SpanKind.INTERNAL) + .hasParent(trace.getSpan(0)) + .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://second"))); } } 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 0d12aa5b9fd1..37cabcfc323f 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 @@ -28,6 +28,7 @@ public class RestCamelTest extends RetryOnAddressAlreadyInUse { @RegisterExtension public static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + private static ConfigurableApplicationContext server; private static Integer port; @@ -60,71 +61,70 @@ public void restComponentServerAndClientCallWithJettyBackend() { // run client and server in separate threads to simulate "real" rest client/server call new Thread( - () -> template.sendBodyAndHeaders( - "direct:start", - null, - ImmutableMap.of("module", "firstModule", "unitId", "unitOne") - ) - ).start(); + () -> + template.sendBodyAndHeaders( + "direct:start", + null, + ImmutableMap.of("module", "firstModule", "unitId", "unitOne"))) + .start(); testing.waitAndAssertTraces( trace -> trace.hasSpansSatisfyingExactly( - span -> span.hasName("start") - .hasKind(SpanKind.INTERNAL) - .hasAttributesSatisfying( - equalTo(AttributeKey.stringKey("camel.uri"), "direct://start") - ), - span -> span.hasName("GET") - .hasKind(SpanKind.CLIENT) - .hasParentSpanId(trace.getSpan(0).getSpanId()) - .hasAttributesSatisfying( - equalTo(AttributeKey.stringKey("camel.uri"), - "rest://get:api/%7Bmodule%7D/unit/%7BunitId%7D"), - equalTo(SemanticAttributes.HTTP_METHOD, "GET"), - equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L) - ), - span -> span.hasName("GET /api/{module}/unit/{unitId}") - .hasKind(SpanKind.SERVER) - .hasParentSpanId(trace.getSpan(1).getSpanId()) - .hasAttributesSatisfying( - equalTo(SemanticAttributes.HTTP_SCHEME, "http"), - equalTo(SemanticAttributes.HTTP_TARGET, "/api/firstModule/unit/unitOne"), - equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), - equalTo(SemanticAttributes.HTTP_METHOD, "GET"), - equalTo(SemanticAttributes.HTTP_ROUTE, "/api/{module}/unit/{unitId}"), - equalTo(AttributeKey.stringKey("net.protocol.name"), "http"), - equalTo(AttributeKey.stringKey("net.protocol.version"), "1.1"), - equalTo(SemanticAttributes.NET_HOST_NAME, "localhost"), - equalTo(SemanticAttributes.NET_HOST_PORT, Long.valueOf(port)), - equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"), - equalTo(SemanticAttributes.NET_SOCK_HOST_ADDR, "127.0.0.1"), - satisfies( - SemanticAttributes.USER_AGENT_ORIGINAL, - val -> val.isInstanceOf(String.class) - ), - satisfies( - SemanticAttributes.NET_SOCK_PEER_PORT, - val -> val.isInstanceOf(Long.class) - ) - ), - span -> span.hasName("GET /api/{module}/unit/{unitId}") - .hasKind(SpanKind.INTERNAL) - .hasParentSpanId(trace.getSpan(2).getSpanId()) - .hasAttributesSatisfying( - equalTo(SemanticAttributes.HTTP_METHOD, "GET"), - equalTo(SemanticAttributes.HTTP_URL, - "http://localhost:" + port + "/api/firstModule/unit/unitOne"), - satisfies( - AttributeKey.stringKey("camel.uri"), - val -> val.isInstanceOf(String.class) - ) - ), - span -> span.hasName("moduleUnit") - .hasKind(SpanKind.INTERNAL) - .hasParentSpanId(trace.getSpan(3).getSpanId()) - .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://moduleUnit") - ) - ); + span -> + span.hasName("start") + .hasKind(SpanKind.INTERNAL) + .hasAttributesSatisfying( + equalTo(AttributeKey.stringKey("camel.uri"), "direct://start")), + span -> + span.hasName("GET") + .hasKind(SpanKind.CLIENT) + .hasParentSpanId(trace.getSpan(0).getSpanId()) + .hasAttributesSatisfying( + equalTo( + AttributeKey.stringKey("camel.uri"), + "rest://get:api/%7Bmodule%7D/unit/%7BunitId%7D"), + equalTo(SemanticAttributes.HTTP_METHOD, "GET"), + equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L)), + span -> + span.hasName("GET /api/{module}/unit/{unitId}") + .hasKind(SpanKind.SERVER) + .hasParentSpanId(trace.getSpan(1).getSpanId()) + .hasAttributesSatisfying( + equalTo(SemanticAttributes.HTTP_SCHEME, "http"), + equalTo( + SemanticAttributes.HTTP_TARGET, "/api/firstModule/unit/unitOne"), + equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), + equalTo(SemanticAttributes.HTTP_METHOD, "GET"), + equalTo(SemanticAttributes.HTTP_ROUTE, "/api/{module}/unit/{unitId}"), + equalTo(AttributeKey.stringKey("net.protocol.name"), "http"), + equalTo(AttributeKey.stringKey("net.protocol.version"), "1.1"), + equalTo(SemanticAttributes.NET_HOST_NAME, "localhost"), + equalTo(SemanticAttributes.NET_HOST_PORT, Long.valueOf(port)), + equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"), + equalTo(SemanticAttributes.NET_SOCK_HOST_ADDR, "127.0.0.1"), + satisfies( + SemanticAttributes.USER_AGENT_ORIGINAL, + val -> val.isInstanceOf(String.class)), + satisfies( + SemanticAttributes.NET_SOCK_PEER_PORT, + val -> val.isInstanceOf(Long.class))), + span -> + span.hasName("GET /api/{module}/unit/{unitId}") + .hasKind(SpanKind.INTERNAL) + .hasParentSpanId(trace.getSpan(2).getSpanId()) + .hasAttributesSatisfying( + equalTo(SemanticAttributes.HTTP_METHOD, "GET"), + equalTo( + SemanticAttributes.HTTP_URL, + "http://localhost:" + port + "/api/firstModule/unit/unitOne"), + satisfies( + AttributeKey.stringKey("camel.uri"), + val -> val.isInstanceOf(String.class))), + span -> + span.hasName("moduleUnit") + .hasKind(SpanKind.INTERNAL) + .hasParentSpanId(trace.getSpan(3).getSpanId()) + .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://moduleUnit"))); } } diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RestConfig.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RestConfig.java index bf5a4224a6b4..869f8120611d 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RestConfig.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RestConfig.java @@ -29,12 +29,9 @@ public void configure() throws Exception { .port("{{restServer.port}}") .producerComponent("http"); - rest("/api") - .get("/{module}/unit/{unitId}") - .to("direct:moduleUnit"); + rest("/api").get("/{module}/unit/{unitId}").to("direct:moduleUnit"); - from("direct:moduleUnit") - .transform().simple("${header.unitId} of ${header.module}"); + from("direct:moduleUnit").transform().simple("${header.unitId} of ${header.module}"); // producer - client route from("direct:start") diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RetryOnAddressAlreadyInUse.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RetryOnAddressAlreadyInUse.java index 19d4dd908faa..99096e551729 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RetryOnAddressAlreadyInUse.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/RetryOnAddressAlreadyInUse.java @@ -1,7 +1,12 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.javaagent.instrumentation.apachecamel; -import org.slf4j.LoggerFactory; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public abstract class RetryOnAddressAlreadyInUse { private static final Logger logger = LoggerFactory.getLogger(RetryOnAddressAlreadyInUse.class); @@ -14,7 +19,9 @@ static void withRetryOnAddressAlreadyInUse(Runnable closure, int numRetries) { try { closure.run(); } catch (Throwable t) { - if (numRetries == 0 || t.getMessage() == null || !t.getMessage().contains("Address already in use")) { + if (numRetries == 0 + || t.getMessage() == null + || !t.getMessage().contains("Address already in use")) { throw t; } logger.debug("retrying due to bind exception: {}", t.getMessage(), t); 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 6d4839be8c43..6d1b5ecb22f2 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 @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.apachecamel; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import com.google.common.collect.ImmutableMap; import io.opentelemetry.api.common.AttributeKey; @@ -13,6 +14,7 @@ import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; +import java.io.IOException; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -23,9 +25,6 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.springframework.boot.SpringApplication; import org.springframework.context.ConfigurableApplicationContext; -import java.io.IOException; - -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; public class SingleServiceCamelTest extends RetryOnAddressAlreadyInUse { @@ -63,25 +62,25 @@ public static void cleanupSpec() { public void singleCamelServiceSpan() throws IOException { String requestUrl = "http://localhost:" + port + "/camelService"; - Request request = new Request.Builder() - .url(requestUrl) - .post(RequestBody.create("testContent", MediaType.parse("text/plain"))) - .build(); + Request request = + new Request.Builder() + .url(requestUrl) + .post(RequestBody.create("testContent", MediaType.parse("text/plain"))) + .build(); client.newCall(request).execute(); testing.waitAndAssertTraces( trace -> trace.hasSpansSatisfyingExactly( - span -> span.hasName("POST /camelService") - .hasKind(SpanKind.SERVER) - .hasAttributesSatisfying( - equalTo(SemanticAttributes.HTTP_METHOD, "POST"), - equalTo(SemanticAttributes.HTTP_URL, requestUrl), - equalTo(AttributeKey.stringKey("camel.uri"), - requestUrl.replace("localhost", "0.0.0.0")) - ) - ) - ); + span -> + span.hasName("POST /camelService") + .hasKind(SpanKind.SERVER) + .hasAttributesSatisfying( + equalTo(SemanticAttributes.HTTP_METHOD, "POST"), + equalTo(SemanticAttributes.HTTP_URL, requestUrl), + equalTo( + AttributeKey.stringKey("camel.uri"), + requestUrl.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 7b0cd9e7c29c..3383262f9ddb 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 @@ -29,6 +29,7 @@ public class TwoServicesWithDirectClientCamelTest extends RetryOnAddressAlreadyInUse { @RegisterExtension public static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + private static ConfigurableApplicationContext server; private static CamelContext clientContext; @@ -47,8 +48,7 @@ public static void setupSpecUnderRetry() { portTwo = PortUtils.findOpenPort(); SpringApplication app = new SpringApplication(TwoServicesConfig.class); app.setDefaultProperties( - ImmutableMap.of("service.one.port", portOne, "service.two.port", portTwo) - ); + ImmutableMap.of("service.one.port", portOne, "service.two.port", portTwo)); server = app.run(); } @@ -62,15 +62,16 @@ public static void cleanupSpec() { public void createAndStartClient() throws Exception { clientContext = new DefaultCamelContext(); - clientContext.addRoutes(new RouteBuilder() { - @Override - public void configure() { - from("direct:input") - .log("SENT Client request") - .to("http://localhost:" + portOne + "/serviceOne") - .log("RECEIVED Client response"); - } - }); + clientContext.addRoutes( + new RouteBuilder() { + @Override + public void configure() { + from("direct:input") + .log("SENT Client request") + .to("http://localhost:" + portOne + "/serviceOne") + .log("RECEIVED Client response"); + } + }); clientContext.start(); } @@ -85,79 +86,85 @@ public void twoCamelServiceSpans() throws Exception { testing.waitAndAssertTraces( trace -> trace.hasSpansSatisfyingExactly( - span -> span.hasName("input") - .hasKind(SpanKind.INTERNAL) - .hasNoParent() - .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://input"), - span -> span.hasName("POST") - .hasKind(SpanKind.CLIENT) - .hasParentSpanId(trace.getSpan(0).getSpanId()) - .hasAttributesSatisfying( - equalTo(SemanticAttributes.HTTP_METHOD, "POST"), - equalTo(SemanticAttributes.HTTP_URL, - "http://localhost:" + portOne + "/serviceOne"), - equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), - equalTo(AttributeKey.stringKey("camel.uri"), - "http://localhost:" + portOne + "/serviceOne") - ), - span -> span.hasName("POST /serviceOne") - .hasKind(SpanKind.SERVER) - .hasParentSpanId(trace.getSpan(1).getSpanId()) - .hasAttributesSatisfying( - equalTo(SemanticAttributes.HTTP_METHOD, "POST"), - equalTo(SemanticAttributes.HTTP_URL, - "http://localhost:" + portOne + "/serviceOne"), - equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), - equalTo(AttributeKey.stringKey("camel.uri"), - "http://0.0.0.0:" + portOne + "/serviceOne") - ), - span -> span.hasName("POST") - .hasKind(SpanKind.CLIENT) - .hasParentSpanId(trace.getSpan(2).getSpanId()) - .hasAttributesSatisfying( - equalTo(SemanticAttributes.HTTP_METHOD, "POST"), - equalTo(SemanticAttributes.HTTP_URL, - "http://127.0.0.1:" + portTwo + "/serviceTwo"), - equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), - equalTo(AttributeKey.stringKey("camel.uri"), - "http://127.0.0.1:" + portTwo + "/serviceTwo") - ), - span -> span.hasName("POST /serviceTwo") - .hasKind(SpanKind.SERVER) - .hasParentSpanId(trace.getSpan(3).getSpanId()) - .hasAttributesSatisfying( - equalTo(SemanticAttributes.HTTP_METHOD, "POST"), - equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), - equalTo(SemanticAttributes.HTTP_SCHEME, "http"), - equalTo(SemanticAttributes.HTTP_TARGET, "/serviceTwo"), - equalTo(SemanticAttributes.USER_AGENT_ORIGINAL, - "Jakarta Commons-HttpClient/3.1"), - equalTo(SemanticAttributes.HTTP_ROUTE, "/serviceTwo"), - equalTo(AttributeKey.stringKey("net.protocol.name"), "http"), - equalTo(AttributeKey.stringKey("net.protocol.version"), "1.1"), - equalTo(SemanticAttributes.NET_HOST_NAME, "127.0.0.1"), - equalTo(SemanticAttributes.NET_HOST_PORT, portTwo), - equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"), - satisfies( - SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, - val -> val.isInstanceOf(Long.class) - ), - satisfies( - SemanticAttributes.NET_SOCK_PEER_PORT, - val -> val.isInstanceOf(Long.class) - ) - ), - span -> span.hasName("POST /serviceTwo") - .hasKind(SpanKind.INTERNAL) - .hasParentSpanId(trace.getSpan(4).getSpanId()) - .hasAttributesSatisfying( - equalTo(SemanticAttributes.HTTP_METHOD, "POST"), - equalTo(SemanticAttributes.HTTP_URL, - "http://127.0.0.1:" + portTwo + "/serviceTwo"), - equalTo(AttributeKey.stringKey("camel.uri"), - "jetty:http://0.0.0.0:" + portTwo + "/serviceTwo?arg=value") - ) - ) - ); + span -> + span.hasName("input") + .hasKind(SpanKind.INTERNAL) + .hasNoParent() + .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://input"), + span -> + span.hasName("POST") + .hasKind(SpanKind.CLIENT) + .hasParentSpanId(trace.getSpan(0).getSpanId()) + .hasAttributesSatisfying( + equalTo(SemanticAttributes.HTTP_METHOD, "POST"), + equalTo( + SemanticAttributes.HTTP_URL, + "http://localhost:" + portOne + "/serviceOne"), + equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), + equalTo( + AttributeKey.stringKey("camel.uri"), + "http://localhost:" + portOne + "/serviceOne")), + span -> + span.hasName("POST /serviceOne") + .hasKind(SpanKind.SERVER) + .hasParentSpanId(trace.getSpan(1).getSpanId()) + .hasAttributesSatisfying( + equalTo(SemanticAttributes.HTTP_METHOD, "POST"), + equalTo( + SemanticAttributes.HTTP_URL, + "http://localhost:" + portOne + "/serviceOne"), + equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), + equalTo( + AttributeKey.stringKey("camel.uri"), + "http://0.0.0.0:" + portOne + "/serviceOne")), + span -> + span.hasName("POST") + .hasKind(SpanKind.CLIENT) + .hasParentSpanId(trace.getSpan(2).getSpanId()) + .hasAttributesSatisfying( + equalTo(SemanticAttributes.HTTP_METHOD, "POST"), + equalTo( + SemanticAttributes.HTTP_URL, + "http://127.0.0.1:" + portTwo + "/serviceTwo"), + equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), + equalTo( + AttributeKey.stringKey("camel.uri"), + "http://127.0.0.1:" + portTwo + "/serviceTwo")), + span -> + span.hasName("POST /serviceTwo") + .hasKind(SpanKind.SERVER) + .hasParentSpanId(trace.getSpan(3).getSpanId()) + .hasAttributesSatisfying( + equalTo(SemanticAttributes.HTTP_METHOD, "POST"), + equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), + equalTo(SemanticAttributes.HTTP_SCHEME, "http"), + equalTo(SemanticAttributes.HTTP_TARGET, "/serviceTwo"), + equalTo( + SemanticAttributes.USER_AGENT_ORIGINAL, + "Jakarta Commons-HttpClient/3.1"), + equalTo(SemanticAttributes.HTTP_ROUTE, "/serviceTwo"), + equalTo(AttributeKey.stringKey("net.protocol.name"), "http"), + equalTo(AttributeKey.stringKey("net.protocol.version"), "1.1"), + equalTo(SemanticAttributes.NET_HOST_NAME, "127.0.0.1"), + equalTo(SemanticAttributes.NET_HOST_PORT, portTwo), + equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"), + satisfies( + SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, + val -> val.isInstanceOf(Long.class)), + satisfies( + SemanticAttributes.NET_SOCK_PEER_PORT, + val -> val.isInstanceOf(Long.class))), + span -> + span.hasName("POST /serviceTwo") + .hasKind(SpanKind.INTERNAL) + .hasParentSpanId(trace.getSpan(4).getSpanId()) + .hasAttributesSatisfying( + equalTo(SemanticAttributes.HTTP_METHOD, "POST"), + equalTo( + SemanticAttributes.HTTP_URL, + "http://127.0.0.1:" + portTwo + "/serviceTwo"), + equalTo( + AttributeKey.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/CassandraConfig.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraConfig.java index baee91455fb4..9b79a0bc7225 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraConfig.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/CassandraConfig.java @@ -20,8 +20,9 @@ RouteBuilder serviceRoute() { @Override public void configure() { from("direct:input") - .setHeader("CamelCqlQuery", simple("select * from test.users where id=1 ALLOW FILTERING")) - .toD("cql://{{cassandra.host}}:{{cassandra.port}}/test"); + .setHeader( + "CamelCqlQuery", simple("select * from test.users where id=1 ALLOW FILTERING")) + .toD("cql://{{cassandra.host}}:{{cassandra.port}}/test"); } }; } 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 9f42b584bb44..3bf1c8bfcf30 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 @@ -1,5 +1,12 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.javaagent.instrumentation.apachecamel.decorators; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; + import com.datastax.oss.driver.api.core.CqlSession; import com.google.common.collect.ImmutableMap; import io.opentelemetry.api.common.AttributeKey; @@ -20,8 +27,6 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; - @Testcontainers public class CassandraTest extends RetryOnAddressAlreadyInUse { @@ -46,13 +51,14 @@ public static void setupSpec() { } private static void cassandraSetup() { - cqlSession = CqlSession - .builder() - .addContactPoint(cassandra.getContactPoint()) - .withLocalDatacenter(cassandra.getLocalDatacenter()) - .build(); - - cqlSession.execute("CREATE KEYSPACE IF NOT EXISTS test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};"); + cqlSession = + CqlSession.builder() + .addContactPoint(cassandra.getContactPoint()) + .withLocalDatacenter(cassandra.getLocalDatacenter()) + .build(); + + cqlSession.execute( + "CREATE KEYSPACE IF NOT EXISTS test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};"); cqlSession.execute("CREATE TABLE IF NOT EXISTS test.users (id int PRIMARY KEY, name TEXT);"); } @@ -64,9 +70,7 @@ public static void setupSpecUnderRetry() { host = cassandra.getHost(); SpringApplication app = new SpringApplication(CassandraConfig.class); - app.setDefaultProperties( - ImmutableMap.of("cassandra.host", host, "cassandra.port", port) - ); + app.setDefaultProperties(ImmutableMap.of("cassandra.host", host, "cassandra.port", port)); server = app.run(); } @@ -90,17 +94,20 @@ public void testCassandra() { testing.waitAndAssertTraces( trace -> trace.hasSpansSatisfyingExactly( - span -> span.hasKind(SpanKind.INTERNAL) - .hasNoParent() - .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://input"), - span -> span.hasKind(SpanKind.CLIENT) - .hasAttributesSatisfying( - equalTo(AttributeKey.stringKey("camel.uri"), "cql://" + host + ":" + port + "/test"), - equalTo(SemanticAttributes.DB_NAME, "test"), - equalTo(SemanticAttributes.DB_STATEMENT, "select * from test.users where id=? ALLOW FILTERING"), - equalTo(SemanticAttributes.DB_SYSTEM, "cassandra") - ) - ) - ); + span -> + span.hasKind(SpanKind.INTERNAL) + .hasNoParent() + .hasAttribute(AttributeKey.stringKey("camel.uri"), "direct://input"), + span -> + span.hasKind(SpanKind.CLIENT) + .hasAttributesSatisfying( + equalTo( + AttributeKey.stringKey("camel.uri"), + "cql://" + host + ":" + port + "/test"), + equalTo(SemanticAttributes.DB_NAME, "test"), + equalTo( + SemanticAttributes.DB_STATEMENT, + "select * from test.users where id=? ALLOW FILTERING"), + equalTo(SemanticAttributes.DB_SYSTEM, "cassandra")))); } }