This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch code-massel-CAMEL-23352 in repository https://gitbox.apache.org/repos/asf/camel.git
commit ba2d9ee3490fb844a9afb6b33120942a1f91796c Author: Pasquale Congiusti <[email protected]> AuthorDate: Wed May 6 12:07:13 2026 +0200 feat(components): distinguish core processors from custom processors * Include `disableCoreProcessors` * Adjusted test with the new parameter * Doc explanation Ref CAMEL-23432 --- .../camel-telemetry/src/main/docs/telemetry.adoc | 7 ++-- .../TraceProcessorsInterceptStrategy.java | 18 ++++++++-- .../java/org/apache/camel/telemetry/Tracer.java | 10 ++++++ .../org/apache/camel/telemetry/AsyncCXFTest.java | 1 + .../apache/camel/telemetry/AsyncDirectTest.java | 1 + .../java/org/apache/camel/telemetry/AsyncTest.java | 1 + .../apache/camel/telemetry/AsyncWiretapTest.java | 1 + .../camel/telemetry/DisableEndpointTest.java | 1 + ...sorsTest.java => EnableCoreProcessorsTest.java} | 14 +++----- .../camel/telemetry/EnableProcessorsTest.java | 15 +++------ .../apache/camel/telemetry/HeadersTraceTest.java | 1 + ...EnableProcessorsTest.java => SpanBeanTest.java} | 39 ++++++++++++++++------ .../camel/telemetry/SpanLifecycleManagerTest.java | 1 + .../telemetry/SpanPropagationDownstreamTest.java | 1 + .../telemetry/SpanPropagationUpstreamTest.java | 1 + .../apache/camel/telemetry/mock/MockTracer.java | 5 +-- 16 files changed, 80 insertions(+), 37 deletions(-) diff --git a/components/camel-telemetry/src/main/docs/telemetry.adoc b/components/camel-telemetry/src/main/docs/telemetry.adoc index 148d7a9cfe67..9d09d5fafbf3 100644 --- a/components/camel-telemetry/src/main/docs/telemetry.adoc +++ b/components/camel-telemetry/src/main/docs/telemetry.adoc @@ -26,7 +26,8 @@ The configuration properties for the Telemetry component are: [width="100%",cols="10%,10%,80%",options="header",] |======================================================================= |Option |Default |Description -|`traceProcessors`| false | Trace inner processors. +|`traceProcessors`| false | Trace inner custom processors (i.e., any `process` configured in the route). +|`disableCoreProcessors`| false | Disable any inner core processors (any core DSL processor provided in the route, for example `bean`, `log`, ...). |`excludePatterns` | | Sets exclude pattern that will disable tracing for those spans that matches the pattern. The variable is a comma separated values of filters to execute (eg, `log*,direct*,setBody*`, ...) |`traceHeadersInclusion`| false | Add the generated telemetry `CAMEL_TRACE_ID` and `CAMEL_SPAN_ID` Exchange headers. |======================================================================= @@ -121,12 +122,14 @@ The upstream application must inject the context into the event sent (typically This feature is implementation specific, the abstraction just provide the interface that must be implemented concretely in each of the implementation. -=== Processor tracing +=== Custom Processor tracing When this feature is enabled, you will be able to collect a finer grain number of Spans into a Trace. Each of the different endpoint processors will be collected. You can enable the feature using the `traceProcessors` parameter (default `false`). NOTE: enabling this feature will provide many more Spans for each Trace. +By default, the "core" processors part of any Camel DSL (for example, `bean`, `log`, ...) are included in order to manage properly any further instrumentation done at this level. Disabling this feature is not recommended but it can be done via `disableCoreProcessors` parameter. + == Implementation specific abstraction NOTE: the following chapter is dedicate exclusively to developers willing to create a concrete implementation for this component. diff --git a/components/camel-telemetry/src/main/java/org/apache/camel/telemetry/TraceProcessorsInterceptStrategy.java b/components/camel-telemetry/src/main/java/org/apache/camel/telemetry/TraceProcessorsInterceptStrategy.java index 5b4ea9c53ba2..bad5cadafaa8 100644 --- a/components/camel-telemetry/src/main/java/org/apache/camel/telemetry/TraceProcessorsInterceptStrategy.java +++ b/components/camel-telemetry/src/main/java/org/apache/camel/telemetry/TraceProcessorsInterceptStrategy.java @@ -57,7 +57,9 @@ public class TraceProcessorsInterceptStrategy implements InterceptStrategy { @Override public void process(Exchange exchange) throws Exception { String processorName = processorDefinition.getId() + "-" + processorDefinition.getShortName(); - if (tracer.isTraceProcessors() && !tracer.exclude(processorName, exchange.getContext())) { + if ((isCoreProcessEnabled(tracer.isDisableCoreProcessors(), processorDefinition.getShortName()) || + isCustomProcessEnabled(tracer.isTraceProcessors(), processorDefinition.getShortName())) + && !tracer.exclude(processorName, exchange.getContext())) { tracer.beginProcessorSpan(exchange, processorName); try { processor.process(exchange); @@ -73,7 +75,10 @@ public class TraceProcessorsInterceptStrategy implements InterceptStrategy { @Override public boolean process(Exchange exchange, AsyncCallback callback) { String processorName = processorDefinition.getId() + "-" + processorDefinition.getShortName(); - boolean isTraceProcessor = tracer.isTraceProcessors() && !tracer.exclude(processorName, exchange.getContext()); + boolean isTraceProcessor + = (isCoreProcessEnabled(tracer.isDisableCoreProcessors(), processorDefinition.getShortName()) || + isCustomProcessEnabled(tracer.isTraceProcessors(), processorDefinition.getShortName())) + && !tracer.exclude(processorName, exchange.getContext()); if (isTraceProcessor) { try { tracer.beginProcessorSpan(exchange, processorName); @@ -105,4 +110,13 @@ public class TraceProcessorsInterceptStrategy implements InterceptStrategy { } } + private boolean isCoreProcessEnabled(boolean isDisableCoreProcessors, String processDefinitionShortName) { + // Any enabled core process which is not a "custom" processor. + return !isDisableCoreProcessors && !processDefinitionShortName.equals("process"); + } + + private boolean isCustomProcessEnabled(boolean isTraceProcessors, String processDefinitionShortName) { + // Any custom core process. + return isTraceProcessors && processDefinitionShortName.equals("process"); + } } diff --git a/components/camel-telemetry/src/main/java/org/apache/camel/telemetry/Tracer.java b/components/camel-telemetry/src/main/java/org/apache/camel/telemetry/Tracer.java index 0c5ada29eb23..6b2af88b9dd2 100644 --- a/components/camel-telemetry/src/main/java/org/apache/camel/telemetry/Tracer.java +++ b/components/camel-telemetry/src/main/java/org/apache/camel/telemetry/Tracer.java @@ -56,6 +56,7 @@ public abstract class Tracer extends ServiceSupport implements CamelTracingServi */ private String excludePatterns; private boolean traceProcessors; + private boolean disableCoreProcessors = false; private boolean traceHeadersInclusion; private final TracingEventNotifier eventNotifier = new TracingEventNotifier(); @@ -106,6 +107,15 @@ public abstract class Tracer extends ServiceSupport implements CamelTracingServi this.traceProcessors = traceProcessors; } + @ManagedAttribute + public boolean isDisableCoreProcessors() { + return disableCoreProcessors; + } + + public void setDisableCoreProcessors(boolean disableCoreProcessors) { + this.disableCoreProcessors = disableCoreProcessors; + } + public SpanLifecycleManager getSpanLifecycleManager() { return this.spanLifecycleManager; } diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncCXFTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncCXFTest.java index 011e8213f9db..7852e4689e8f 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncCXFTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncCXFTest.java @@ -49,6 +49,7 @@ public class AsyncCXFTest extends ExchangeTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); + this.mockTracer.setDisableCoreProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncDirectTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncDirectTest.java index a8a417e7e62f..1022a70ef52c 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncDirectTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncDirectTest.java @@ -41,6 +41,7 @@ public class AsyncDirectTest extends ExchangeTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); + this.mockTracer.setDisableCoreProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncTest.java index 78e0824e65b5..9d3d0b298c71 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncTest.java @@ -45,6 +45,7 @@ public class AsyncTest extends ExchangeTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); + this.mockTracer.setDisableCoreProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncWiretapTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncWiretapTest.java index e08ca11974b7..359c5ca7d25f 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncWiretapTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/AsyncWiretapTest.java @@ -46,6 +46,7 @@ public class AsyncWiretapTest extends ExchangeTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); + this.mockTracer.setDisableCoreProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/DisableEndpointTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/DisableEndpointTest.java index c74e930b0088..2dc23f570c4d 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/DisableEndpointTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/DisableEndpointTest.java @@ -44,6 +44,7 @@ public class DisableEndpointTest extends ExchangeTestSupport { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); mockTracer.setTraceProcessors(true); + this.mockTracer.setDisableCoreProcessors(true); mockTracer.setExcludePatterns("log*,to*,setVariable*"); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableCoreProcessorsTest.java similarity index 87% copy from components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java copy to components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableCoreProcessorsTest.java index a2d2ddbb564f..62c50a27899d 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableCoreProcessorsTest.java @@ -34,7 +34,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; -public class EnableProcessorsTest extends ExchangeTestSupport { +public class EnableCoreProcessorsTest extends ExchangeTestSupport { MockTracer mockTracer; @@ -42,7 +42,6 @@ public class EnableProcessorsTest extends ExchangeTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); - mockTracer.setTraceProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; @@ -58,40 +57,35 @@ public class EnableProcessorsTest extends ExchangeTestSupport { private void checkTrace(MockTrace trace) { List<Span> spans = trace.spans(); - assertEquals(6, spans.size()); + assertEquals(5, spans.size()); // Cast to implementation object to be able to // inspect the status of the Span. MockSpanAdapter testProducer = (MockSpanAdapter) spans.get(0); MockSpanAdapter direct = (MockSpanAdapter) spans.get(1); MockSpanAdapter innerLog = (MockSpanAdapter) spans.get(2); - MockSpanAdapter innerProcessor = (MockSpanAdapter) spans.get(3); - MockSpanAdapter log = (MockSpanAdapter) spans.get(4); - MockSpanAdapter innerToLog = (MockSpanAdapter) spans.get(5); + MockSpanAdapter log = (MockSpanAdapter) spans.get(3); + MockSpanAdapter innerToLog = (MockSpanAdapter) spans.get(4); // Validate span completion assertEquals("true", testProducer.getTag("isDone")); assertEquals("true", direct.getTag("isDone")); assertEquals("true", innerLog.getTag("isDone")); - assertEquals("true", innerProcessor.getTag("isDone")); assertEquals("true", log.getTag("isDone")); assertEquals("true", innerToLog.getTag("isDone")); // Validate same trace assertEquals(testProducer.getTag("traceid"), direct.getTag("traceid")); assertEquals(testProducer.getTag("traceid"), innerLog.getTag("traceid")); - assertEquals(testProducer.getTag("traceid"), innerProcessor.getTag("traceid")); assertEquals(testProducer.getTag("traceid"), log.getTag("traceid")); assertEquals(testProducer.getTag("traceid"), innerToLog.getTag("traceid")); // Validate op assertEquals(Op.EVENT_RECEIVED.toString(), direct.getTag("op")); - assertEquals(Op.EVENT_PROCESS.toString(), innerProcessor.getTag("op")); // Validate hierarchy assertNull(testProducer.getTag("parentSpan")); assertEquals(testProducer.getTag("spanid"), direct.getTag("parentSpan")); assertEquals(direct.getTag("spanid"), innerLog.getTag("parentSpan")); - assertEquals(direct.getTag("spanid"), innerProcessor.getTag("parentSpan")); assertEquals(direct.getTag("spanid"), log.getTag("parentSpan")); assertEquals(log.getTag("spanid"), innerToLog.getTag("parentSpan")); } diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java index a2d2ddbb564f..f7a255d704f4 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java @@ -43,6 +43,7 @@ public class EnableProcessorsTest extends ExchangeTestSupport { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); mockTracer.setTraceProcessors(true); + this.mockTracer.setDisableCoreProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; @@ -58,30 +59,24 @@ public class EnableProcessorsTest extends ExchangeTestSupport { private void checkTrace(MockTrace trace) { List<Span> spans = trace.spans(); - assertEquals(6, spans.size()); + assertEquals(4, spans.size()); // Cast to implementation object to be able to // inspect the status of the Span. MockSpanAdapter testProducer = (MockSpanAdapter) spans.get(0); MockSpanAdapter direct = (MockSpanAdapter) spans.get(1); - MockSpanAdapter innerLog = (MockSpanAdapter) spans.get(2); - MockSpanAdapter innerProcessor = (MockSpanAdapter) spans.get(3); - MockSpanAdapter log = (MockSpanAdapter) spans.get(4); - MockSpanAdapter innerToLog = (MockSpanAdapter) spans.get(5); + MockSpanAdapter innerProcessor = (MockSpanAdapter) spans.get(2); + MockSpanAdapter log = (MockSpanAdapter) spans.get(3); // Validate span completion assertEquals("true", testProducer.getTag("isDone")); assertEquals("true", direct.getTag("isDone")); - assertEquals("true", innerLog.getTag("isDone")); assertEquals("true", innerProcessor.getTag("isDone")); assertEquals("true", log.getTag("isDone")); - assertEquals("true", innerToLog.getTag("isDone")); // Validate same trace assertEquals(testProducer.getTag("traceid"), direct.getTag("traceid")); - assertEquals(testProducer.getTag("traceid"), innerLog.getTag("traceid")); assertEquals(testProducer.getTag("traceid"), innerProcessor.getTag("traceid")); assertEquals(testProducer.getTag("traceid"), log.getTag("traceid")); - assertEquals(testProducer.getTag("traceid"), innerToLog.getTag("traceid")); // Validate op assertEquals(Op.EVENT_RECEIVED.toString(), direct.getTag("op")); @@ -90,10 +85,8 @@ public class EnableProcessorsTest extends ExchangeTestSupport { // Validate hierarchy assertNull(testProducer.getTag("parentSpan")); assertEquals(testProducer.getTag("spanid"), direct.getTag("parentSpan")); - assertEquals(direct.getTag("spanid"), innerLog.getTag("parentSpan")); assertEquals(direct.getTag("spanid"), innerProcessor.getTag("parentSpan")); assertEquals(direct.getTag("spanid"), log.getTag("parentSpan")); - assertEquals(log.getTag("spanid"), innerToLog.getTag("parentSpan")); } @Override diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/HeadersTraceTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/HeadersTraceTest.java index cce41c81d203..d131e447ece5 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/HeadersTraceTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/HeadersTraceTest.java @@ -41,6 +41,7 @@ public class HeadersTraceTest extends ExchangeTestSupport { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); mockTracer.setTraceHeadersInclusion(true); + this.mockTracer.setDisableCoreProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanBeanTest.java similarity index 74% copy from components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java copy to components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanBeanTest.java index a2d2ddbb564f..5480b7db1bda 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/EnableProcessorsTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanBeanTest.java @@ -34,7 +34,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; -public class EnableProcessorsTest extends ExchangeTestSupport { +public class SpanBeanTest extends ExchangeTestSupport { MockTracer mockTracer; @@ -42,7 +42,6 @@ public class EnableProcessorsTest extends ExchangeTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); - mockTracer.setTraceProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; @@ -58,41 +57,44 @@ public class EnableProcessorsTest extends ExchangeTestSupport { private void checkTrace(MockTrace trace) { List<Span> spans = trace.spans(); - assertEquals(6, spans.size()); + assertEquals(7, spans.size()); // Cast to implementation object to be able to // inspect the status of the Span. MockSpanAdapter testProducer = (MockSpanAdapter) spans.get(0); MockSpanAdapter direct = (MockSpanAdapter) spans.get(1); MockSpanAdapter innerLog = (MockSpanAdapter) spans.get(2); - MockSpanAdapter innerProcessor = (MockSpanAdapter) spans.get(3); - MockSpanAdapter log = (MockSpanAdapter) spans.get(4); - MockSpanAdapter innerToLog = (MockSpanAdapter) spans.get(5); + MockSpanAdapter bean = (MockSpanAdapter) spans.get(3); + MockSpanAdapter beanMethod = (MockSpanAdapter) spans.get(4); + MockSpanAdapter log = (MockSpanAdapter) spans.get(5); + MockSpanAdapter innerToLog = (MockSpanAdapter) spans.get(6); // Validate span completion assertEquals("true", testProducer.getTag("isDone")); assertEquals("true", direct.getTag("isDone")); assertEquals("true", innerLog.getTag("isDone")); - assertEquals("true", innerProcessor.getTag("isDone")); + assertEquals("true", bean.getTag("isDone")); + assertEquals("true", beanMethod.getTag("isDone")); assertEquals("true", log.getTag("isDone")); assertEquals("true", innerToLog.getTag("isDone")); // Validate same trace assertEquals(testProducer.getTag("traceid"), direct.getTag("traceid")); assertEquals(testProducer.getTag("traceid"), innerLog.getTag("traceid")); - assertEquals(testProducer.getTag("traceid"), innerProcessor.getTag("traceid")); assertEquals(testProducer.getTag("traceid"), log.getTag("traceid")); + assertEquals(testProducer.getTag("traceid"), bean.getTag("traceid")); + assertEquals(testProducer.getTag("traceid"), beanMethod.getTag("traceid")); assertEquals(testProducer.getTag("traceid"), innerToLog.getTag("traceid")); // Validate op assertEquals(Op.EVENT_RECEIVED.toString(), direct.getTag("op")); - assertEquals(Op.EVENT_PROCESS.toString(), innerProcessor.getTag("op")); // Validate hierarchy assertNull(testProducer.getTag("parentSpan")); assertEquals(testProducer.getTag("spanid"), direct.getTag("parentSpan")); assertEquals(direct.getTag("spanid"), innerLog.getTag("parentSpan")); - assertEquals(direct.getTag("spanid"), innerProcessor.getTag("parentSpan")); assertEquals(direct.getTag("spanid"), log.getTag("parentSpan")); + assertEquals(direct.getTag("spanid"), bean.getTag("parentSpan")); + assertEquals(bean.getTag("spanid"), beanMethod.getTag("parentSpan")); assertEquals(log.getTag("spanid"), innerToLog.getTag("parentSpan")); } @@ -101,9 +103,13 @@ public class EnableProcessorsTest extends ExchangeTestSupport { return new RouteBuilder() { @Override public void configure() { + MyBean myBean = new MyBean(); + this.getCamelContext().getRegistry().bind("myBean", myBean); + from("direct:start") .routeId("start") .log("A message") + .bean(MyBean.class) .process(new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -115,4 +121,17 @@ public class EnableProcessorsTest extends ExchangeTestSupport { }; } + class MyBean { + // We simulate the creation of a Span by hand. + public void helloWorld(Exchange exchange) { + // We just simulate the creation of a span and proper nesting. In a real implementation + // it is up to the telemetry technology to do so (for example, via method annotations) + Span parentSpan = new SpanStorageManagerExchange().peek(exchange); + Span span = mockTracer.slcm.create("mySpan", "bo", parentSpan, null); + mockTracer.slcm.activate(span); + mockTracer.slcm.deactivate(span); + mockTracer.slcm.close(span); + } + } + } diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanLifecycleManagerTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanLifecycleManagerTest.java index ceefe59e720c..d7f52704ac47 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanLifecycleManagerTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanLifecycleManagerTest.java @@ -42,6 +42,7 @@ public class SpanLifecycleManagerTest extends ExchangeTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); + this.mockTracer.setDisableCoreProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanPropagationDownstreamTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanPropagationDownstreamTest.java index dbaf38241a28..94879366473b 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanPropagationDownstreamTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanPropagationDownstreamTest.java @@ -35,6 +35,7 @@ public class SpanPropagationDownstreamTest extends ExchangeTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); + this.mockTracer.setDisableCoreProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanPropagationUpstreamTest.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanPropagationUpstreamTest.java index 45cc960942bf..cbc352573675 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanPropagationUpstreamTest.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/SpanPropagationUpstreamTest.java @@ -39,6 +39,7 @@ public class SpanPropagationUpstreamTest extends ExchangeTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); this.mockTracer = new MockTracer(); + this.mockTracer.setDisableCoreProcessors(true); CamelContextAware.trySetCamelContext(mockTracer, context); mockTracer.init(context); return context; diff --git a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/mock/MockTracer.java b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/mock/MockTracer.java index 6479e8ebf213..ae32f58b5d56 100644 --- a/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/mock/MockTracer.java +++ b/components/camel-telemetry/src/test/java/org/apache/camel/telemetry/mock/MockTracer.java @@ -35,7 +35,7 @@ import org.apache.camel.telemetry.Tracer; @ManagedResource(description = "MockTracer") public class MockTracer extends Tracer { - MockSpanLifecycleManager slcm; + public MockSpanLifecycleManager slcm; @Override protected void initTracer() { @@ -47,7 +47,8 @@ public class MockTracer extends Tracer { return slcm.traces(); } - private class MockSpanLifecycleManager implements SpanLifecycleManager { + // NOTE: public because we're using directly in a test case to generate a custom span + public class MockSpanLifecycleManager implements SpanLifecycleManager { // Used to collect the traces for later evaluation as traces Map<String, Span> inMemoryStorageMap = new HashMap<>();
