This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 9dadd58319 Disable internal HTTP client tracing for vertx-http
9dadd58319 is described below
commit 9dadd58319f981bd563505cc6ce8e242cb832681
Author: James Netherton <[email protected]>
AuthorDate: Wed Feb 25 16:41:14 2026 +0000
Disable internal HTTP client tracing for vertx-http
---
.../vertx/http/CamelVertxHttpRecorder.java | 2 +
integration-tests/opentelemetry/pom.xml | 17 +++++
.../it/OpenTelemetryRouteBuilder.java | 17 ++++-
.../opentelemetry/it/OpenTelemetryTest.java | 11 +++-
integration-tests/opentelemetry2/pom.xml | 17 +++++
.../it/OpenTelemetry2RouteBuilder.java | 17 ++++-
.../src/main/resources/application.properties | 3 +
.../it/OpenTelemetry2TestHelper.java | 75 +++++++++++++++++++++-
.../opentelemetry2/it/Opentelemetry2Test.java | 11 +++-
9 files changed, 159 insertions(+), 11 deletions(-)
diff --git
a/extensions/vertx-http/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/http/CamelVertxHttpRecorder.java
b/extensions/vertx-http/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/http/CamelVertxHttpRecorder.java
index 23151344aa..d51e93cb23 100644
---
a/extensions/vertx-http/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/http/CamelVertxHttpRecorder.java
+++
b/extensions/vertx-http/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/http/CamelVertxHttpRecorder.java
@@ -19,6 +19,7 @@ package org.apache.camel.quarkus.component.vertx.http;
import io.quarkus.runtime.RuntimeValue;
import io.quarkus.runtime.annotations.Recorder;
import io.vertx.core.Vertx;
+import io.vertx.core.tracing.TracingPolicy;
import org.apache.camel.component.vertx.http.VertxHttpComponent;
@Recorder
@@ -27,6 +28,7 @@ public class CamelVertxHttpRecorder {
public RuntimeValue<?> createVertxHttpComponent(RuntimeValue<Vertx> vertx)
{
VertxHttpComponent component = new VertxHttpComponent();
component.setVertx(vertx.getValue());
+ component.setTracingPolicy(TracingPolicy.IGNORE);
return new RuntimeValue<>(component);
}
}
diff --git a/integration-tests/opentelemetry/pom.xml
b/integration-tests/opentelemetry/pom.xml
index aef9faaf50..f63ff9b2bb 100644
--- a/integration-tests/opentelemetry/pom.xml
+++ b/integration-tests/opentelemetry/pom.xml
@@ -64,6 +64,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-http</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-vertx-http</artifactId>
+ </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
@@ -222,6 +226,19 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+
<artifactId>camel-quarkus-vertx-http-deployment</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>*</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
</dependencies>
</profile>
<profile>
diff --git
a/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryRouteBuilder.java
b/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryRouteBuilder.java
index a389bd974e..b537d1b154 100644
---
a/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryRouteBuilder.java
+++
b/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryRouteBuilder.java
@@ -17,6 +17,7 @@
package org.apache.camel.quarkus.component.opentelemetry.it;
import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
public class OpenTelemetryRouteBuilder extends RouteBuilder {
@@ -43,9 +44,21 @@ public class OpenTelemetryRouteBuilder extends RouteBuilder {
.to("bean:jdbcQueryBean");
from("platform-http:/greeting")
- .log("Received at greeting: ${body}")
+ .log("Received /greeting request for component
${header.httpComponent}")
+ .process(new Processor() {
+ @Override
+ public void process(Exchange exchange) {
+ String baseUrl = "http://localhost";
+ String httpComponent =
exchange.getMessage().getHeader("httpComponent", String.class);
+ if (httpComponent.equals("http")) {
+ exchange.setVariable("httpUriPrefix", baseUrl);
+ } else {
+ exchange.setVariable("httpUriPrefix",
httpComponent + ":" + baseUrl);
+ }
+ }
+ })
.removeHeaders("*")
-
.to("http://localhost:{{quarkus.http.test-port}}/greeting-provider");
+
.toD("${variable.httpUriPrefix}:{{quarkus.http.test-port}}/greeting-provider");
from("platform-http:/greeting-provider")
.log("Received at greeting-provider: ${body}")
diff --git
a/integration-tests/opentelemetry/src/test/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryTest.java
b/integration-tests/opentelemetry/src/test/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryTest.java
index d3dde49388..5954c2c267 100644
---
a/integration-tests/opentelemetry/src/test/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryTest.java
+++
b/integration-tests/opentelemetry/src/test/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryTest.java
@@ -25,6 +25,8 @@ import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
import static
io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FUNCTION_NAME;
import static
org.apache.camel.quarkus.component.opentelemetry.it.OpenTelemetryTestHelper.getSpans;
@@ -145,9 +147,12 @@ class OpenTelemetryTest {
"org.apache.camel.quarkus.component.opentelemetry.it.OpenTelemetryResource.jdbcQuery");
}
- @Test
- public void testHttpInvocation() {
- RestAssured.get("/greeting")
+ @ParameterizedTest
+ @ValueSource(strings = { "http", "vertx-http" })
+ public void testHttpInvocation(String httpComponent) {
+ RestAssured.given()
+ .queryParam("httpComponent", httpComponent)
+ .get("/greeting")
.then()
.statusCode(200)
.body(equalTo("Hello From Camel Quarkus!"));
diff --git a/integration-tests/opentelemetry2/pom.xml
b/integration-tests/opentelemetry2/pom.xml
index 8e5dfc249c..e4a81e2eb1 100644
--- a/integration-tests/opentelemetry2/pom.xml
+++ b/integration-tests/opentelemetry2/pom.xml
@@ -68,6 +68,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-http</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-vertx-http</artifactId>
+ </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
@@ -235,6 +239,19 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+
<artifactId>camel-quarkus-vertx-http-deployment</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>*</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
</dependencies>
</profile>
<profile>
diff --git
a/integration-tests/opentelemetry2/src/main/java/org/apache/camel/quarkus/component/opentelemetry2/it/OpenTelemetry2RouteBuilder.java
b/integration-tests/opentelemetry2/src/main/java/org/apache/camel/quarkus/component/opentelemetry2/it/OpenTelemetry2RouteBuilder.java
index 3c60cabadc..17169f11e4 100644
---
a/integration-tests/opentelemetry2/src/main/java/org/apache/camel/quarkus/component/opentelemetry2/it/OpenTelemetry2RouteBuilder.java
+++
b/integration-tests/opentelemetry2/src/main/java/org/apache/camel/quarkus/component/opentelemetry2/it/OpenTelemetry2RouteBuilder.java
@@ -17,6 +17,7 @@
package org.apache.camel.quarkus.component.opentelemetry2.it;
import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
public class OpenTelemetry2RouteBuilder extends RouteBuilder {
@@ -46,9 +47,21 @@ public class OpenTelemetry2RouteBuilder extends RouteBuilder
{
.log("Trace info: CAMEL_SPAN_ID=${header.CAMEL_SPAN_ID},
CAMEL_TRACE_ID=${header.CAMEL_TRACE_ID}");
from("platform-http:/greeting")
- .log("Received at greeting: ${body}")
+ .log("Received /greeting request for component
${header.httpComponent}")
+ .process(new Processor() {
+ @Override
+ public void process(Exchange exchange) {
+ String baseUrl = "http://localhost";
+ String httpComponent =
exchange.getMessage().getHeader("httpComponent", String.class);
+ if (httpComponent.equals("http")) {
+ exchange.setVariable("httpUriPrefix", baseUrl);
+ } else {
+ exchange.setVariable("httpUriPrefix",
httpComponent + ":" + baseUrl);
+ }
+ }
+ })
.removeHeaders("*")
-
.to("http://localhost:{{quarkus.http.test-port}}/greeting-provider");
+
.toD("${variable.httpUriPrefix}:{{quarkus.http.test-port}}/greeting-provider");
from("platform-http:/greeting-provider")
.log("Received at greeting-provider: ${body}")
diff --git
a/integration-tests/opentelemetry2/src/main/resources/application.properties
b/integration-tests/opentelemetry2/src/main/resources/application.properties
index ae57815127..b82cd873c8 100644
--- a/integration-tests/opentelemetry2/src/main/resources/application.properties
+++ b/integration-tests/opentelemetry2/src/main/resources/application.properties
@@ -21,3 +21,6 @@ quarkus.otel.bsp.export.timeout=5s
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.telemetry=true
quarkus.datasource.devservices.image-name=${postgres.container.image}
+
+# To reduce console log verbosity set to false
+debug.span.hierarchy.enabled=true
diff --git
a/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/OpenTelemetry2TestHelper.java
b/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/OpenTelemetry2TestHelper.java
index 05fab0d6ac..d822c26a70 100644
---
a/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/OpenTelemetry2TestHelper.java
+++
b/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/OpenTelemetry2TestHelper.java
@@ -16,18 +16,28 @@
*/
package org.apache.camel.quarkus.component.opentelemetry2.it;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
import io.restassured.RestAssured;
+import org.eclipse.microprofile.config.ConfigProvider;
+import org.jboss.logging.Logger;
class OpenTelemetry2TestHelper {
+ private static final Logger LOG =
Logger.getLogger(OpenTelemetry2TestHelper.class);
+ private static final boolean DEBUG_SPAN_HIERARCHY =
ConfigProvider.getConfig().getValue("debug.span.hierarchy.enabled",
+ boolean.class);
+
private OpenTelemetry2TestHelper() {
// Utility class
}
static List<Map<String, String>> getSpans() {
- return RestAssured.given()
+ List<Map<String, String>> spans = RestAssured.given()
.get("/opentelemetry2/exporter/spans")
.then()
.statusCode(200)
@@ -35,5 +45,68 @@ class OpenTelemetry2TestHelper {
.body()
.jsonPath()
.get();
+
+ if (DEBUG_SPAN_HIERARCHY) {
+ printSpanHierarchy(spans);
+ }
+
+ return spans;
+ }
+
+ public static void printSpanHierarchy(List<Map<String, String>> spans) {
+ if (spans.isEmpty()) {
+ return;
+ }
+
+ Map<String, List<Map<String, String>>> spansByTraceId = spans.stream()
+ .collect(Collectors.groupingBy(span -> span.get("traceId")));
+
+ for (Map.Entry<String, List<Map<String, String>>> entry :
spansByTraceId.entrySet()) {
+ LOG.infof("Trace ID: %s", entry.getKey());
+ printTraceHierarchy(entry.getValue());
+ }
+ }
+
+ private static void printTraceHierarchy(List<Map<String, String>> spans) {
+ Map<String, List<Map<String, String>>> childrenByParentId = new
HashMap<>();
+ Set<String> spanIds = spans.stream().map(span ->
span.get("spanId")).collect(Collectors.toSet());
+
+ for (Map<String, String> span : spans) {
+ String parentId = span.get("parentId");
+ childrenByParentId.computeIfAbsent(parentId, k -> new
ArrayList<>()).add(span);
+ }
+
+ List<Map<String, String>> rootSpans = spans.stream()
+ .filter(span -> !spanIds.contains(span.get("parentId")))
+ .toList();
+
+ for (Map<String, String> rootSpan : rootSpans) {
+ printSpan(rootSpan, childrenByParentId, "");
+ }
+ }
+
+ private static void printSpan(Map<String, String> span, Map<String,
List<Map<String, String>>> childrenByParentId,
+ String indent) {
+ LOG.infof("%s- %s", indent, spanToString(span));
+
+ List<Map<String, String>> children =
childrenByParentId.get(span.get("spanId"));
+ if (children != null) {
+ for (Map<String, String> child : children) {
+ printSpan(child, childrenByParentId, indent + " ");
+ }
+ }
+ }
+
+ private static String spanToString(Map<String, String> span) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("spanId=").append(span.get("spanId"));
+ sb.append(", parentId=").append(span.get("parentId"));
+ sb.append(", kind=").append(span.get("kind"));
+
+ span.entrySet().stream()
+ .filter(entry -> !Set.of("traceId", "spanId", "parentId",
"kind").contains(entry.getKey()))
+ .forEach(entry -> sb.append(",
").append(entry.getKey()).append("=").append(entry.getValue()));
+
+ return sb.toString();
}
}
diff --git
a/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/Opentelemetry2Test.java
b/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/Opentelemetry2Test.java
index 28f978b7b3..c17b7c8b8f 100644
---
a/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/Opentelemetry2Test.java
+++
b/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/Opentelemetry2Test.java
@@ -25,6 +25,8 @@ import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
import static
io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FUNCTION_NAME;
import static
org.apache.camel.quarkus.component.opentelemetry2.it.OpenTelemetry2TestHelper.getSpans;
@@ -170,9 +172,12 @@ class Opentelemetry2Test {
.header("traceId", not(emptyOrNullString()));
}
- @Test
- public void testHttpInvocation() {
- RestAssured.get("/greeting")
+ @ParameterizedTest
+ @ValueSource(strings = { "http", "vertx-http" })
+ void testHttpInvocation(String httpComponent) {
+ RestAssured.given()
+ .queryParam("httpComponent", httpComponent)
+ .get("/greeting")
.then()
.statusCode(200)
.body(equalTo("Hello From Camel Quarkus!"));