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 40ea0df Add test coverage for OpenTelemetry WithSpan annotation 40ea0df is described below commit 40ea0df4d009e7f56178ed354034d6ad6e175597 Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Fri Jan 7 13:27:27 2022 +0000 Add test coverage for OpenTelemetry WithSpan annotation --- integration-tests/opentelemetry/pom.xml | 17 ++++++++++++++++ ...enTelemetryResource.java => GreetingsBean.java} | 23 +++++++--------------- .../opentelemetry/it/OpenTelemetryResource.java | 8 ++++++++ .../it/OpenTelemetryRouteBuilder.java | 3 +++ .../opentelemetry/it/OpenTelemetryTest.java | 15 ++++++++++++++ 5 files changed, 50 insertions(+), 16 deletions(-) diff --git a/integration-tests/opentelemetry/pom.xml b/integration-tests/opentelemetry/pom.xml index 89d0216..c1755a8 100644 --- a/integration-tests/opentelemetry/pom.xml +++ b/integration-tests/opentelemetry/pom.xml @@ -33,6 +33,10 @@ <dependencies> <dependency> <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-bean</artifactId> + </dependency> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-direct</artifactId> </dependency> <dependency> @@ -112,6 +116,19 @@ <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory --> <dependency> <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-bean-deployment</artifactId> + <version>${project.version}</version> + <type>pom</type> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-direct-deployment</artifactId> <version>${project.version}</version> <type>pom</type> diff --git a/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryResource.java b/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/GreetingsBean.java similarity index 66% copy from integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryResource.java copy to integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/GreetingsBean.java index 06e8bc2..ed6aa39 100644 --- a/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryResource.java +++ b/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/GreetingsBean.java @@ -17,25 +17,16 @@ package org.apache.camel.quarkus.component.opentelemetry.it; import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; +import javax.inject.Named; -import org.apache.camel.ProducerTemplate; +import io.opentelemetry.extension.annotations.WithSpan; -@Path("/opentelemetry") @ApplicationScoped -public class OpenTelemetryResource { +@Named("greetingsBean") +public class GreetingsBean { - @Inject - ProducerTemplate producerTemplate; - - @Path("/trace") - @GET - @Produces(MediaType.TEXT_PLAIN) - public String traceRoute() { - return producerTemplate.requestBody("direct:start", null, String.class); + @WithSpan + public String greet(String name) { + return "Hello " + name; } } diff --git a/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryResource.java b/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryResource.java index 06e8bc2..23e1395 100644 --- a/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryResource.java +++ b/integration-tests/opentelemetry/src/main/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryResource.java @@ -20,6 +20,7 @@ import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; +import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @@ -38,4 +39,11 @@ public class OpenTelemetryResource { public String traceRoute() { return producerTemplate.requestBody("direct:start", null, String.class); } + + @Path("/greet/{name}") + @GET + @Produces(MediaType.TEXT_PLAIN) + public String traceRoute(@PathParam("name") String name) { + return producerTemplate.requestBody("direct:greet", name, String.class); + } } 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 375b71f..3c3f7e6 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 @@ -33,6 +33,9 @@ public class OpenTelemetryRouteBuilder extends RouteBuilder { from("direct:start") .setBody().constant("Traced direct:start"); + from("direct:greet") + .bean("greetingsBean"); + from("timer:filtered?repeatCount=5&delay=-1") .setBody().constant("Route filtered from tracing"); } 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 3e78556..876030f 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 @@ -81,6 +81,21 @@ class OpenTelemetryTest { assertEquals(spans.get(0).get("parentId"), spans.get(1).get("spanId")); } + @Test + public void testTracedBean() { + String name = "Camel Quarkus OpenTelemetry"; + RestAssured.get("/opentelemetry/greet/" + name) + .then() + .statusCode(200) + .body(equalTo("Hello " + name)); + + // Verify the span hierarchy is JAX-RS Service -> Direct Endpoint -> Bean Method + List<Map<String, String>> spans = getSpans(); + assertEquals(3, spans.size()); + assertEquals(spans.get(0).get("parentId"), spans.get(1).get("parentId")); + assertEquals(spans.get(1).get("parentId"), spans.get(2).get("spanId")); + } + private List<Map<String, String>> getSpans() { return RestAssured.given() .get("/opentelemetry/exporter/spans")