From 13a2ea9194eec702564e5cfac80da866cf822995 Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Tue, 9 Aug 2022 13:58:40 -0700 Subject: [PATCH] Build against Micrometer 1.10.0-M5 and Tracing 1.0.0-M8 snapshots See gh-32048 Co-authored-by: Marcin Grzejszczak --- ...HandlerObservationRegistryCustomizer.java} | 11 ++- .../ObservationAutoConfiguration.java | 10 +- .../ObservationRegistryConfigurer.java | 24 ++--- .../ObservationRegistryPostProcessor.java | 10 +- .../MicrometerTracingAutoConfiguration.java | 36 ++++--- ...erObservationRegistryCustomizerTests.java} | 8 +- .../ObservationAutoConfigurationTests.java | 16 ++-- ...crometerTracingAutoConfigurationTests.java | 93 ++++++++----------- .../spring-boot-dependencies/build.gradle | 4 +- 9 files changed, 96 insertions(+), 116 deletions(-) rename spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/{TimerObservationHandlerObservationRegistryCustomizer.java => DefaultMeterObservationHandlerObservationRegistryCustomizer.java} (70%) rename spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/{TimerObservationHandlerObservationRegistryCustomizerTests.java => DefaultMeterObservationHandlerObservationRegistryCustomizerTests.java} (79%) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/TimerObservationHandlerObservationRegistryCustomizer.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/DefaultMeterObservationHandlerObservationRegistryCustomizer.java similarity index 70% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/TimerObservationHandlerObservationRegistryCustomizer.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/DefaultMeterObservationHandlerObservationRegistryCustomizer.java index 55ad5b30728..10cdf597c78 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/TimerObservationHandlerObservationRegistryCustomizer.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/DefaultMeterObservationHandlerObservationRegistryCustomizer.java @@ -17,26 +17,27 @@ package org.springframework.boot.actuate.autoconfigure.observation; import io.micrometer.core.instrument.MeterRegistry; -import io.micrometer.core.instrument.observation.TimerObservationHandler; +import io.micrometer.core.instrument.observation.DefaultMeterObservationHandler; import io.micrometer.observation.ObservationRegistry; /** - * Registers the {@link TimerObservationHandler} with an {@link ObservationRegistry}. + * Registers the {@link DefaultMeterObservationHandler} with an + * {@link ObservationRegistry}. * * @author Moritz Halbritter */ -class TimerObservationHandlerObservationRegistryCustomizer +class DefaultMeterObservationHandlerObservationRegistryCustomizer implements ObservationRegistryCustomizer { private final MeterRegistry meterRegistry; - TimerObservationHandlerObservationRegistryCustomizer(MeterRegistry meterRegistry) { + DefaultMeterObservationHandlerObservationRegistryCustomizer(MeterRegistry meterRegistry) { this.meterRegistry = meterRegistry; } @Override public void customize(ObservationRegistry registry) { - registry.observationConfig().observationHandler(new TimerObservationHandler(this.meterRegistry)); + registry.observationConfig().observationHandler(new DefaultMeterObservationHandler(this.meterRegistry)); } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration.java index 546e32a76fa..f1720c1483e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration.java @@ -17,7 +17,7 @@ package org.springframework.boot.actuate.autoconfigure.observation; import io.micrometer.core.instrument.MeterRegistry; -import io.micrometer.observation.Observation.GlobalKeyValuesProvider; +import io.micrometer.observation.Observation.GlobalObservationConvention; import io.micrometer.observation.ObservationHandler; import io.micrometer.observation.ObservationPredicate; import io.micrometer.observation.ObservationRegistry; @@ -48,11 +48,11 @@ public class ObservationAutoConfiguration { static ObservationRegistryPostProcessor observationRegistryPostProcessor( ObjectProvider> observationRegistryCustomizers, ObjectProvider observationPredicates, - ObjectProvider> keyValuesProviders, + ObjectProvider> observationConventions, ObjectProvider> observationHandlers, ObjectProvider observationHandlerGrouping) { return new ObservationRegistryPostProcessor(observationRegistryCustomizers, observationPredicates, - keyValuesProviders, observationHandlers, observationHandlerGrouping); + observationConventions, observationHandlers, observationHandlerGrouping); } @Bean @@ -66,9 +66,9 @@ public class ObservationAutoConfiguration { static class MetricsConfiguration { @Bean - TimerObservationHandlerObservationRegistryCustomizer enableTimerObservationHandler( + DefaultMeterObservationHandlerObservationRegistryCustomizer enableDefaultMeterObservationHandler( MeterRegistry meterRegistry) { - return new TimerObservationHandlerObservationRegistryCustomizer(meterRegistry); + return new DefaultMeterObservationHandlerObservationRegistryCustomizer(meterRegistry); } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryConfigurer.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryConfigurer.java index 965420a05d2..129556b09db 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryConfigurer.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryConfigurer.java @@ -18,7 +18,7 @@ package org.springframework.boot.actuate.autoconfigure.observation; import java.util.List; -import io.micrometer.observation.Observation.GlobalKeyValuesProvider; +import io.micrometer.observation.Observation.GlobalObservationConvention; import io.micrometer.observation.ObservationHandler; import io.micrometer.observation.ObservationPredicate; import io.micrometer.observation.ObservationRegistry; @@ -29,10 +29,10 @@ import org.springframework.boot.util.LambdaSafe; /** * Configurer to apply {@link ObservationRegistryCustomizer customizers} to * {@link ObservationRegistry observation registries}. Installs - * {@link ObservationPredicate observation predicates} and {@link GlobalKeyValuesProvider - * global key values providers} into the {@link ObservationRegistry}. Also uses a - * {@link ObservationHandlerGrouping} to group handlers, which are then added to the - * {@link ObservationRegistry}. + * {@link ObservationPredicate observation predicates} and + * {@link GlobalObservationConvention global observation conventions} into the + * {@link ObservationRegistry}. Also uses a {@link ObservationHandlerGrouping} to group + * handlers, which are then added to the {@link ObservationRegistry}. * * @author Moritz Halbritter */ @@ -42,7 +42,7 @@ class ObservationRegistryConfigurer { private final ObjectProvider observationPredicates; - private final ObjectProvider> keyValuesProviders; + private final ObjectProvider> observationConventions; private final ObjectProvider> observationHandlers; @@ -50,19 +50,19 @@ class ObservationRegistryConfigurer { ObservationRegistryConfigurer(ObjectProvider> customizers, ObjectProvider observationPredicates, - ObjectProvider> keyValuesProviders, + ObjectProvider> observationConventions, ObjectProvider> observationHandlers, ObjectProvider observationHandlerGrouping) { this.customizers = customizers; this.observationPredicates = observationPredicates; - this.keyValuesProviders = keyValuesProviders; + this.observationConventions = observationConventions; this.observationHandlers = observationHandlers; this.observationHandlerGrouping = observationHandlerGrouping; } void configure(ObservationRegistry registry) { registerObservationPredicates(registry); - registerGlobalKeyValuesProviders(registry); + registerGlobalObservationConventions(registry); registerHandlers(registry); customize(registry); } @@ -77,9 +77,9 @@ class ObservationRegistryConfigurer { (observationPredicate) -> registry.observationConfig().observationPredicate(observationPredicate)); } - private void registerGlobalKeyValuesProviders(ObservationRegistry registry) { - this.keyValuesProviders.orderedStream() - .forEach((keyValuesProvider) -> registry.observationConfig().keyValuesProvider(keyValuesProvider)); + private void registerGlobalObservationConventions(ObservationRegistry registry) { + this.observationConventions.orderedStream() + .forEach((convention) -> registry.observationConfig().observationConvention(convention)); } @SuppressWarnings("unchecked") diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryPostProcessor.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryPostProcessor.java index 24e4814a12b..45f976bb91a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryPostProcessor.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationRegistryPostProcessor.java @@ -16,7 +16,7 @@ package org.springframework.boot.actuate.autoconfigure.observation; -import io.micrometer.observation.Observation.GlobalKeyValuesProvider; +import io.micrometer.observation.Observation.GlobalObservationConvention; import io.micrometer.observation.ObservationHandler; import io.micrometer.observation.ObservationPredicate; import io.micrometer.observation.ObservationRegistry; @@ -38,7 +38,7 @@ class ObservationRegistryPostProcessor implements BeanPostProcessor { private final ObjectProvider observationPredicates; - private final ObjectProvider> keyValuesProviders; + private final ObjectProvider> observationConventions; private final ObjectProvider> observationHandlers; @@ -48,12 +48,12 @@ class ObservationRegistryPostProcessor implements BeanPostProcessor { ObservationRegistryPostProcessor(ObjectProvider> observationRegistryCustomizers, ObjectProvider observationPredicates, - ObjectProvider> keyValuesProviders, + ObjectProvider> observationConventions, ObjectProvider> observationHandlers, ObjectProvider observationHandlerGrouping) { this.observationRegistryCustomizers = observationRegistryCustomizers; this.observationPredicates = observationPredicates; - this.keyValuesProviders = keyValuesProviders; + this.observationConventions = observationConventions; this.observationHandlers = observationHandlers; this.observationHandlerGrouping = observationHandlerGrouping; } @@ -69,7 +69,7 @@ class ObservationRegistryPostProcessor implements BeanPostProcessor { private ObservationRegistryConfigurer getConfigurer() { if (this.configurer == null) { this.configurer = new ObservationRegistryConfigurer(this.observationRegistryCustomizers, - this.observationPredicates, this.keyValuesProviders, this.observationHandlers, + this.observationPredicates, this.observationConventions, this.observationHandlers, this.observationHandlerGrouping); } return this.configurer; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfiguration.java index b7788ae284d..f216c31bde3 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfiguration.java @@ -18,10 +18,9 @@ package org.springframework.boot.actuate.autoconfigure.tracing; import io.micrometer.tracing.Tracer; import io.micrometer.tracing.handler.DefaultTracingObservationHandler; -import io.micrometer.tracing.handler.HttpClientTracingObservationHandler; -import io.micrometer.tracing.handler.HttpServerTracingObservationHandler; -import io.micrometer.tracing.http.HttpClientHandler; -import io.micrometer.tracing.http.HttpServerHandler; +import io.micrometer.tracing.handler.PropagatingReceiverTracingObservationHandler; +import io.micrometer.tracing.handler.PropagatingSenderTracingObservationHandler; +import io.micrometer.tracing.propagation.Propagator; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -50,40 +49,39 @@ public class MicrometerTracingAutoConfiguration { /** * {@code @Order} value of - * {@link #httpServerTracingObservationHandler(Tracer, HttpServerHandler)}. + * {@link #propagatingReceiverTracingObservationHandler(Tracer, Propagator)}. */ - public static final int HTTP_SERVER_TRACING_OBSERVATION_HANDLER_ORDER = 1000; + public static final int RECEIVER_TRACING_OBSERVATION_HANDLER_ORDER = 1000; /** * {@code @Order} value of - * {@link #httpClientTracingObservationHandler(Tracer, HttpClientHandler)}. + * {@link #propagatingSenderTracingObservationHandler(Tracer, Propagator)}. */ - public static final int HTTP_CLIENT_TRACING_OBSERVATION_HANDLER_ORDER = 2000; + public static final int SENDER_TRACING_OBSERVATION_HANDLER_ORDER = 2000; @Bean @ConditionalOnMissingBean @ConditionalOnBean(Tracer.class) - @Order(DEFAULT_TRACING_OBSERVATION_HANDLER_ORDER) public DefaultTracingObservationHandler defaultTracingObservationHandler(Tracer tracer) { return new DefaultTracingObservationHandler(tracer); } @Bean @ConditionalOnMissingBean - @ConditionalOnBean({ Tracer.class, HttpServerHandler.class }) - @Order(HTTP_SERVER_TRACING_OBSERVATION_HANDLER_ORDER) - public HttpServerTracingObservationHandler httpServerTracingObservationHandler(Tracer tracer, - HttpServerHandler httpServerHandler) { - return new HttpServerTracingObservationHandler(tracer, httpServerHandler); + @ConditionalOnBean({ Tracer.class, Propagator.class }) + @Order(SENDER_TRACING_OBSERVATION_HANDLER_ORDER) + public PropagatingSenderTracingObservationHandler propagatingSenderTracingObservationHandler(Tracer tracer, + Propagator propagator) { + return new PropagatingSenderTracingObservationHandler<>(tracer, propagator); } @Bean @ConditionalOnMissingBean - @ConditionalOnBean({ Tracer.class, HttpClientHandler.class }) - @Order(HTTP_CLIENT_TRACING_OBSERVATION_HANDLER_ORDER) - public HttpClientTracingObservationHandler httpClientTracingObservationHandler(Tracer tracer, - HttpClientHandler httpClientHandler) { - return new HttpClientTracingObservationHandler(tracer, httpClientHandler); + @ConditionalOnBean({ Tracer.class, Propagator.class }) + @Order(RECEIVER_TRACING_OBSERVATION_HANDLER_ORDER) + public PropagatingReceiverTracingObservationHandler propagatingReceiverTracingObservationHandler(Tracer tracer, + Propagator propagator) { + return new PropagatingReceiverTracingObservationHandler<>(tracer, propagator); } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/TimerObservationHandlerObservationRegistryCustomizerTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/DefaultMeterObservationHandlerObservationRegistryCustomizerTests.java similarity index 79% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/TimerObservationHandlerObservationRegistryCustomizerTests.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/DefaultMeterObservationHandlerObservationRegistryCustomizerTests.java index 7180a55e036..48fb1e141db 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/TimerObservationHandlerObservationRegistryCustomizerTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/DefaultMeterObservationHandlerObservationRegistryCustomizerTests.java @@ -25,16 +25,16 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; /** - * Tests for {@link TimerObservationHandlerObservationRegistryCustomizer}. + * Tests for {@link DefaultMeterObservationHandlerObservationRegistryCustomizer}. * * @author Moritz Halbritter */ -class TimerObservationHandlerObservationRegistryCustomizerTests { +class DefaultMeterObservationHandlerObservationRegistryCustomizerTests { @Test - void customizeInstallsTimerObservationHandler() { + void customizeInstallsDefaultMeterObservationHandler() { MeterRegistry meterRegistry = new SimpleMeterRegistry(); - TimerObservationHandlerObservationRegistryCustomizer sut = new TimerObservationHandlerObservationRegistryCustomizer( + DefaultMeterObservationHandlerObservationRegistryCustomizer sut = new DefaultMeterObservationHandlerObservationRegistryCustomizer( meterRegistry); ObservationRegistry observationRegistry = ObservationRegistry.create(); sut.customize(observationRegistry); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfigurationTests.java index 0806b6b13c5..ba1005fb9c3 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfigurationTests.java @@ -26,7 +26,7 @@ import io.micrometer.core.instrument.observation.MeterObservationHandler; import io.micrometer.core.instrument.search.MeterNotFoundException; import io.micrometer.observation.Observation; import io.micrometer.observation.Observation.Context; -import io.micrometer.observation.Observation.GlobalKeyValuesProvider; +import io.micrometer.observation.Observation.GlobalObservationConvention; import io.micrometer.observation.ObservationHandler; import io.micrometer.observation.ObservationHandler.AllMatchingCompositeObservationHandler; import io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler; @@ -65,22 +65,22 @@ class ObservationAutoConfigurationTests { .with(MetricsRun.simple()).withConfiguration(AutoConfigurations.of(ObservationAutoConfiguration.class)); @Test - void autoConfiguresTimerObservationHandler() { + void autoConfiguresDefaultMeterObservationHandler() { this.contextRunner.run((context) -> { ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class); Observation.start("test-observation", observationRegistry).stop(); - // When a TimerObservationHandler is registered, every stopped Observation - // leads to a timer + // When a DefaultMeterObservationHandler is registered, every stopped + // Observation leads to a timer MeterRegistry meterRegistry = context.getBean(MeterRegistry.class); assertThat(meterRegistry.get("test-observation").timer().count()).isEqualTo(1); }); } @Test - void allowsTimerObservationHandlerToBeDisabled() { + void allowsDefaultMeterObservationHandlerToBeDisabled() { this.contextRunner.withClassLoader(new FilteredClassLoader(MeterRegistry.class)) .run((context) -> assertThat(context) - .doesNotHaveBean(TimerObservationHandlerObservationRegistryCustomizer.class)); + .doesNotHaveBean(DefaultMeterObservationHandlerObservationRegistryCustomizer.class)); } @Test @@ -177,8 +177,8 @@ class ObservationAutoConfigurationTests { static class GlobalKeyValuesProviders { @Bean - Observation.GlobalKeyValuesProvider customKeyValuesProvider() { - return new GlobalKeyValuesProvider<>() { + GlobalObservationConvention customConvention() { + return new GlobalObservationConvention<>() { @Override public boolean supportsContext(Context context) { return true; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfigurationTests.java index 73518bfec53..0684828fe5b 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfigurationTests.java @@ -20,11 +20,10 @@ import java.util.List; import io.micrometer.tracing.Tracer; import io.micrometer.tracing.handler.DefaultTracingObservationHandler; -import io.micrometer.tracing.handler.HttpClientTracingObservationHandler; -import io.micrometer.tracing.handler.HttpServerTracingObservationHandler; +import io.micrometer.tracing.handler.PropagatingReceiverTracingObservationHandler; +import io.micrometer.tracing.handler.PropagatingSenderTracingObservationHandler; import io.micrometer.tracing.handler.TracingObservationHandler; -import io.micrometer.tracing.http.HttpClientHandler; -import io.micrometer.tracing.http.HttpServerHandler; +import io.micrometer.tracing.propagation.Propagator; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -48,26 +47,26 @@ class MicrometerTracingAutoConfigurationTests { @Test void shouldSupplyBeans() { - this.contextRunner.withUserConfiguration(TracerConfiguration.class, HttpClientHandlerConfiguration.class, - HttpServerHandlerConfiguration.class).run((context) -> { + this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class) + .run((context) -> { assertThat(context).hasSingleBean(DefaultTracingObservationHandler.class); - assertThat(context).hasSingleBean(HttpServerTracingObservationHandler.class); - assertThat(context).hasSingleBean(HttpClientTracingObservationHandler.class); + assertThat(context).hasSingleBean(PropagatingReceiverTracingObservationHandler.class); + assertThat(context).hasSingleBean(PropagatingSenderTracingObservationHandler.class); }); } @Test @SuppressWarnings("rawtypes") void shouldSupplyBeansInCorrectOrder() { - this.contextRunner.withUserConfiguration(TracerConfiguration.class, HttpClientHandlerConfiguration.class, - HttpServerHandlerConfiguration.class).run((context) -> { + this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class) + .run((context) -> { List tracingObservationHandlers = context .getBeanProvider(TracingObservationHandler.class).orderedStream().toList(); assertThat(tracingObservationHandlers).hasSize(3); assertThat(tracingObservationHandlers.get(0)) - .isInstanceOf(HttpServerTracingObservationHandler.class); + .isInstanceOf(PropagatingReceiverTracingObservationHandler.class); assertThat(tracingObservationHandlers.get(1)) - .isInstanceOf(HttpClientTracingObservationHandler.class); + .isInstanceOf(PropagatingSenderTracingObservationHandler.class); assertThat(tracingObservationHandlers.get(2)).isInstanceOf(DefaultTracingObservationHandler.class); }); } @@ -77,10 +76,10 @@ class MicrometerTracingAutoConfigurationTests { this.contextRunner.withUserConfiguration(CustomConfiguration.class).run((context) -> { assertThat(context).hasBean("customDefaultTracingObservationHandler"); assertThat(context).hasSingleBean(DefaultTracingObservationHandler.class); - assertThat(context).hasBean("customHttpServerTracingObservationHandler"); - assertThat(context).hasSingleBean(HttpServerTracingObservationHandler.class); - assertThat(context).hasBean("customHttpClientTracingObservationHandler"); - assertThat(context).hasSingleBean(HttpClientTracingObservationHandler.class); + assertThat(context).hasBean("customPropagatingReceiverTracingObservationHandler"); + assertThat(context).hasSingleBean(PropagatingReceiverTracingObservationHandler.class); + assertThat(context).hasBean("customPropagatingSenderTracingObservationHandler"); + assertThat(context).hasSingleBean(PropagatingSenderTracingObservationHandler.class); }); } @@ -88,43 +87,35 @@ class MicrometerTracingAutoConfigurationTests { void shouldNotSupplyBeansIfMicrometerIsMissing() { this.contextRunner.withClassLoader(new FilteredClassLoader("io.micrometer")).run((context) -> { assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class); - assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class); - assertThat(context).doesNotHaveBean(HttpClientTracingObservationHandler.class); + assertThat(context).doesNotHaveBean(PropagatingReceiverTracingObservationHandler.class); + assertThat(context).doesNotHaveBean(PropagatingSenderTracingObservationHandler.class); }); } @Test void shouldNotSupplyBeansIfTracerIsMissing() { - this.contextRunner - .withUserConfiguration(HttpServerHandlerConfiguration.class, HttpClientHandlerConfiguration.class) - .run((context) -> { - assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class); - assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class); - assertThat(context).doesNotHaveBean(HttpClientTracingObservationHandler.class); - }); + this.contextRunner.withUserConfiguration(PropagatorConfiguration.class).run((context) -> { + assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class); + assertThat(context).doesNotHaveBean(PropagatingReceiverTracingObservationHandler.class); + assertThat(context).doesNotHaveBean(PropagatingSenderTracingObservationHandler.class); + }); } @Test - void shouldNotSupplyBeansIfHttpClientHandlerIsMissing() { - this.contextRunner.withUserConfiguration(TracerConfiguration.class, HttpServerHandlerConfiguration.class) - .run((context) -> assertThat(context).doesNotHaveBean(HttpClientTracingObservationHandler.class)); - } - - @Test - void shouldNotSupplyBeansIfHttpServerHandlerIsMissing() { - this.contextRunner.withUserConfiguration(TracerConfiguration.class, HttpClientHandlerConfiguration.class) - .run((context) -> assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class)); + void shouldNotSupplyBeansIfPropagatorIsMissing() { + this.contextRunner.withUserConfiguration(TracerConfiguration.class).run((context) -> { + assertThat(context).doesNotHaveBean(PropagatingSenderTracingObservationHandler.class); + assertThat(context).doesNotHaveBean(PropagatingReceiverTracingObservationHandler.class); + }); } @Test void shouldNotSupplyBeansIfTracingIsDisabled() { - this.contextRunner - .withUserConfiguration(TracerConfiguration.class, HttpClientHandlerConfiguration.class, - HttpServerHandlerConfiguration.class) + this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class) .withPropertyValues("management.tracing.enabled=false").run((context) -> { assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class); - assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class); - assertThat(context).doesNotHaveBean(HttpClientTracingObservationHandler.class); + assertThat(context).doesNotHaveBean(PropagatingReceiverTracingObservationHandler.class); + assertThat(context).doesNotHaveBean(PropagatingSenderTracingObservationHandler.class); }); } @@ -139,21 +130,11 @@ class MicrometerTracingAutoConfigurationTests { } @Configuration(proxyBeanMethods = false) - private static class HttpClientHandlerConfiguration { + private static class PropagatorConfiguration { @Bean - HttpClientHandler httpClientHandler() { - return mock(HttpClientHandler.class); - } - - } - - @Configuration(proxyBeanMethods = false) - private static class HttpServerHandlerConfiguration { - - @Bean - HttpServerHandler httpServerHandler() { - return mock(HttpServerHandler.class); + Propagator propagator() { + return mock(Propagator.class); } } @@ -167,13 +148,13 @@ class MicrometerTracingAutoConfigurationTests { } @Bean - HttpServerTracingObservationHandler customHttpServerTracingObservationHandler() { - return mock(HttpServerTracingObservationHandler.class); + PropagatingReceiverTracingObservationHandler customPropagatingReceiverTracingObservationHandler() { + return mock(PropagatingReceiverTracingObservationHandler.class); } @Bean - HttpClientTracingObservationHandler customHttpClientTracingObservationHandler() { - return mock(HttpClientTracingObservationHandler.class); + PropagatingSenderTracingObservationHandler customPropagatingSenderTracingObservationHandler() { + return mock(PropagatingSenderTracingObservationHandler.class); } } diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index e8c31e039d6..acf461a0b13 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -1012,7 +1012,7 @@ bom { ] } } - library("Micrometer", "1.10.0-M3") { + library("Micrometer", "1.10.0-SNAPSHOT") { group("io.micrometer") { modules = [ "micrometer-registry-stackdriver" { @@ -1024,7 +1024,7 @@ bom { ] } } - library("Micrometer Tracing", "1.0.0-M6") { + library("Micrometer Tracing", "1.0.0-SNAPSHOT") { group("io.micrometer") { imports = [ "micrometer-tracing-bom"