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<>();

Reply via email to