Skip to content

Commit aa4edf1

Browse files
authored
Merge pull request #9439 from jmartisk/graphql-tracing
Enable tracing in the SmallRye GraphQL extension
2 parents cee1b75 + 17b8677 commit aa4edf1

File tree

6 files changed

+68
-1
lines changed

6 files changed

+68
-1
lines changed

core/deployment/src/main/java/io/quarkus/deployment/Capabilities.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public final class Capabilities extends SimpleBuildItem {
3636
public static final String CONTAINER_IMAGE_DOCKER = "io.quarkus.container-image-docker";
3737
public static final String CONTAINER_IMAGE_S2I = "io.quarkus.container-image-s2i";
3838
public static final String HIBERNATE_ORM = "io.quarkus.hibernate-orm";
39+
public static final String SMALLRYE_OPENTRACING = "io.quarkus.opentracing";
3940

4041
private final Set<String> capabilities;
4142

extensions/smallrye-graphql/deployment/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@
6565
<artifactId>quarkus-smallrye-metrics</artifactId>
6666
<scope>test</scope>
6767
</dependency>
68+
<dependency>
69+
<groupId>io.quarkus</groupId>
70+
<artifactId>quarkus-smallrye-opentracing</artifactId>
71+
<scope>test</scope>
72+
</dependency>
6873
</dependencies>
6974

7075
<build>

extensions/smallrye-graphql/deployment/src/main/java/io/quarkus/smallrye/graphql/deployment/SmallRyeGraphQLProcessor.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,14 @@ void buildEndpoints(
223223
new RouteBuildItem(quarkusConfig.rootPath + SCHEMA_PATH, schemaHandler, HandlerType.BLOCKING));
224224
}
225225

226+
@BuildStep
227+
void openTracingIntegration(Capabilities capabilities,
228+
BuildProducer<SystemPropertyBuildItem> properties) {
229+
if (capabilities.isCapabilityPresent(Capabilities.SMALLRYE_OPENTRACING)) {
230+
properties.produce(new SystemPropertyBuildItem("smallrye.graphql.tracing.enabled", "true"));
231+
}
232+
}
233+
226234
private Set<String> getClassesToRegisterForReflection(Schema schema) {
227235
// Unique list of classes we need to do reflection on
228236
Set<String> classes = new HashSet<>();
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package io.quarkus.smallrye.graphql.deployment;
2+
3+
import java.util.List;
4+
import java.util.stream.Collectors;
5+
6+
import org.jboss.shrinkwrap.api.ShrinkWrap;
7+
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
8+
import org.jboss.shrinkwrap.api.spec.JavaArchive;
9+
import org.junit.jupiter.api.Assertions;
10+
import org.junit.jupiter.api.BeforeEach;
11+
import org.junit.jupiter.api.Test;
12+
import org.junit.jupiter.api.extension.RegisterExtension;
13+
14+
import io.opentracing.mock.MockSpan;
15+
import io.opentracing.mock.MockTracer;
16+
import io.opentracing.util.GlobalTracer;
17+
import io.quarkus.test.QuarkusUnitTest;
18+
19+
public class GraphQLTracingTest extends AbstractGraphQLTest {
20+
21+
@RegisterExtension
22+
static QuarkusUnitTest test = new QuarkusUnitTest()
23+
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
24+
.addClasses(TestResource.class, TestPojo.class, TestRandom.class)
25+
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"));
26+
27+
static MockTracer mockTracer = new MockTracer();
28+
29+
static {
30+
GlobalTracer.register(mockTracer);
31+
}
32+
33+
@BeforeEach
34+
public void before() {
35+
mockTracer.reset();
36+
}
37+
38+
@Test
39+
public void testTracing() {
40+
pingTest();
41+
List<MockSpan> spans = mockTracer.finishedSpans()
42+
.stream()
43+
.filter(span -> span.operationName().equals("GraphQL:Query.ping"))
44+
.collect(Collectors.toList());
45+
Assertions.assertEquals(1, spans.size());
46+
}
47+
48+
}

extensions/smallrye-graphql/deployment/src/test/java/io/quarkus/smallrye/graphql/deployment/ui/DisabledTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,5 @@ public class DisabledTest {
1919
@Test
2020
public void shouldUseDefaultConfig() {
2121
RestAssured.when().get("/graphql-ui").then().statusCode(404);
22-
RestAssured.when().get("/graphql-ui/index.html").then().statusCode(404);
2322
}
2423
}

extensions/smallrye-opentracing/deployment/src/main/java/io/quarkus/smallrye/opentracing/deployment/SmallRyeOpenTracingProcessor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import io.quarkus.deployment.Capabilities;
1212
import io.quarkus.deployment.annotations.BuildProducer;
1313
import io.quarkus.deployment.annotations.BuildStep;
14+
import io.quarkus.deployment.builditem.CapabilityBuildItem;
1415
import io.quarkus.deployment.builditem.FeatureBuildItem;
1516
import io.quarkus.deployment.builditem.nativeimage.ReflectiveMethodBuildItem;
1617
import io.quarkus.resteasy.common.spi.ResteasyJaxrsProviderBuildItem;
@@ -59,4 +60,9 @@ void setupFilter(BuildProducer<ResteasyJaxrsProviderBuildItem> providers,
5960
}
6061
}
6162

63+
@BuildStep
64+
public CapabilityBuildItem capability() {
65+
return new CapabilityBuildItem(Capabilities.SMALLRYE_OPENTRACING);
66+
}
67+
6268
}

0 commit comments

Comments
 (0)