diff --git a/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java b/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java index 776e520a17f5c..e8b931456f686 100644 --- a/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java +++ b/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java @@ -151,9 +151,9 @@ protected SpanAdapter startExchangeBeginSpan( Exchange exchange, SpanDecorator sd, String operationName, org.apache.camel.tracing.SpanKind kind, SpanAdapter parent) { boolean parentPresent = parent != null; - Observation.Context context - = parentPresent ? new Observation.Context() : spanKindToContextOnExtract(kind, sd, exchange); - context.put(SPAN_DECORATOR_INTERNAL, sd instanceof AbstractInternalSpanDecorator); + Observation.Context context = spanKindToContextOnExtract(kind, sd, exchange); + boolean internalSpanDecorator = sd instanceof AbstractInternalSpanDecorator; + context.put(SPAN_DECORATOR_INTERNAL, internalSpanDecorator); Observation observation = Observation.createNotStarted(operationName, () -> context, observationRegistry); if (parentPresent) { observation.parentObservation(getParentObservation(parent)); diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/ABCRouteTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/ABCRouteTest.java index 62a7bfa613608..1822cdb1ad211 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/ABCRouteTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/ABCRouteTest.java @@ -24,13 +24,28 @@ class ABCRouteTest extends CamelMicrometerObservationTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") - .setParentId(2), + .setKind(SpanKind.SERVER) + .setParentId(1), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setKind(SpanKind.CLIENT) + .setParentId(4), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(2), - new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.SERVER) .setParentId(3), + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setKind(SpanKind.CLIENT) + .setParentId(4), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.SERVER) + .setParentId(5), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.CLIENT) + .setParentId(6), new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") .setKind(SpanKind.SERVER) + .setParentId(7), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; ABCRouteTest() { diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java b/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java index 3cf3b4cde6e1b..c3ffbb9c458cd 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java @@ -39,10 +39,13 @@ import io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext; import io.micrometer.tracing.otel.bridge.OtelPropagator; import io.micrometer.tracing.otel.bridge.OtelTracer; +import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.ContextPropagators; +import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.extension.trace.propagation.B3Propagator; import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter; import io.opentelemetry.sdk.trace.ReadWriteSpan; @@ -99,7 +102,7 @@ protected CamelContext createCamelContext() throws Exception { io.micrometer.tracing.Tracer otelTracer = otelTracer(); OtelPropagator otelPropagator - = new OtelPropagator(ContextPropagators.create(B3Propagator.injectingSingleHeader()), tracer); + = new OtelPropagator(ContextPropagators.create(TextMapPropagator.composite(W3CTraceContextPropagator.getInstance(), W3CBaggagePropagator.getInstance())), tracer); observationRegistry.observationConfig().observationHandler( new ObservationHandler.FirstMatchingCompositeObservationHandler( new PropagatingSenderTracingObservationHandler<>(otelTracer, otelPropagator), diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/ClientRecipientListRouteTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/ClientRecipientListRouteTest.java index 672cf40598c0d..10f87b9554569 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/ClientRecipientListRouteTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/ClientRecipientListRouteTest.java @@ -25,13 +25,28 @@ class ClientRecipientListRouteTest extends CamelMicrometerObservationTestSupport private static SpanTestData[] testdata = { new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") - .setParentId(3), + .setKind(SpanKind.SERVER) + .setParentId(1), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setParentId(6) + .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setKind(SpanKind.SERVER) .setParentId(3), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setParentId(6) + .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(3), + .setKind(SpanKind.SERVER) + .setParentId(5), + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setParentId(6) + .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") .setKind(SpanKind.SERVER) + .setParentId(7), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; ClientRecipientListRouteTest() { diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/CurrentSpanTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/CurrentSpanTest.java index 04b1bed27a279..158e5b8290a45 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/CurrentSpanTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/CurrentSpanTest.java @@ -75,7 +75,9 @@ void testSync() { SpanTestData[] expectedSpans = { new SpanTestData().setLabel("syncmock:result").setUri("syncmock://result").setOperation("syncmock") .setKind(SpanKind.CLIENT), - new SpanTestData().setLabel("direct:bar").setUri("direct://bar").setOperation("bar").setKind(SpanKind.SERVER) + new SpanTestData().setLabel("direct:bar").setUri("direct://bar").setOperation("bar") + .setKind(SpanKind.SERVER), + new SpanTestData().setLabel("direct:bar").setUri("direct://bar").setOperation("bar").setKind(SpanKind.CLIENT) }; // sync pipeline @@ -93,7 +95,9 @@ void testSyncToAsync() { SpanTestData[] expectedSpans = { new SpanTestData().setLabel("asyncmock1:result").setUri("asyncmock1://result").setOperation("asyncmock1") .setKind(SpanKind.CLIENT), - new SpanTestData().setLabel("direct:foo").setUri("direct://foo").setOperation("foo").setKind(SpanKind.SERVER) + new SpanTestData().setLabel("direct:foo").setUri("direct://foo").setOperation("foo") + .setKind(SpanKind.SERVER), + new SpanTestData().setLabel("direct:foo").setUri("direct://foo").setOperation("foo").setKind(SpanKind.CLIENT) }; // sync to async pipeline @@ -112,7 +116,8 @@ void testAsyncToSync() { SpanTestData[] expectedSpans = { new SpanTestData().setLabel("syncmock:result").setUri("syncmock://result").setOperation("syncmock") .setKind(SpanKind.CLIENT), - new SpanTestData().setLabel("asyncmock1:start").setUri("asyncmock1://start").setOperation("asyncmock1"), + new SpanTestData().setLabel("asyncmock1:start").setUri("asyncmock1://start").setOperation("asyncmock1") + .setKind(SpanKind.SERVER), new SpanTestData().setLabel("asyncmock1:start").setUri("asyncmock1://start").setOperation("asyncmock1") .setKind(SpanKind.CLIENT), }; @@ -130,7 +135,8 @@ void testAsyncToAsync() { SpanTestData[] expectedSpans = { new SpanTestData().setLabel("asyncmock2:result").setUri("asyncmock2://result").setOperation("asyncmock2") .setKind(SpanKind.CLIENT), - new SpanTestData().setLabel("asyncmock2:start").setUri("asyncmock2://start").setOperation("asyncmock2"), + new SpanTestData().setLabel("asyncmock2:start").setUri("asyncmock2://start").setOperation("asyncmock2") + .setKind(SpanKind.SERVER), new SpanTestData().setLabel("asyncmock2:start").setUri("asyncmock2://start").setOperation("asyncmock2") .setKind(SpanKind.CLIENT), }; @@ -146,7 +152,8 @@ void testAsyncToAsync() { @Test void testAsyncFailure() { SpanTestData[] expectedSpans = { - new SpanTestData().setLabel("asyncmock:fail").setUri("asyncmock://fail").setOperation("asyncmock"), + new SpanTestData().setLabel("asyncmock:fail").setUri("asyncmock://fail").setOperation("asyncmock") + .setKind(SpanKind.SERVER), new SpanTestData().setLabel("asyncmock:fail").setUri("asyncmock://fail").setOperation("asyncmock") .setKind(SpanKind.CLIENT), }; @@ -172,7 +179,9 @@ void testMulticastAsync() { new SpanTestData().setLabel("syncmock:result").setUri("syncmock://result").setOperation("syncmock") .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("direct:start").setUri("direct://start").setOperation("start") - .setKind(SpanKind.SERVER) + .setKind(SpanKind.SERVER), + new SpanTestData().setLabel("direct:start").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; // sync pipeline @@ -192,7 +201,7 @@ void testContextDoesNotLeak() { assertFalse(Span.current().getSpanContext().isValid()); } - verifyTraceSpanNumbers(30, 10); + verifyTraceSpanNumbers(30, 11); } @Override diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/CustomComponentNameRouteTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/CustomComponentNameRouteTest.java index 3ad1b7e4512b1..f815c995baa41 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/CustomComponentNameRouteTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/CustomComponentNameRouteTest.java @@ -25,13 +25,25 @@ class CustomComponentNameRouteTest extends CamelMicrometerObservationTestSupport private static SpanTestData[] testdata = { new SpanTestData().setLabel("myseda:b server").setUri("myseda://b").setOperation("b") - .setParentId(2), + .setKind(SpanKind.SERVER) + .setParentId(1), + new SpanTestData().setLabel("myseda:b server").setUri("myseda://b").setOperation("b").setKind(SpanKind.CLIENT) + .setParentId(4), new SpanTestData().setLabel("myseda:c server").setUri("myseda://c").setOperation("c") - .setParentId(2), - new SpanTestData().setLabel("myseda:a server").setUri("myseda://a").setOperation("a") + .setKind(SpanKind.SERVER) .setParentId(3), - new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + new SpanTestData().setLabel("myseda:c server").setUri("myseda://c").setOperation("c").setKind(SpanKind.CLIENT) + .setParentId(4), + new SpanTestData().setLabel("myseda:a server").setUri("myseda://a").setOperation("a") .setKind(SpanKind.SERVER) + .setParentId(5), + new SpanTestData().setLabel("myseda:a server").setUri("myseda://a").setOperation("a") + .setParentId(6) + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.SERVER).setParentId(7), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; CustomComponentNameRouteTest() { diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/MulticastParallelRouteTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/MulticastParallelRouteTest.java index da08d83ad8fc1..ee8e38b0a7830 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/MulticastParallelRouteTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/MulticastParallelRouteTest.java @@ -25,13 +25,27 @@ class MulticastParallelRouteTest extends CamelMicrometerObservationTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") - .setParentId(2), + .setKind(SpanKind.SERVER) + .setParentId(1), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setParentId(4) + .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(2), - new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.SERVER) .setParentId(3), - new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setParentId(4) + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") .setKind(SpanKind.SERVER) + .setParentId(5), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setParentId(6) + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.SERVER).setParentId(7), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; MulticastParallelRouteTest() { diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/MulticastRouteTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/MulticastRouteTest.java index acad5fa2d65b1..2b50680b2f91e 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/MulticastRouteTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/MulticastRouteTest.java @@ -25,13 +25,26 @@ class MulticastRouteTest extends CamelMicrometerObservationTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") - .setParentId(2), + .setKind(SpanKind.SERVER) + .setParentId(1), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setKind(SpanKind.CLIENT) + .setParentId(4), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(2), - new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.SERVER) .setParentId(3), - new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setKind(SpanKind.CLIENT) + .setParentId(4), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") .setKind(SpanKind.SERVER) + .setParentId(5), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.CLIENT) + .setParentId(6), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.SERVER).setParentId(7), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start").setKind(SpanKind.CLIENT) }; MulticastRouteTest() { diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/RouteConcurrentTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/RouteConcurrentTest.java index 937c12fdd8dfe..9ab0dbaabdd8b 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/RouteConcurrentTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/RouteConcurrentTest.java @@ -29,10 +29,17 @@ class RouteConcurrentTest extends CamelMicrometerObservationTestSupport { private static SpanTestData[] testdata = { + new SpanTestData().setLabel("seda:foo server").setUri("seda://foo").setOperation("foo") + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("seda:bar server").setUri("seda://bar").setOperation("bar") + .setParentId(2) + .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("seda:foo server").setUri("seda://foo?concurrentConsumers=5").setOperation("foo") - .setKind(SpanKind.SERVER), + .setKind(SpanKind.SERVER) + .setParentId(0), new SpanTestData().setLabel("seda:bar server").setUri("seda://bar?concurrentConsumers=5").setOperation("bar") - .setParentId(0) + .setKind(SpanKind.SERVER) + .setParentId(1), }; RouteConcurrentTest() { diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/SpanProcessorsTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/SpanProcessorsTest.java index 2eaf25f5eed8b..68ee292596233 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/SpanProcessorsTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/SpanProcessorsTest.java @@ -29,14 +29,27 @@ class SpanProcessorsTest extends CamelMicrometerObservationTestSupport { private static final SpanTestData[] TEST_DATA = { new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") - .setParentId(2) + .setKind(SpanKind.SERVER) + .setParentId(1) .addTag("b-tag", "request-header-value"), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setKind(SpanKind.CLIENT) + .setParentId(4), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(2), - new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.SERVER) .setParentId(3), - new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setKind(SpanKind.CLIENT) + .setParentId(4), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") .setKind(SpanKind.SERVER) + .setParentId(5), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.CLIENT) + .setParentId(6), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.SERVER).setParentId(7), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start").setKind(SpanKind.CLIENT) }; SpanProcessorsTest() { diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceTest.java index 52baa35aa843f..82872b6bb6432 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceTest.java @@ -24,10 +24,17 @@ class TwoServiceTest extends CamelMicrometerObservationTestSupport { private static SpanTestData[] testdata = { - new SpanTestData().setLabel("ServiceB server").setUri("direct://ServiceB").setOperation("service-b") - .setParentId(1), + new SpanTestData().setLabel("ServiceB server").setUri("direct://ServiceB").setOperation("ServiceB") + .setParentId(1) + .setKind(SpanKind.SERVER), + new SpanTestData().setLabel("ServiceB server").setUri("direct://ServiceB").setOperation("ServiceB") + .setParentId(2) + .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA").setOperation("ServiceA") - .setKind(SpanKind.SERVER) + .setParentId(3) + .setKind(SpanKind.SERVER), + new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA").setOperation("ServiceA") + .setKind(SpanKind.CLIENT) }; TwoServiceTest() { diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java index b965389808c45..76b3f494c1839 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java @@ -28,7 +28,10 @@ class TwoServiceWithExcludeTest extends CamelMicrometerObservationTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA").setOperation("ServiceA") - .setKind(SpanKind.SERVER) + .setParentId(1) + .setKind(SpanKind.SERVER), + new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA").setOperation("ServiceA") + .setKind(SpanKind.CLIENT) }; TwoServiceWithExcludeTest() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/ABCRouteTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/ABCRouteTest.java index 320f281d3f9c9..1fc3f6cd956de 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/ABCRouteTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/ABCRouteTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.opentelemetry; +import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; @@ -23,12 +24,24 @@ class ABCRouteTest extends CamelOpenTelemetryTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") - .setParentId(2).addLogMessage("routing at b"), + .setParentId(1).addLogMessage("routing at b"), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setKind(SpanKind.CLIENT) + .setParentId(4), + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setParentId(3).addLogMessage("Exchange[ExchangePattern: InOut, BodyType: String, Body: Hello]"), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(2).addLogMessage("Exchange[ExchangePattern: InOut, BodyType: String, Body: Hello]"), + .setKind(SpanKind.CLIENT) + .setParentId(4), new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") - .setParentId(3).addLogMessage("routing at a").addLogMessage("End of routing"), + .setParentId(5).addLogMessage("routing at a").addLogMessage("End of routing"), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.CLIENT) + .setParentId(6), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setParentId(7), new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; ABCRouteTest() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/ClientRecipientListRouteTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/ClientRecipientListRouteTest.java index 1fa8ff97fad1d..3731ea861c15a 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/ClientRecipientListRouteTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/ClientRecipientListRouteTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.opentelemetry; +import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; @@ -24,12 +25,24 @@ class ClientRecipientListRouteTest extends CamelOpenTelemetryTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") - .setParentId(3), + .setParentId(1), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setParentId(6) + .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") .setParentId(3), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setParentId(6) + .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(3), + .setParentId(5), + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setParentId(6) + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setParentId(7), new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; ClientRecipientListRouteTest() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CurrentSpanTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CurrentSpanTest.java index b28da91eb1d7e..25d147ede96df 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CurrentSpanTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CurrentSpanTest.java @@ -75,7 +75,8 @@ void testSync() { SpanTestData[] expectedSpans = { new SpanTestData().setLabel("syncmock:result").setUri("syncmock://result").setOperation("syncmock") .setKind(SpanKind.CLIENT), - new SpanTestData().setLabel("direct:bar").setUri("direct://bar").setOperation("bar") + new SpanTestData().setLabel("direct:bar").setUri("direct://bar").setOperation("bar"), + new SpanTestData().setLabel("direct:bar").setUri("direct://bar").setOperation("bar").setKind(SpanKind.CLIENT) }; // sync pipeline @@ -93,7 +94,8 @@ void testSyncToAsync() { SpanTestData[] expectedSpans = { new SpanTestData().setLabel("asyncmock1:result").setUri("asyncmock1://result").setOperation("asyncmock1") .setKind(SpanKind.CLIENT), - new SpanTestData().setLabel("direct:foo").setUri("direct://foo").setOperation("foo") + new SpanTestData().setLabel("direct:foo").setUri("direct://foo").setOperation("foo"), + new SpanTestData().setLabel("direct:foo").setUri("direct://foo").setOperation("foo").setKind(SpanKind.CLIENT) }; // sync to async pipeline @@ -171,7 +173,9 @@ void testMulticastAsync() { .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("syncmock:result").setUri("syncmock://result").setOperation("syncmock") .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("direct:start").setUri("direct://start").setOperation("start"), new SpanTestData().setLabel("direct:start").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; // sync pipeline @@ -191,7 +195,7 @@ void testContextDoesNotLeak() { assertFalse(Span.current().getSpanContext().isValid()); } - verifyTraceSpanNumbers(30, 10); + verifyTraceSpanNumbers(30, 11); } @Override diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CustomComponentNameRouteTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CustomComponentNameRouteTest.java index 27ddfdbd46261..e497693cb372e 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CustomComponentNameRouteTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CustomComponentNameRouteTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.opentelemetry; +import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; @@ -24,12 +25,22 @@ class CustomComponentNameRouteTest extends CamelOpenTelemetryTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("myseda:b server").setUri("myseda://b").setOperation("b") - .setParentId(2).addLogMessage("routing at b"), + .setParentId(1).addLogMessage("routing at b"), + new SpanTestData().setLabel("myseda:b server").setUri("myseda://b").setOperation("b").setKind(SpanKind.CLIENT) + .setParentId(4), new SpanTestData().setLabel("myseda:c server").setUri("myseda://c").setOperation("c") - .setParentId(2).addLogMessage("Exchange[ExchangePattern: InOut, BodyType: String, Body: Hello]"), + .setParentId(3).addLogMessage("Exchange[ExchangePattern: InOut, BodyType: String, Body: Hello]"), + new SpanTestData().setLabel("myseda:c server").setUri("myseda://c").setOperation("c").setKind(SpanKind.CLIENT) + .setParentId(4), new SpanTestData().setLabel("myseda:a server").setUri("myseda://a").setOperation("a") - .setParentId(3).addLogMessage("routing at a").addLogMessage("End of routing"), + .setParentId(5).addLogMessage("routing at a").addLogMessage("End of routing"), + new SpanTestData().setLabel("myseda:a server").setUri("myseda://a").setOperation("a") + .setParentId(6) + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setParentId(7), new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; CustomComponentNameRouteTest() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/MulticastParallelRouteTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/MulticastParallelRouteTest.java index 15fb907365ee2..43ba4b82433da 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/MulticastParallelRouteTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/MulticastParallelRouteTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.opentelemetry; +import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; @@ -24,12 +25,24 @@ class MulticastParallelRouteTest extends CamelOpenTelemetryTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") - .setParentId(2).addLogMessage("routing at b"), + .setParentId(1).addLogMessage("routing at b"), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setParentId(4) + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setParentId(3).addLogMessage("routing at c"), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(2).addLogMessage("routing at c"), + .setParentId(4) + .setKind(SpanKind.CLIENT), new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") - .setParentId(3).addLogMessage("routing at a").addLogMessage("End of routing"), + .setParentId(5).addLogMessage("routing at a").addLogMessage("End of routing"), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setParentId(6) + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setParentId(7), new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setKind(SpanKind.CLIENT) }; MulticastParallelRouteTest() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/MulticastRouteTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/MulticastRouteTest.java index c464d5936827b..6c807703a9553 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/MulticastRouteTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/MulticastRouteTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.opentelemetry; +import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; @@ -24,12 +25,23 @@ class MulticastRouteTest extends CamelOpenTelemetryTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") - .setParentId(2), + .setParentId(1), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setKind(SpanKind.CLIENT) + .setParentId(4), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(2), - new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") .setParentId(3), + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setKind(SpanKind.CLIENT) + .setParentId(4), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setParentId(5), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setKind(SpanKind.CLIENT) + .setParentId(6), new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setParentId(7), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start").setKind(SpanKind.CLIENT) }; MulticastRouteTest() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/RouteConcurrentTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/RouteConcurrentTest.java index 964932bdb95c5..c1617f0d6c6e2 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/RouteConcurrentTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/RouteConcurrentTest.java @@ -18,6 +18,7 @@ import java.util.concurrent.TimeUnit; +import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.NotifyBuilder; import org.apache.camel.builder.RouteBuilder; @@ -28,9 +29,15 @@ class RouteConcurrentTest extends CamelOpenTelemetryTestSupport { private static SpanTestData[] testdata = { - new SpanTestData().setLabel("seda:foo server").setUri("seda://foo?concurrentConsumers=5").setOperation("foo"), + new SpanTestData().setLabel("seda:foo server").setUri("seda://foo").setOperation("foo") + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("seda:bar server").setUri("seda://bar").setOperation("bar") + .setParentId(2) + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("seda:foo server").setUri("seda://foo?concurrentConsumers=5").setOperation("foo") + .setParentId(0), new SpanTestData().setLabel("seda:bar server").setUri("seda://bar?concurrentConsumers=5").setOperation("bar") - .setParentId(0) + .setParentId(1), }; RouteConcurrentTest() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/SpanProcessorsTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/SpanProcessorsTest.java index cbe69b7035f69..f7b5fb2b5f588 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/SpanProcessorsTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/SpanProcessorsTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.opentelemetry; +import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.Exchange; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; @@ -28,13 +29,24 @@ class SpanProcessorsTest extends CamelOpenTelemetryTestSupport { private static final SpanTestData[] TEST_DATA = { new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") - .setParentId(2).addLogMessage("routing at b") + .setParentId(1).addLogMessage("routing at b") .addTag("b-tag", "request-header-value"), + new SpanTestData().setLabel("seda:b server").setUri("seda://b").setOperation("b") + .setKind(SpanKind.CLIENT) + .setParentId(4), + new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") + .setParentId(3).addLogMessage("Exchange[ExchangePattern: InOut, BodyType: String, Body: Hello]"), new SpanTestData().setLabel("seda:c server").setUri("seda://c").setOperation("c") - .setParentId(2).addLogMessage("Exchange[ExchangePattern: InOut, BodyType: String, Body: Hello]"), + .setKind(SpanKind.CLIENT) + .setParentId(4), + new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") + .setParentId(5).addLogMessage("routing at a").addLogMessage("End of routing"), new SpanTestData().setLabel("seda:a server").setUri("seda://a").setOperation("a") - .setParentId(3).addLogMessage("routing at a").addLogMessage("End of routing"), + .setKind(SpanKind.CLIENT) + .setParentId(6), new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start") + .setParentId(7), + new SpanTestData().setLabel("direct:start server").setUri("direct://start").setOperation("start").setKind(SpanKind.CLIENT) }; SpanProcessorsTest() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceTest.java index 563a089ce41b0..4b1c28fb39c7e 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.opentelemetry; +import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; @@ -25,7 +26,13 @@ class TwoServiceTest extends CamelOpenTelemetryTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("ServiceB server").setUri("direct://ServiceB").setOperation("ServiceB") .setParentId(1), + new SpanTestData().setLabel("ServiceB server").setUri("direct://ServiceB").setOperation("ServiceB") + .setParentId(2) + .setKind(SpanKind.CLIENT), + new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA").setOperation("ServiceA") + .setParentId(3), new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA").setOperation("ServiceA") + .setKind(SpanKind.CLIENT) }; TwoServiceTest() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java index dc8fd800ca691..44665b7306ddf 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java @@ -19,6 +19,7 @@ import java.util.Collections; import java.util.Set; +import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; @@ -27,6 +28,9 @@ class TwoServiceWithExcludeTest extends CamelOpenTelemetryTestSupport { private static SpanTestData[] testdata = { new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA").setOperation("ServiceA") + .setParentId(1), + new SpanTestData().setLabel("ServiceA server").setUri("direct://ServiceA").setOperation("ServiceA") + .setKind(SpanKind.CLIENT) }; TwoServiceWithExcludeTest() { diff --git a/components/camel-opentracing/pom.xml b/components/camel-opentracing/pom.xml index ffb3618360f82..e5c722b7007a4 100644 --- a/components/camel-opentracing/pom.xml +++ b/components/camel-opentracing/pom.xml @@ -37,6 +37,8 @@