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 <[email protected]>
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")