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 3f8acc3da4d3abcee0b95e5d4d660ff34f00de77
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Thu May 7 09:42:53 2026 +0200

    chore(components): telemetry dev  core processors
    
    Ref CAMEL-23432
---
 .../telemetrydev/TelemetryDevTracerConfigurer.java |  6 ++
 .../src/main/docs/telemetry-dev.adoc               |  3 +-
 .../apache/camel/telemetrydev/AsyncCXFTest.java    |  1 +
 .../apache/camel/telemetrydev/AsyncDirectTest.java |  1 +
 .../org/apache/camel/telemetrydev/AsyncTest.java   |  1 +
 .../camel/telemetrydev/AsyncWiretapTest.java       |  1 +
 .../camel/telemetrydev/MDCHeadersTraceTest.java    |  1 +
 ...lemetryDevTracerTest.java => SpanBeanTest.java} | 88 +++++++++++++---------
 .../SpanPropagationDownstreamTest.java             |  1 +
 .../telemetrydev/SpanPropagationUpstreamTest.java  |  1 +
 .../camel/telemetrydev/TelemetryDevTracerTest.java |  1 +
 .../apache/camel/telemetry/mock/MockTracer.java    |  5 +-
 12 files changed, 69 insertions(+), 41 deletions(-)

diff --git 
a/components/camel-telemetry-dev/src/generated/java/org/apache/camel/telemetrydev/TelemetryDevTracerConfigurer.java
 
b/components/camel-telemetry-dev/src/generated/java/org/apache/camel/telemetrydev/TelemetryDevTracerConfigurer.java
index 20d9f04a5fee..ba9d4911c60d 100644
--- 
a/components/camel-telemetry-dev/src/generated/java/org/apache/camel/telemetrydev/TelemetryDevTracerConfigurer.java
+++ 
b/components/camel-telemetry-dev/src/generated/java/org/apache/camel/telemetrydev/TelemetryDevTracerConfigurer.java
@@ -25,6 +25,8 @@ public class TelemetryDevTracerConfigurer extends 
org.apache.camel.support.compo
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "camelcontext":
         case "camelContext": target.setCamelContext(property(camelContext, 
org.apache.camel.CamelContext.class, value)); return true;
+        case "disablecoreprocessors":
+        case "disableCoreProcessors": 
target.setDisableCoreProcessors(property(camelContext, boolean.class, value)); 
return true;
         case "excludepatterns":
         case "excludePatterns": 
target.setExcludePatterns(property(camelContext, java.lang.String.class, 
value)); return true;
         case "spanlifecyclemanager":
@@ -44,6 +46,8 @@ public class TelemetryDevTracerConfigurer extends 
org.apache.camel.support.compo
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "camelcontext":
         case "camelContext": return org.apache.camel.CamelContext.class;
+        case "disablecoreprocessors":
+        case "disableCoreProcessors": return boolean.class;
         case "excludepatterns":
         case "excludePatterns": return java.lang.String.class;
         case "spanlifecyclemanager":
@@ -64,6 +68,8 @@ public class TelemetryDevTracerConfigurer extends 
org.apache.camel.support.compo
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "camelcontext":
         case "camelContext": return target.getCamelContext();
+        case "disablecoreprocessors":
+        case "disableCoreProcessors": return target.isDisableCoreProcessors();
         case "excludepatterns":
         case "excludePatterns": return target.getExcludePatterns();
         case "spanlifecyclemanager":
diff --git a/components/camel-telemetry-dev/src/main/docs/telemetry-dev.adoc 
b/components/camel-telemetry-dev/src/main/docs/telemetry-dev.adoc
index d3d9894814be..2eba44a3a767 100644
--- a/components/camel-telemetry-dev/src/main/docs/telemetry-dev.adoc
+++ b/components/camel-telemetry-dev/src/main/docs/telemetry-dev.adoc
@@ -28,7 +28,8 @@ The configuration properties for the Telemetry component are:
 |Option |Default |Description
 |`enabled`| false | Turn the tracing on/off.
 |`traceFormat`| default | The format used to trace in the log (default, tree, 
json).
-|`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.
 |=======================================================================
diff --git 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncCXFTest.java
 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncCXFTest.java
index 2ca776917e17..a2887afead91 100644
--- 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncCXFTest.java
+++ 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncCXFTest.java
@@ -45,6 +45,7 @@ public class AsyncCXFTest extends 
TelemetryDevTracerTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         TelemetryDevTracer tst = new TelemetryDevTracer();
         tst.setTraceFormat("json");
+        tst.setDisableCoreProcessors(true);
         CamelContext context = super.createCamelContext();
         CamelContextAware.trySetCamelContext(tst, context);
         tst.init(context);
diff --git 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncDirectTest.java
 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncDirectTest.java
index d41399686f84..0fc1c1731da8 100644
--- 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncDirectTest.java
+++ 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncDirectTest.java
@@ -37,6 +37,7 @@ public class AsyncDirectTest extends 
TelemetryDevTracerTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         TelemetryDevTracer tst = new TelemetryDevTracer();
         tst.setTraceFormat("json");
+        tst.setDisableCoreProcessors(true);
         CamelContext context = super.createCamelContext();
         CamelContextAware.trySetCamelContext(tst, context);
         tst.init(context);
diff --git 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncTest.java
 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncTest.java
index ff794ef5a348..c8fc668b02e3 100644
--- 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncTest.java
+++ 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncTest.java
@@ -41,6 +41,7 @@ public class AsyncTest extends TelemetryDevTracerTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         TelemetryDevTracer tst = new TelemetryDevTracer();
         tst.setTraceFormat("json");
+        tst.setDisableCoreProcessors(true);
         CamelContext context = super.createCamelContext();
         CamelContextAware.trySetCamelContext(tst, context);
         tst.init(context);
diff --git 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncWiretapTest.java
 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncWiretapTest.java
index 67fd4384ddab..3f08e4f18f13 100644
--- 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncWiretapTest.java
+++ 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/AsyncWiretapTest.java
@@ -42,6 +42,7 @@ public class AsyncWiretapTest extends 
TelemetryDevTracerTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         TelemetryDevTracer tst = new TelemetryDevTracer();
         tst.setTraceFormat("json");
+        tst.setDisableCoreProcessors(true);
         CamelContext context = super.createCamelContext();
         CamelContextAware.trySetCamelContext(tst, context);
         tst.init(context);
diff --git 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/MDCHeadersTraceTest.java
 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/MDCHeadersTraceTest.java
index 2e9472aece6b..0bfe182dd0dd 100644
--- 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/MDCHeadersTraceTest.java
+++ 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/MDCHeadersTraceTest.java
@@ -38,6 +38,7 @@ public class MDCHeadersTraceTest extends 
TelemetryDevTracerTestSupport {
         TelemetryDevTracer tst = new TelemetryDevTracer();
         tst.setTraceFormat("json");
         tst.setTraceHeadersInclusion(true);
+        tst.setDisableCoreProcessors(true);
         CamelContextAware.trySetCamelContext(tst, context);
         tst.init(context);
         return context;
diff --git 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTest.java
 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanBeanTest.java
similarity index 52%
copy from 
components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTest.java
copy to 
components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanBeanTest.java
index 6fea7695553d..b0f02f990bda 100644
--- 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTest.java
+++ 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanBeanTest.java
@@ -26,21 +26,25 @@ import org.apache.camel.Exchange;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.telemetry.Op;
+import org.apache.camel.telemetry.Span;
+import org.apache.camel.telemetry.SpanStorageManagerExchange;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
-public class TelemetryDevTracerTest extends TelemetryDevTracerTestSupport {
+public class SpanBeanTest extends TelemetryDevTracerTestSupport {
+
+    TelemetryDevTracer tracer;
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        TelemetryDevTracer tst = new TelemetryDevTracer();
-        tst.setTraceFormat("json");
+        tracer = new TelemetryDevTracer();
+        tracer.setTraceFormat("json");
         CamelContext context = super.createCamelContext();
-        CamelContextAware.trySetCamelContext(tst, context);
-        tst.init(context);
+        CamelContextAware.trySetCamelContext(tracer, context);
+        tracer.init(context);
         return context;
     }
 
@@ -54,59 +58,52 @@ public class TelemetryDevTracerTest extends 
TelemetryDevTracerTestSupport {
         checkTrace(traces.values().iterator().next(), null);
     }
 
-    @Test
-    void testRouteMultipleRequests() throws IOException {
-        for (int i = 1; i <= 10; i++) {
-            context.createProducerTemplate().sendBody("direct:start", 
"Hello!");
-        }
-        Map<String, DevTrace> traces = tracesFromLog();
-        // Each trace should have a unique trace id. It is enough to assert 
that
-        // the number of elements in the map is the same of the requests to 
prove
-        // all traces have been generated uniquely.
-        assertEquals(10, traces.size());
-        // Each trace should have the same structure
-        for (DevTrace trace : traces.values()) {
-            checkTrace(trace, "Hello!");
-        }
-
-    }
-
     private void checkTrace(DevTrace trace, String expectedBody) {
         List<DevSpanAdapter> spans = trace.getSpans();
-        assertEquals(3, spans.size());
+        assertEquals(7, spans.size());
         DevSpanAdapter testProducer = spans.get(0);
         DevSpanAdapter direct = spans.get(1);
-        DevSpanAdapter log = spans.get(2);
+        DevSpanAdapter logProcessor = spans.get(2);
+        DevSpanAdapter beanProcessor = spans.get(3);
+        DevSpanAdapter beanMySpan = spans.get(4);
+        DevSpanAdapter to = spans.get(5);
+        DevSpanAdapter toProcessor = spans.get(6);
 
         // Validate span completion
         assertEquals("true", testProducer.getTag("isDone"));
         assertEquals("true", direct.getTag("isDone"));
-        assertEquals("true", log.getTag("isDone"));
+        assertEquals("true", logProcessor.getTag("isDone"));
+        assertEquals("true", beanProcessor.getTag("isDone"));
+        assertEquals("true", beanMySpan.getTag("isDone"));
+        assertEquals("true", to.getTag("isDone"));
+        assertEquals("true", toProcessor.getTag("isDone"));
 
         // Validate same trace
         assertEquals(testProducer.getTag("traceid"), direct.getTag("traceid"));
-        assertEquals(direct.getTag("traceid"), log.getTag("traceid"));
+        assertEquals(direct.getTag("traceid"), to.getTag("traceid"));
+        assertEquals(testProducer.getTag("traceid"), 
logProcessor.getTag("traceid"));
+        assertEquals(testProducer.getTag("traceid"), 
toProcessor.getTag("traceid"));
+        assertEquals(testProducer.getTag("traceid"), 
beanProcessor.getTag("traceid"));
+        assertEquals(testProducer.getTag("traceid"), 
beanMySpan.getTag("traceid"));
 
         // Validate hierarchy
         assertNull(testProducer.getTag("parentSpan"));
         assertEquals(testProducer.getTag("spanid"), 
direct.getTag("parentSpan"));
-        assertEquals(direct.getTag("spanid"), log.getTag("parentSpan"));
+        assertEquals(direct.getTag("spanid"), 
logProcessor.getTag("parentSpan"));
+        assertEquals(direct.getTag("spanid"), 
beanProcessor.getTag("parentSpan"));
+        assertEquals(beanProcessor.getTag("spanid"), 
beanMySpan.getTag("parentSpan"));
+        assertEquals(direct.getTag("spanid"), to.getTag("parentSpan"));
+        assertEquals(to.getTag("spanid"), toProcessor.getTag("parentSpan"));
 
         // Validate operations
         assertEquals(Op.EVENT_SENT.toString(), testProducer.getTag("op"));
         assertEquals(Op.EVENT_RECEIVED.toString(), direct.getTag("op"));
 
         // Validate message logging
-        assertEquals("A message", 
direct.getLogEntries().get(0).getFields().get("message"));
-        if (expectedBody == null) {
-            assertEquals(
-                    "Exchange[ExchangePattern: InOut, BodyType: null, Body: 
[Body is null]]",
-                    log.getLogEntries().get(0).getFields().get("message"));
-        } else {
-            assertEquals(
-                    "Exchange[ExchangePattern: InOnly, BodyType: String, Body: 
" + expectedBody + "]",
-                    log.getLogEntries().get(0).getFields().get("message"));
-        }
+        assertEquals("A message", 
logProcessor.getLogEntries().get(0).getFields().get("message"));
+        assertEquals(
+                "Exchange[ExchangePattern: InOut, BodyType: null, Body: [Body 
is null]]",
+                toProcessor.getLogEntries().get(0).getFields().get("message"));
 
     }
 
@@ -115,12 +112,29 @@ public class TelemetryDevTracerTest extends 
TelemetryDevTracerTestSupport {
         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)
                         .to("log:info");
             }
         };
     }
 
+    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 = tracer.getSpanLifecycleManager().create("mySpan", 
"empty", parentSpan, null);
+            tracer.getSpanLifecycleManager().activate(span);
+            tracer.getSpanLifecycleManager().deactivate(span);
+            tracer.getSpanLifecycleManager().close(span);
+        }
+    }
+
 }
diff --git 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanPropagationDownstreamTest.java
 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanPropagationDownstreamTest.java
index 840a3b2e1800..09b43abf3bfb 100644
--- 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanPropagationDownstreamTest.java
+++ 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanPropagationDownstreamTest.java
@@ -32,6 +32,7 @@ public class SpanPropagationDownstreamTest extends 
ExchangeTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         TelemetryDevTracer tst = new TelemetryDevTracer();
         tst.setTraceFormat("json");
+        tst.setDisableCoreProcessors(true);
         CamelContext context = super.createCamelContext();
         CamelContextAware.trySetCamelContext(tst, context);
         tst.init(context);
diff --git 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanPropagationUpstreamTest.java
 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanPropagationUpstreamTest.java
index 19af81965cc1..44c8b3b6b40a 100644
--- 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanPropagationUpstreamTest.java
+++ 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/SpanPropagationUpstreamTest.java
@@ -34,6 +34,7 @@ public class SpanPropagationUpstreamTest extends 
TelemetryDevTracerTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         TelemetryDevTracer tst = new TelemetryDevTracer();
         tst.setTraceFormat("json");
+        tst.setDisableCoreProcessors(true);
         CamelContext context = super.createCamelContext();
         CamelContextAware.trySetCamelContext(tst, context);
         tst.init(context);
diff --git 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTest.java
 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTest.java
index 6fea7695553d..cd0c4f838bf3 100644
--- 
a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTest.java
+++ 
b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTest.java
@@ -38,6 +38,7 @@ public class TelemetryDevTracerTest extends 
TelemetryDevTracerTestSupport {
     protected CamelContext createCamelContext() throws Exception {
         TelemetryDevTracer tst = new TelemetryDevTracer();
         tst.setTraceFormat("json");
+        tst.setDisableCoreProcessors(true);
         CamelContext context = super.createCamelContext();
         CamelContextAware.trySetCamelContext(tst, context);
         tst.init(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 ae32f58b5d56..6479e8ebf213 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 {
 
-    public MockSpanLifecycleManager slcm;
+    MockSpanLifecycleManager slcm;
 
     @Override
     protected void initTracer() {
@@ -47,8 +47,7 @@ public class MockTracer extends Tracer {
         return slcm.traces();
     }
 
-    // NOTE: public because we're using directly in a test case to generate a 
custom span
-    public class MockSpanLifecycleManager implements SpanLifecycleManager {
+    private class MockSpanLifecycleManager implements SpanLifecycleManager {
 
         // Used to collect the traces for later evaluation as traces
         Map<String, Span> inMemoryStorageMap = new HashMap<>();

Reply via email to