You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2026/05/08 07:55:12 UTC
(camel) 05/09: chore(components): telemetry dev core processors
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 <pa...@gmail.com>
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<>();