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")

Reply via email to