Skip to content
This repository was archived by the owner on Dec 19, 2023. It is now read-only.

Commit 88e7423

Browse files
author
Bruno Rodrigues
committed
Fix test for GraphQlTest annotation because of actuator auto configuration
1 parent 2b66bd6 commit 88e7423

File tree

5 files changed

+30
-18
lines changed

5 files changed

+30
-18
lines changed

gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ LIB_GRAPHQL_JAVA_VER = 9.2
4040
LIB_JUNIT_VER = 4.12
4141
LIB_SPRING_CORE_VER = 5.0.4.RELEASE
4242
LIB_SPRING_BOOT_VER = 2.0.5.RELEASE
43-
LIB_MICROMETER_VER = 1.0.6
4443
LIB_GRAPHQL_SERVLET_VER = 6.1.4
4544
LIB_GRAPHQL_JAVA_TOOLS_VER = 5.3.3
4645
LIB_COMMONS_IO_VER = 2.6

graphql-spring-boot-autoconfigure/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ dependencies {
2121
compile "org.springframework.boot:spring-boot-configuration-processor:$LIB_SPRING_BOOT_VER"
2222
compile "org.springframework.boot:spring-boot-autoconfigure:$LIB_SPRING_BOOT_VER"
2323
compile "org.springframework.boot:spring-boot-starter-websocket:$LIB_SPRING_BOOT_VER"
24-
compile "io.micrometer:micrometer-core:$LIB_MICROMETER_VER"
24+
compile "org.springframework.boot:spring-boot-starter-actuator:$LIB_SPRING_BOOT_VER"
2525
compile "com.graphql-java-kickstart:graphql-java-servlet:$LIB_GRAPHQL_SERVLET_VER"
2626
compile "commons-io:commons-io:$LIB_COMMONS_IO_VER"
2727
compile "com.graphql-java-kickstart:graphql-java-tools:$LIB_GRAPHQL_JAVA_TOOLS_VER"

graphql-spring-boot-autoconfigure/src/main/java/com/oembedler/moon/graphql/boot/GraphQLInstrumentationAutoConfiguration.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
import graphql.execution.instrumentation.tracing.TracingInstrumentation;
66
import io.micrometer.core.instrument.MeterRegistry;
77
import org.springframework.beans.factory.annotation.Value;
8+
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
9+
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
10+
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
11+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
812
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
913
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1014
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -15,6 +19,7 @@
1519
* @author Marcel Overdijk
1620
*/
1721
@Configuration
22+
@AutoConfigureAfter({MetricsAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class})
1823
@ConditionalOnProperty(value = "graphql.servlet.enabled", havingValue = "true", matchIfMissing = true)
1924
@EnableConfigurationProperties({GraphQLServletProperties.class})
2025
public class GraphQLInstrumentationAutoConfiguration {
@@ -47,8 +52,9 @@ public MaxQueryDepthInstrumentation maxQueryDepthInstrumentation() {
4752
}
4853

4954
@Bean
50-
@ConditionalOnMissingBean
5155
@ConditionalOnProperty(value = "graphql.servlet.actuator-metrics", havingValue = "true")
56+
@ConditionalOnBean(MeterRegistry.class)
57+
@ConditionalOnMissingBean
5258
public MetricsInstrumentation metricsInstrumentation(MeterRegistry meterRegistry) {
5359
return new MetricsInstrumentation(meterRegistry);
5460
}

graphql-spring-boot-autoconfigure/src/main/java/com/oembedler/moon/graphql/boot/MetricsInstrumentation.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@
1717
*/
1818
public class MetricsInstrumentation extends SimpleInstrumentation {
1919

20-
public InstrumentationState createState() {
21-
return new MetricsSupport();
22-
}
23-
2420
private MeterRegistry meterRegistry;
2521

2622
private static final String OPERATION_TIME_METRIC_NAME = "graphql.timer.operation";
@@ -34,21 +30,28 @@ public MetricsInstrumentation(MeterRegistry meterRegistry) {
3430
this.meterRegistry = meterRegistry;
3531
}
3632

33+
//This create a custom instrumentation state that stores any needed value.
34+
//In this case, it stores the begin time of the query
35+
@Override
36+
public InstrumentationState createState() {
37+
return new MetricsSupport();
38+
}
39+
3740
@Override
3841
public InstrumentationContext<ExecutionResult> beginExecution(InstrumentationExecutionParameters parameters) {
3942

4043
return new SimpleInstrumentationContext<ExecutionResult>() {
4144
@Override
4245
public void onCompleted(ExecutionResult result, Throwable t) {
4346

44-
GraphQLContext graphQLContext = parameters.getContext();
45-
MetricsSupport metricsSupport = parameters.getInstrumentationState();
46-
if (graphQLContext.getHttpServletRequest().isPresent()) {
47+
GraphQLContext graphQLContext = parameters.getContext();
48+
MetricsSupport metricsSupport = parameters.getInstrumentationState();
49+
if (graphQLContext.getHttpServletRequest().isPresent()) {
4750

48-
Timer timer = buildTimer(parameters.getOperation(), t);
49-
timer.record(metricsSupport.getTotalTime(), TimeUnit.NANOSECONDS);
51+
Timer timer = buildTimer(parameters.getOperation(), t);
52+
timer.record(metricsSupport.getTotalTime(), TimeUnit.NANOSECONDS);
5053

51-
}
54+
}
5255

5356
}
5457

graphql-spring-boot-test-autoconfigure/src/main/java/com/graphql/spring/boot/test/GraphQLTest.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,27 @@
33
import com.coxautodev.graphql.tools.GraphQLResolver;
44
import com.coxautodev.graphql.tools.SchemaParserDictionary;
55
import com.coxautodev.graphql.tools.SchemaParserOptions;
6-
import com.graphql.spring.boot.test.GraphQLTestAutoConfiguration;
7-
import com.oembedler.moon.graphql.boot.*;
6+
import com.oembedler.moon.graphql.boot.GraphQLInstrumentationAutoConfiguration;
7+
import com.oembedler.moon.graphql.boot.GraphQLJavaToolsAutoConfiguration;
8+
import com.oembedler.moon.graphql.boot.GraphQLWebAutoConfiguration;
89
import graphql.execution.ExecutionStrategy;
910
import graphql.execution.instrumentation.Instrumentation;
1011
import graphql.execution.preparsed.PreparsedDocumentProvider;
1112
import graphql.schema.GraphQLScalarType;
1213
import graphql.schema.GraphQLSchema;
1314
import graphql.schema.idl.SchemaParser;
1415
import graphql.servlet.*;
16+
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
17+
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
1518
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
1619
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
1720
import org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration;
1821
import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration;
1922
import org.springframework.boot.test.context.SpringBootTest;
2023
import org.springframework.context.annotation.ComponentScan;
21-
import org.springframework.context.annotation.PropertySource;
2224
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
2325
import org.springframework.core.annotation.AliasFor;
2426
import org.springframework.test.context.ActiveProfiles;
25-
import org.springframework.test.context.TestPropertySource;
2627
import org.springframework.web.filter.CorsFilter;
2728
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
2829

@@ -87,12 +88,15 @@
8788
annotation = ImportAutoConfiguration.class
8889
)
8990
Class<?>[] classes() default {
91+
GraphQLInstrumentationAutoConfiguration.class,
9092
ServletWebServerFactoryAutoConfiguration.class,
9193
GraphQLJavaToolsAutoConfiguration.class,
9294
GraphQLWebAutoConfiguration.class,
9395
GraphQLTestAutoConfiguration.class,
9496
PropertySourcesPlaceholderConfigurer.class,
95-
WebSocketServletAutoConfiguration.class
97+
WebSocketServletAutoConfiguration.class,
98+
MetricsAutoConfiguration.class,
99+
SimpleMetricsExportAutoConfiguration.class
96100
};
97101

98102
@AliasFor(

0 commit comments

Comments
 (0)