From ef8554daa6a88c4b9770050561310a9ba31aa05c Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 8 Sep 2021 12:21:54 +0200 Subject: [PATCH] Fixed the build for Boot 2.6.0 Snapshots --- .../TraceWebSocketAutoConfiguration.java | 48 +++++++++++-------- .../quartz/TraceQuartzAutoConfiguration.java | 27 ++++++----- ...oConfigurationWithDisabledSleuthTests.java | 18 ++++++- .../CorrelationScopeDecoratorTest.java | 17 ++++++- ...gingAutoConfigurationIntegrationTests.java | 15 +++++- .../opentracing/OpenTracingTest.java | 15 +++++- .../EndpointWithCyclicDependenciesTests.java | 2 +- ...-disabled.yml => application-disabled.yml} | 0 .../feign/issues/issue307/Issue307Tests.java | 26 ++++++---- ...uthSpanCreatorCircularDependencyTests.java | 2 + 10 files changed, 123 insertions(+), 47 deletions(-) rename spring-cloud-sleuth-autoconfigure/src/test/resources/{bootstrap-disabled.yml => application-disabled.yml} (100%) diff --git a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/messaging/TraceWebSocketAutoConfiguration.java b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/messaging/TraceWebSocketAutoConfiguration.java index 694c75400..ee0d20ac1 100644 --- a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/messaging/TraceWebSocketAutoConfiguration.java +++ b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/messaging/TraceWebSocketAutoConfiguration.java @@ -16,7 +16,6 @@ package org.springframework.cloud.sleuth.autoconfig.instrument.messaging; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -53,31 +52,31 @@ import org.springframework.web.socket.config.annotation.StompEndpointRegistry; @AutoConfigureAfter(BraveAutoConfiguration.class) class TraceWebSocketAutoConfiguration extends AbstractWebSocketMessageBrokerConfigurer { - @Autowired - Tracer tracer; + private final Tracer tracer; - @Autowired - Propagator propagator; + private final Propagator propagator; - @Autowired - Propagator.Setter setter; + private final Propagator.Setter setter; - @Autowired - Propagator.Getter getter; + private final Propagator.Getter getter; - @Autowired - SleuthMessagingProperties sleuthMessagingProperties; + private final SleuthMessagingProperties sleuthMessagingProperties; - @Autowired - MessageSpanCustomizer messageSpanCustomizer; + private final MessageSpanCustomizer messageSpanCustomizer; - @Autowired - ApplicationContext applicationContext; + private final ApplicationContext applicationContext; - @Bean - @ConditionalOnMissingBean - MessageSpanCustomizer defaultMessageSpanCustomizer() { - return new DefaultMessageSpanCustomizer(); + TraceWebSocketAutoConfiguration(Tracer tracer, Propagator propagator, + Propagator.Setter setter, Propagator.Getter getter, + SleuthMessagingProperties sleuthMessagingProperties, MessageSpanCustomizer messageSpanCustomizer, + ApplicationContext applicationContext) { + this.tracer = tracer; + this.propagator = propagator; + this.setter = setter; + this.getter = getter; + this.sleuthMessagingProperties = sleuthMessagingProperties; + this.messageSpanCustomizer = messageSpanCustomizer; + this.applicationContext = applicationContext; } @Override @@ -109,4 +108,15 @@ class TraceWebSocketAutoConfiguration extends AbstractWebSocketMessageBrokerConf registration.interceptors(tracingChannelInterceptor()); } + @Configuration(proxyBeanMethods = false) + static class Config { + + @Bean + @ConditionalOnMissingBean + MessageSpanCustomizer defaultMessageSpanCustomizer() { + return new DefaultMessageSpanCustomizer(); + } + + } + } diff --git a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/quartz/TraceQuartzAutoConfiguration.java b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/quartz/TraceQuartzAutoConfiguration.java index b13262208..fcdf4309b 100644 --- a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/quartz/TraceQuartzAutoConfiguration.java +++ b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/quartz/TraceQuartzAutoConfiguration.java @@ -47,22 +47,17 @@ public class TraceQuartzAutoConfiguration implements InitializingBean { private final Scheduler scheduler; - private final Tracer tracer; - - private final Propagator propagator; + private final BeanFactory beanFactory; + @Deprecated public TraceQuartzAutoConfiguration(Scheduler scheduler, Tracer tracer, Propagator propagator) { - this.scheduler = scheduler; - this.tracer = tracer; - this.propagator = propagator; + this(scheduler, null); } @Autowired - BeanFactory beanFactory; - - @Bean - TracingJobListener tracingJobListener() { - return new TracingJobListener(this.tracer, this.propagator); + public TraceQuartzAutoConfiguration(Scheduler scheduler, BeanFactory beanFactory) { + this.scheduler = scheduler; + this.beanFactory = beanFactory; } @Override @@ -72,4 +67,14 @@ public class TraceQuartzAutoConfiguration implements InitializingBean { this.scheduler.getListenerManager().addJobListener(tracingJobListener); } + @Configuration(proxyBeanMethods = false) + static class Config { + + @Bean + TracingJobListener tracingJobListener(Tracer tracer, Propagator propagator) { + return new TracingJobListener(tracer, propagator); + } + + } + } diff --git a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/BraveAutoConfigurationWithDisabledSleuthTests.java b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/BraveAutoConfigurationWithDisabledSleuthTests.java index 8b7434b84..50cf7d13e 100644 --- a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/BraveAutoConfigurationWithDisabledSleuthTests.java +++ b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/BraveAutoConfigurationWithDisabledSleuthTests.java @@ -25,10 +25,19 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; +import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration; +import org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; +import org.springframework.cloud.gateway.config.GatewayAutoConfiguration; +import org.springframework.cloud.gateway.config.GatewayClassPathWarningAutoConfiguration; +import org.springframework.cloud.gateway.config.GatewayMetricsAutoConfiguration; import org.springframework.cloud.sleuth.DisableSecurity; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.ActiveProfiles; @@ -62,7 +71,7 @@ public class BraveAutoConfigurationWithDisabledSleuthTests { public void shouldNotContainAnyTracingInfoInTheLogs(CapturedOutput capture) { log.info("hello"); - // prove bootstrap-disabled.yml loaded + // prove application-disabled.yml loaded assertThat(applicationName).isEqualTo("disabledapplication"); // spring.application.name is put in the log format by @@ -71,7 +80,12 @@ public class BraveAutoConfigurationWithDisabledSleuthTests { BDDAssertions.then(capture.toString()).doesNotContain("[disabledapplication"); } - @EnableAutoConfiguration + @EnableAutoConfiguration( + exclude = { GatewayClassPathWarningAutoConfiguration.class, GatewayAutoConfiguration.class, + GatewayMetricsAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, + MongoAutoConfiguration.class, QuartzAutoConfiguration.class, R2dbcAutoConfiguration.class, + RedisAutoConfiguration.class, CassandraAutoConfiguration.class }, + excludeName = "org.springframework.cloud.gateway.config.GatewayRedisAutoConfiguration") @Configuration(proxyBeanMethods = false) @DisableSecurity static class Config { diff --git a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/baggage/CorrelationScopeDecoratorTest.java b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/baggage/CorrelationScopeDecoratorTest.java index 048103ead..befacd8a9 100644 --- a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/baggage/CorrelationScopeDecoratorTest.java +++ b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/baggage/CorrelationScopeDecoratorTest.java @@ -30,8 +30,16 @@ import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; +import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration; +import org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.gateway.config.GatewayAutoConfiguration; +import org.springframework.cloud.gateway.config.GatewayClassPathWarningAutoConfiguration; +import org.springframework.cloud.gateway.config.GatewayMetricsAutoConfiguration; import static brave.propagation.CurrentTraceContext.Scope.NOOP; import static org.assertj.core.api.Assertions.assertThat; @@ -42,9 +50,14 @@ import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, properties = { "spring.sleuth.baggage.remote-fields=x-vcap-request-id,country-code", "spring.sleuth.baggage.local-fields=bp", "spring.sleuth.baggage.correlation-fields=country-code,bp", - "spring.sleuth.tracer.mode=BRAVE" }) + "spring.sleuth.tracer.mode=BRAVE", "debug=true" }) @SpringBootConfiguration -@EnableAutoConfiguration +@EnableAutoConfiguration( + exclude = { GatewayClassPathWarningAutoConfiguration.class, GatewayAutoConfiguration.class, + GatewayMetricsAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, + MongoAutoConfiguration.class, QuartzAutoConfiguration.class, R2dbcAutoConfiguration.class, + CassandraAutoConfiguration.class }, + excludeName = "org.springframework.cloud.gateway.config.GatewayRedisAutoConfiguration") public class CorrelationScopeDecoratorTest { static final BaggageField COUNTRY_CODE = BaggageField.create("country-code"); diff --git a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/messaging/BraveMessagingAutoConfigurationIntegrationTests.java b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/messaging/BraveMessagingAutoConfigurationIntegrationTests.java index 86cc9da85..37221438c 100644 --- a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/messaging/BraveMessagingAutoConfigurationIntegrationTests.java +++ b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/messaging/BraveMessagingAutoConfigurationIntegrationTests.java @@ -27,8 +27,16 @@ import brave.test.TestSpanHandler; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; +import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration; +import org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.gateway.config.GatewayAutoConfiguration; +import org.springframework.cloud.gateway.config.GatewayClassPathWarningAutoConfiguration; +import org.springframework.cloud.gateway.config.GatewayMetricsAutoConfiguration; import org.springframework.cloud.sleuth.brave.instrument.messaging.ConsumerSampler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -49,7 +57,12 @@ public class BraveMessagingAutoConfigurationIntegrationTests { then(this.sampler).isNotNull(); } - @EnableAutoConfiguration + @EnableAutoConfiguration( + exclude = { GatewayClassPathWarningAutoConfiguration.class, GatewayAutoConfiguration.class, + GatewayMetricsAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, + MongoAutoConfiguration.class, QuartzAutoConfiguration.class, R2dbcAutoConfiguration.class, + CassandraAutoConfiguration.class }, + excludeName = "org.springframework.cloud.gateway.config.GatewayRedisAutoConfiguration") @Configuration(proxyBeanMethods = false) public static class Config { diff --git a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/opentracing/OpenTracingTest.java b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/opentracing/OpenTracingTest.java index 3e19f084e..2173f6f36 100644 --- a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/opentracing/OpenTracingTest.java +++ b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/opentracing/OpenTracingTest.java @@ -36,8 +36,16 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; +import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration; +import org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.gateway.config.GatewayAutoConfiguration; +import org.springframework.cloud.gateway.config.GatewayClassPathWarningAutoConfiguration; +import org.springframework.cloud.gateway.config.GatewayMetricsAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -251,7 +259,12 @@ public class OpenTracingTest { } @Configuration(proxyBeanMethods = false) - @EnableAutoConfiguration + @EnableAutoConfiguration( + exclude = { GatewayClassPathWarningAutoConfiguration.class, GatewayAutoConfiguration.class, + GatewayMetricsAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, + MongoAutoConfiguration.class, QuartzAutoConfiguration.class, R2dbcAutoConfiguration.class, + CassandraAutoConfiguration.class }, + excludeName = "org.springframework.cloud.gateway.config.GatewayRedisAutoConfiguration") static class Config { @Bean diff --git a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/web/EndpointWithCyclicDependenciesTests.java b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/web/EndpointWithCyclicDependenciesTests.java index 427c37097..dc74d4033 100644 --- a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/web/EndpointWithCyclicDependenciesTests.java +++ b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/web/EndpointWithCyclicDependenciesTests.java @@ -34,7 +34,7 @@ import org.springframework.stereotype.Service; * @author Marcin Grzejszczak */ @SpringBootTest(classes = { EndpointWithCyclicDependenciesTests.ClientConfig.class }, - properties = "spring.sleuth.tracer.mode=BRAVE") + properties = { "spring.sleuth.tracer.mode=BRAVE", "spring.main.allow-circular-references=true" }) public class EndpointWithCyclicDependenciesTests { @Test diff --git a/spring-cloud-sleuth-autoconfigure/src/test/resources/bootstrap-disabled.yml b/spring-cloud-sleuth-autoconfigure/src/test/resources/application-disabled.yml similarity index 100% rename from spring-cloud-sleuth-autoconfigure/src/test/resources/bootstrap-disabled.yml rename to spring-cloud-sleuth-autoconfigure/src/test/resources/application-disabled.yml diff --git a/tests/brave/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/brave/instrument/feign/issues/issue307/Issue307Tests.java b/tests/brave/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/brave/instrument/feign/issues/issue307/Issue307Tests.java index 2e51a8f5c..5de96e39a 100644 --- a/tests/brave/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/brave/instrument/feign/issues/issue307/Issue307Tests.java +++ b/tests/brave/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/brave/instrument/feign/issues/issue307/Issue307Tests.java @@ -31,6 +31,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; @@ -77,16 +78,6 @@ class SleuthSampleApplication { @Autowired private ParticipantsBean participantsBean; - @Bean - public RestTemplate getRestTemplate() { - return new RestTemplate(); - } - - @Bean - public Sampler defaultSampler() { - return Sampler.ALWAYS_SAMPLE; - } - @RequestMapping("/") public String home() { LOG.info("you called home"); @@ -103,6 +94,21 @@ class SleuthSampleApplication { return this.environment.getProperty("local.server.port", Integer.class); } + @Configuration(proxyBeanMethods = false) + static class Config { + + @Bean + public RestTemplate getRestTemplate() { + return new RestTemplate(); + } + + @Bean + public Sampler defaultSampler() { + return Sampler.ALWAYS_SAMPLE; + } + + } + } @Component diff --git a/tests/common/src/main/java/org/springframework/cloud/sleuth/instrument/annotation/SleuthSpanCreatorCircularDependencyTests.java b/tests/common/src/main/java/org/springframework/cloud/sleuth/instrument/annotation/SleuthSpanCreatorCircularDependencyTests.java index c0b082fc4..bf3ecbf5a 100644 --- a/tests/common/src/main/java/org/springframework/cloud/sleuth/instrument/annotation/SleuthSpanCreatorCircularDependencyTests.java +++ b/tests/common/src/main/java/org/springframework/cloud/sleuth/instrument/annotation/SleuthSpanCreatorCircularDependencyTests.java @@ -24,8 +24,10 @@ import org.springframework.cloud.sleuth.annotation.NewSpan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; @ContextConfiguration(classes = SleuthSpanCreatorCircularDependencyTests.TestConfiguration.class) +@TestPropertySource(properties = "spring.main.allow-circular-references=true") public abstract class SleuthSpanCreatorCircularDependencyTests { @Test