Skip to content

Commit

Permalink
Enable tracing in the SmallRye GraphQL extension
Browse files Browse the repository at this point in the history
  • Loading branch information
jmartisk committed May 25, 2020
1 parent 08c30ea commit 17b8677
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public final class Capabilities extends SimpleBuildItem {
public static final String CONTAINER_IMAGE_DOCKER = "io.quarkus.container-image-docker";
public static final String CONTAINER_IMAGE_S2I = "io.quarkus.container-image-s2i";
public static final String HIBERNATE_ORM = "io.quarkus.hibernate-orm";
public static final String SMALLRYE_OPENTRACING = "io.quarkus.opentracing";

private final Set<String> capabilities;

Expand Down
5 changes: 5 additions & 0 deletions extensions/smallrye-graphql/deployment/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@
<artifactId>quarkus-smallrye-metrics</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-opentracing</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,14 @@ void buildEndpoints(
new RouteBuildItem(quarkusConfig.rootPath + SCHEMA_PATH, schemaHandler, HandlerType.BLOCKING));
}

@BuildStep
void openTracingIntegration(Capabilities capabilities,
BuildProducer<SystemPropertyBuildItem> properties) {
if (capabilities.isCapabilityPresent(Capabilities.SMALLRYE_OPENTRACING)) {
properties.produce(new SystemPropertyBuildItem("smallrye.graphql.tracing.enabled", "true"));
}
}

private Set<String> getClassesToRegisterForReflection(Schema schema) {
// Unique list of classes we need to do reflection on
Set<String> classes = new HashSet<>();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package io.quarkus.smallrye.graphql.deployment;

import java.util.List;
import java.util.stream.Collectors;

import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.opentracing.mock.MockSpan;
import io.opentracing.mock.MockTracer;
import io.opentracing.util.GlobalTracer;
import io.quarkus.test.QuarkusUnitTest;

public class GraphQLTracingTest extends AbstractGraphQLTest {

@RegisterExtension
static QuarkusUnitTest test = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClasses(TestResource.class, TestPojo.class, TestRandom.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"));

static MockTracer mockTracer = new MockTracer();

static {
GlobalTracer.register(mockTracer);
}

@BeforeEach
public void before() {
mockTracer.reset();
}

@Test
public void testTracing() {
pingTest();
List<MockSpan> spans = mockTracer.finishedSpans()
.stream()
.filter(span -> span.operationName().equals("GraphQL:Query.ping"))
.collect(Collectors.toList());
Assertions.assertEquals(1, spans.size());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,5 @@ public class DisabledTest {
@Test
public void shouldUseDefaultConfig() {
RestAssured.when().get("/graphql-ui").then().statusCode(404);
RestAssured.when().get("/graphql-ui/index.html").then().statusCode(404);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import io.quarkus.deployment.Capabilities;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.CapabilityBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveMethodBuildItem;
import io.quarkus.resteasy.common.spi.ResteasyJaxrsProviderBuildItem;
Expand Down Expand Up @@ -59,4 +60,9 @@ void setupFilter(BuildProducer<ResteasyJaxrsProviderBuildItem> providers,
}
}

@BuildStep
public CapabilityBuildItem capability() {
return new CapabilityBuildItem(Capabilities.SMALLRYE_OPENTRACING);
}

}

0 comments on commit 17b8677

Please sign in to comment.