Merge pull request #32048 from jonatan-ivanov
* gh-32048: Build against Micrometer 1.10.0-M5 and Tracing 1.0.0-M8 snapshots Closes gh-32048
This commit is contained in:
commit
754f47d6cc
|
|
@ -17,26 +17,27 @@
|
||||||
package org.springframework.boot.actuate.autoconfigure.observation;
|
package org.springframework.boot.actuate.autoconfigure.observation;
|
||||||
|
|
||||||
import io.micrometer.core.instrument.MeterRegistry;
|
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;
|
import io.micrometer.observation.ObservationRegistry;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers the {@link TimerObservationHandler} with an {@link ObservationRegistry}.
|
* Registers the {@link DefaultMeterObservationHandler} with an
|
||||||
|
* {@link ObservationRegistry}.
|
||||||
*
|
*
|
||||||
* @author Moritz Halbritter
|
* @author Moritz Halbritter
|
||||||
*/
|
*/
|
||||||
class TimerObservationHandlerObservationRegistryCustomizer
|
class DefaultMeterObservationHandlerObservationRegistryCustomizer
|
||||||
implements ObservationRegistryCustomizer<ObservationRegistry> {
|
implements ObservationRegistryCustomizer<ObservationRegistry> {
|
||||||
|
|
||||||
private final MeterRegistry meterRegistry;
|
private final MeterRegistry meterRegistry;
|
||||||
|
|
||||||
TimerObservationHandlerObservationRegistryCustomizer(MeterRegistry meterRegistry) {
|
DefaultMeterObservationHandlerObservationRegistryCustomizer(MeterRegistry meterRegistry) {
|
||||||
this.meterRegistry = meterRegistry;
|
this.meterRegistry = meterRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void customize(ObservationRegistry registry) {
|
public void customize(ObservationRegistry registry) {
|
||||||
registry.observationConfig().observationHandler(new TimerObservationHandler(this.meterRegistry));
|
registry.observationConfig().observationHandler(new DefaultMeterObservationHandler(this.meterRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
package org.springframework.boot.actuate.autoconfigure.observation;
|
package org.springframework.boot.actuate.autoconfigure.observation;
|
||||||
|
|
||||||
import io.micrometer.core.instrument.MeterRegistry;
|
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.ObservationHandler;
|
||||||
import io.micrometer.observation.ObservationPredicate;
|
import io.micrometer.observation.ObservationPredicate;
|
||||||
import io.micrometer.observation.ObservationRegistry;
|
import io.micrometer.observation.ObservationRegistry;
|
||||||
|
|
@ -48,11 +48,11 @@ public class ObservationAutoConfiguration {
|
||||||
static ObservationRegistryPostProcessor observationRegistryPostProcessor(
|
static ObservationRegistryPostProcessor observationRegistryPostProcessor(
|
||||||
ObjectProvider<ObservationRegistryCustomizer<?>> observationRegistryCustomizers,
|
ObjectProvider<ObservationRegistryCustomizer<?>> observationRegistryCustomizers,
|
||||||
ObjectProvider<ObservationPredicate> observationPredicates,
|
ObjectProvider<ObservationPredicate> observationPredicates,
|
||||||
ObjectProvider<GlobalKeyValuesProvider<?>> keyValuesProviders,
|
ObjectProvider<GlobalObservationConvention<?>> observationConventions,
|
||||||
ObjectProvider<ObservationHandler<?>> observationHandlers,
|
ObjectProvider<ObservationHandler<?>> observationHandlers,
|
||||||
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping) {
|
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping) {
|
||||||
return new ObservationRegistryPostProcessor(observationRegistryCustomizers, observationPredicates,
|
return new ObservationRegistryPostProcessor(observationRegistryCustomizers, observationPredicates,
|
||||||
keyValuesProviders, observationHandlers, observationHandlerGrouping);
|
observationConventions, observationHandlers, observationHandlerGrouping);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
|
@ -66,9 +66,9 @@ public class ObservationAutoConfiguration {
|
||||||
static class MetricsConfiguration {
|
static class MetricsConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
TimerObservationHandlerObservationRegistryCustomizer enableTimerObservationHandler(
|
DefaultMeterObservationHandlerObservationRegistryCustomizer enableDefaultMeterObservationHandler(
|
||||||
MeterRegistry meterRegistry) {
|
MeterRegistry meterRegistry) {
|
||||||
return new TimerObservationHandlerObservationRegistryCustomizer(meterRegistry);
|
return new DefaultMeterObservationHandlerObservationRegistryCustomizer(meterRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ package org.springframework.boot.actuate.autoconfigure.observation;
|
||||||
|
|
||||||
import java.util.List;
|
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.ObservationHandler;
|
||||||
import io.micrometer.observation.ObservationPredicate;
|
import io.micrometer.observation.ObservationPredicate;
|
||||||
import io.micrometer.observation.ObservationRegistry;
|
import io.micrometer.observation.ObservationRegistry;
|
||||||
|
|
@ -29,10 +29,10 @@ import org.springframework.boot.util.LambdaSafe;
|
||||||
/**
|
/**
|
||||||
* Configurer to apply {@link ObservationRegistryCustomizer customizers} to
|
* Configurer to apply {@link ObservationRegistryCustomizer customizers} to
|
||||||
* {@link ObservationRegistry observation registries}. Installs
|
* {@link ObservationRegistry observation registries}. Installs
|
||||||
* {@link ObservationPredicate observation predicates} and {@link GlobalKeyValuesProvider
|
* {@link ObservationPredicate observation predicates} and
|
||||||
* global key values providers} into the {@link ObservationRegistry}. Also uses a
|
* {@link GlobalObservationConvention global observation conventions} into the
|
||||||
* {@link ObservationHandlerGrouping} to group handlers, which are then added to the
|
* {@link ObservationRegistry}. Also uses a {@link ObservationHandlerGrouping} to group
|
||||||
* {@link ObservationRegistry}.
|
* handlers, which are then added to the {@link ObservationRegistry}.
|
||||||
*
|
*
|
||||||
* @author Moritz Halbritter
|
* @author Moritz Halbritter
|
||||||
*/
|
*/
|
||||||
|
|
@ -42,7 +42,7 @@ class ObservationRegistryConfigurer {
|
||||||
|
|
||||||
private final ObjectProvider<ObservationPredicate> observationPredicates;
|
private final ObjectProvider<ObservationPredicate> observationPredicates;
|
||||||
|
|
||||||
private final ObjectProvider<GlobalKeyValuesProvider<?>> keyValuesProviders;
|
private final ObjectProvider<GlobalObservationConvention<?>> observationConventions;
|
||||||
|
|
||||||
private final ObjectProvider<ObservationHandler<?>> observationHandlers;
|
private final ObjectProvider<ObservationHandler<?>> observationHandlers;
|
||||||
|
|
||||||
|
|
@ -50,19 +50,19 @@ class ObservationRegistryConfigurer {
|
||||||
|
|
||||||
ObservationRegistryConfigurer(ObjectProvider<ObservationRegistryCustomizer<?>> customizers,
|
ObservationRegistryConfigurer(ObjectProvider<ObservationRegistryCustomizer<?>> customizers,
|
||||||
ObjectProvider<ObservationPredicate> observationPredicates,
|
ObjectProvider<ObservationPredicate> observationPredicates,
|
||||||
ObjectProvider<GlobalKeyValuesProvider<?>> keyValuesProviders,
|
ObjectProvider<GlobalObservationConvention<?>> observationConventions,
|
||||||
ObjectProvider<ObservationHandler<?>> observationHandlers,
|
ObjectProvider<ObservationHandler<?>> observationHandlers,
|
||||||
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping) {
|
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping) {
|
||||||
this.customizers = customizers;
|
this.customizers = customizers;
|
||||||
this.observationPredicates = observationPredicates;
|
this.observationPredicates = observationPredicates;
|
||||||
this.keyValuesProviders = keyValuesProviders;
|
this.observationConventions = observationConventions;
|
||||||
this.observationHandlers = observationHandlers;
|
this.observationHandlers = observationHandlers;
|
||||||
this.observationHandlerGrouping = observationHandlerGrouping;
|
this.observationHandlerGrouping = observationHandlerGrouping;
|
||||||
}
|
}
|
||||||
|
|
||||||
void configure(ObservationRegistry registry) {
|
void configure(ObservationRegistry registry) {
|
||||||
registerObservationPredicates(registry);
|
registerObservationPredicates(registry);
|
||||||
registerGlobalKeyValuesProviders(registry);
|
registerGlobalObservationConventions(registry);
|
||||||
registerHandlers(registry);
|
registerHandlers(registry);
|
||||||
customize(registry);
|
customize(registry);
|
||||||
}
|
}
|
||||||
|
|
@ -77,9 +77,9 @@ class ObservationRegistryConfigurer {
|
||||||
(observationPredicate) -> registry.observationConfig().observationPredicate(observationPredicate));
|
(observationPredicate) -> registry.observationConfig().observationPredicate(observationPredicate));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerGlobalKeyValuesProviders(ObservationRegistry registry) {
|
private void registerGlobalObservationConventions(ObservationRegistry registry) {
|
||||||
this.keyValuesProviders.orderedStream()
|
this.observationConventions.orderedStream()
|
||||||
.forEach((keyValuesProvider) -> registry.observationConfig().keyValuesProvider(keyValuesProvider));
|
.forEach((convention) -> registry.observationConfig().observationConvention(convention));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
package org.springframework.boot.actuate.autoconfigure.observation;
|
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.ObservationHandler;
|
||||||
import io.micrometer.observation.ObservationPredicate;
|
import io.micrometer.observation.ObservationPredicate;
|
||||||
import io.micrometer.observation.ObservationRegistry;
|
import io.micrometer.observation.ObservationRegistry;
|
||||||
|
|
@ -38,7 +38,7 @@ class ObservationRegistryPostProcessor implements BeanPostProcessor {
|
||||||
|
|
||||||
private final ObjectProvider<ObservationPredicate> observationPredicates;
|
private final ObjectProvider<ObservationPredicate> observationPredicates;
|
||||||
|
|
||||||
private final ObjectProvider<GlobalKeyValuesProvider<?>> keyValuesProviders;
|
private final ObjectProvider<GlobalObservationConvention<?>> observationConventions;
|
||||||
|
|
||||||
private final ObjectProvider<ObservationHandler<?>> observationHandlers;
|
private final ObjectProvider<ObservationHandler<?>> observationHandlers;
|
||||||
|
|
||||||
|
|
@ -48,12 +48,12 @@ class ObservationRegistryPostProcessor implements BeanPostProcessor {
|
||||||
|
|
||||||
ObservationRegistryPostProcessor(ObjectProvider<ObservationRegistryCustomizer<?>> observationRegistryCustomizers,
|
ObservationRegistryPostProcessor(ObjectProvider<ObservationRegistryCustomizer<?>> observationRegistryCustomizers,
|
||||||
ObjectProvider<ObservationPredicate> observationPredicates,
|
ObjectProvider<ObservationPredicate> observationPredicates,
|
||||||
ObjectProvider<GlobalKeyValuesProvider<?>> keyValuesProviders,
|
ObjectProvider<GlobalObservationConvention<?>> observationConventions,
|
||||||
ObjectProvider<ObservationHandler<?>> observationHandlers,
|
ObjectProvider<ObservationHandler<?>> observationHandlers,
|
||||||
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping) {
|
ObjectProvider<ObservationHandlerGrouping> observationHandlerGrouping) {
|
||||||
this.observationRegistryCustomizers = observationRegistryCustomizers;
|
this.observationRegistryCustomizers = observationRegistryCustomizers;
|
||||||
this.observationPredicates = observationPredicates;
|
this.observationPredicates = observationPredicates;
|
||||||
this.keyValuesProviders = keyValuesProviders;
|
this.observationConventions = observationConventions;
|
||||||
this.observationHandlers = observationHandlers;
|
this.observationHandlers = observationHandlers;
|
||||||
this.observationHandlerGrouping = observationHandlerGrouping;
|
this.observationHandlerGrouping = observationHandlerGrouping;
|
||||||
}
|
}
|
||||||
|
|
@ -69,7 +69,7 @@ class ObservationRegistryPostProcessor implements BeanPostProcessor {
|
||||||
private ObservationRegistryConfigurer getConfigurer() {
|
private ObservationRegistryConfigurer getConfigurer() {
|
||||||
if (this.configurer == null) {
|
if (this.configurer == null) {
|
||||||
this.configurer = new ObservationRegistryConfigurer(this.observationRegistryCustomizers,
|
this.configurer = new ObservationRegistryConfigurer(this.observationRegistryCustomizers,
|
||||||
this.observationPredicates, this.keyValuesProviders, this.observationHandlers,
|
this.observationPredicates, this.observationConventions, this.observationHandlers,
|
||||||
this.observationHandlerGrouping);
|
this.observationHandlerGrouping);
|
||||||
}
|
}
|
||||||
return this.configurer;
|
return this.configurer;
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,9 @@ package org.springframework.boot.actuate.autoconfigure.tracing;
|
||||||
|
|
||||||
import io.micrometer.tracing.Tracer;
|
import io.micrometer.tracing.Tracer;
|
||||||
import io.micrometer.tracing.handler.DefaultTracingObservationHandler;
|
import io.micrometer.tracing.handler.DefaultTracingObservationHandler;
|
||||||
import io.micrometer.tracing.handler.HttpClientTracingObservationHandler;
|
import io.micrometer.tracing.handler.PropagatingReceiverTracingObservationHandler;
|
||||||
import io.micrometer.tracing.handler.HttpServerTracingObservationHandler;
|
import io.micrometer.tracing.handler.PropagatingSenderTracingObservationHandler;
|
||||||
import io.micrometer.tracing.http.HttpClientHandler;
|
import io.micrometer.tracing.propagation.Propagator;
|
||||||
import io.micrometer.tracing.http.HttpServerHandler;
|
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
|
|
@ -50,40 +49,39 @@ public class MicrometerTracingAutoConfiguration {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@code @Order} value of
|
* {@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
|
* {@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
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
@ConditionalOnBean(Tracer.class)
|
@ConditionalOnBean(Tracer.class)
|
||||||
@Order(DEFAULT_TRACING_OBSERVATION_HANDLER_ORDER)
|
|
||||||
public DefaultTracingObservationHandler defaultTracingObservationHandler(Tracer tracer) {
|
public DefaultTracingObservationHandler defaultTracingObservationHandler(Tracer tracer) {
|
||||||
return new DefaultTracingObservationHandler(tracer);
|
return new DefaultTracingObservationHandler(tracer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
@ConditionalOnBean({ Tracer.class, HttpServerHandler.class })
|
@ConditionalOnBean({ Tracer.class, Propagator.class })
|
||||||
@Order(HTTP_SERVER_TRACING_OBSERVATION_HANDLER_ORDER)
|
@Order(SENDER_TRACING_OBSERVATION_HANDLER_ORDER)
|
||||||
public HttpServerTracingObservationHandler httpServerTracingObservationHandler(Tracer tracer,
|
public PropagatingSenderTracingObservationHandler<?> propagatingSenderTracingObservationHandler(Tracer tracer,
|
||||||
HttpServerHandler httpServerHandler) {
|
Propagator propagator) {
|
||||||
return new HttpServerTracingObservationHandler(tracer, httpServerHandler);
|
return new PropagatingSenderTracingObservationHandler<>(tracer, propagator);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
@ConditionalOnBean({ Tracer.class, HttpClientHandler.class })
|
@ConditionalOnBean({ Tracer.class, Propagator.class })
|
||||||
@Order(HTTP_CLIENT_TRACING_OBSERVATION_HANDLER_ORDER)
|
@Order(RECEIVER_TRACING_OBSERVATION_HANDLER_ORDER)
|
||||||
public HttpClientTracingObservationHandler httpClientTracingObservationHandler(Tracer tracer,
|
public PropagatingReceiverTracingObservationHandler<?> propagatingReceiverTracingObservationHandler(Tracer tracer,
|
||||||
HttpClientHandler httpClientHandler) {
|
Propagator propagator) {
|
||||||
return new HttpClientTracingObservationHandler(tracer, httpClientHandler);
|
return new PropagatingReceiverTracingObservationHandler<>(tracer, propagator);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,16 +25,16 @@ import org.junit.jupiter.api.Test;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link TimerObservationHandlerObservationRegistryCustomizer}.
|
* Tests for {@link DefaultMeterObservationHandlerObservationRegistryCustomizer}.
|
||||||
*
|
*
|
||||||
* @author Moritz Halbritter
|
* @author Moritz Halbritter
|
||||||
*/
|
*/
|
||||||
class TimerObservationHandlerObservationRegistryCustomizerTests {
|
class DefaultMeterObservationHandlerObservationRegistryCustomizerTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void customizeInstallsTimerObservationHandler() {
|
void customizeInstallsDefaultMeterObservationHandler() {
|
||||||
MeterRegistry meterRegistry = new SimpleMeterRegistry();
|
MeterRegistry meterRegistry = new SimpleMeterRegistry();
|
||||||
TimerObservationHandlerObservationRegistryCustomizer sut = new TimerObservationHandlerObservationRegistryCustomizer(
|
DefaultMeterObservationHandlerObservationRegistryCustomizer sut = new DefaultMeterObservationHandlerObservationRegistryCustomizer(
|
||||||
meterRegistry);
|
meterRegistry);
|
||||||
ObservationRegistry observationRegistry = ObservationRegistry.create();
|
ObservationRegistry observationRegistry = ObservationRegistry.create();
|
||||||
sut.customize(observationRegistry);
|
sut.customize(observationRegistry);
|
||||||
|
|
@ -26,7 +26,7 @@ import io.micrometer.core.instrument.observation.MeterObservationHandler;
|
||||||
import io.micrometer.core.instrument.search.MeterNotFoundException;
|
import io.micrometer.core.instrument.search.MeterNotFoundException;
|
||||||
import io.micrometer.observation.Observation;
|
import io.micrometer.observation.Observation;
|
||||||
import io.micrometer.observation.Observation.Context;
|
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;
|
||||||
import io.micrometer.observation.ObservationHandler.AllMatchingCompositeObservationHandler;
|
import io.micrometer.observation.ObservationHandler.AllMatchingCompositeObservationHandler;
|
||||||
import io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler;
|
import io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler;
|
||||||
|
|
@ -65,22 +65,22 @@ class ObservationAutoConfigurationTests {
|
||||||
.with(MetricsRun.simple()).withConfiguration(AutoConfigurations.of(ObservationAutoConfiguration.class));
|
.with(MetricsRun.simple()).withConfiguration(AutoConfigurations.of(ObservationAutoConfiguration.class));
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void autoConfiguresTimerObservationHandler() {
|
void autoConfiguresDefaultMeterObservationHandler() {
|
||||||
this.contextRunner.run((context) -> {
|
this.contextRunner.run((context) -> {
|
||||||
ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class);
|
ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class);
|
||||||
Observation.start("test-observation", observationRegistry).stop();
|
Observation.start("test-observation", observationRegistry).stop();
|
||||||
// When a TimerObservationHandler is registered, every stopped Observation
|
// When a DefaultMeterObservationHandler is registered, every stopped
|
||||||
// leads to a timer
|
// Observation leads to a timer
|
||||||
MeterRegistry meterRegistry = context.getBean(MeterRegistry.class);
|
MeterRegistry meterRegistry = context.getBean(MeterRegistry.class);
|
||||||
assertThat(meterRegistry.get("test-observation").timer().count()).isEqualTo(1);
|
assertThat(meterRegistry.get("test-observation").timer().count()).isEqualTo(1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void allowsTimerObservationHandlerToBeDisabled() {
|
void allowsDefaultMeterObservationHandlerToBeDisabled() {
|
||||||
this.contextRunner.withClassLoader(new FilteredClassLoader(MeterRegistry.class))
|
this.contextRunner.withClassLoader(new FilteredClassLoader(MeterRegistry.class))
|
||||||
.run((context) -> assertThat(context)
|
.run((context) -> assertThat(context)
|
||||||
.doesNotHaveBean(TimerObservationHandlerObservationRegistryCustomizer.class));
|
.doesNotHaveBean(DefaultMeterObservationHandlerObservationRegistryCustomizer.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -177,8 +177,8 @@ class ObservationAutoConfigurationTests {
|
||||||
static class GlobalKeyValuesProviders {
|
static class GlobalKeyValuesProviders {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
Observation.GlobalKeyValuesProvider<?> customKeyValuesProvider() {
|
GlobalObservationConvention<?> customConvention() {
|
||||||
return new GlobalKeyValuesProvider<>() {
|
return new GlobalObservationConvention<>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsContext(Context context) {
|
public boolean supportsContext(Context context) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,10 @@ import java.util.List;
|
||||||
|
|
||||||
import io.micrometer.tracing.Tracer;
|
import io.micrometer.tracing.Tracer;
|
||||||
import io.micrometer.tracing.handler.DefaultTracingObservationHandler;
|
import io.micrometer.tracing.handler.DefaultTracingObservationHandler;
|
||||||
import io.micrometer.tracing.handler.HttpClientTracingObservationHandler;
|
import io.micrometer.tracing.handler.PropagatingReceiverTracingObservationHandler;
|
||||||
import io.micrometer.tracing.handler.HttpServerTracingObservationHandler;
|
import io.micrometer.tracing.handler.PropagatingSenderTracingObservationHandler;
|
||||||
import io.micrometer.tracing.handler.TracingObservationHandler;
|
import io.micrometer.tracing.handler.TracingObservationHandler;
|
||||||
import io.micrometer.tracing.http.HttpClientHandler;
|
import io.micrometer.tracing.propagation.Propagator;
|
||||||
import io.micrometer.tracing.http.HttpServerHandler;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
|
|
@ -48,26 +47,26 @@ class MicrometerTracingAutoConfigurationTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldSupplyBeans() {
|
void shouldSupplyBeans() {
|
||||||
this.contextRunner.withUserConfiguration(TracerConfiguration.class, HttpClientHandlerConfiguration.class,
|
this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class)
|
||||||
HttpServerHandlerConfiguration.class).run((context) -> {
|
.run((context) -> {
|
||||||
assertThat(context).hasSingleBean(DefaultTracingObservationHandler.class);
|
assertThat(context).hasSingleBean(DefaultTracingObservationHandler.class);
|
||||||
assertThat(context).hasSingleBean(HttpServerTracingObservationHandler.class);
|
assertThat(context).hasSingleBean(PropagatingReceiverTracingObservationHandler.class);
|
||||||
assertThat(context).hasSingleBean(HttpClientTracingObservationHandler.class);
|
assertThat(context).hasSingleBean(PropagatingSenderTracingObservationHandler.class);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@SuppressWarnings("rawtypes")
|
@SuppressWarnings("rawtypes")
|
||||||
void shouldSupplyBeansInCorrectOrder() {
|
void shouldSupplyBeansInCorrectOrder() {
|
||||||
this.contextRunner.withUserConfiguration(TracerConfiguration.class, HttpClientHandlerConfiguration.class,
|
this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class)
|
||||||
HttpServerHandlerConfiguration.class).run((context) -> {
|
.run((context) -> {
|
||||||
List<TracingObservationHandler> tracingObservationHandlers = context
|
List<TracingObservationHandler> tracingObservationHandlers = context
|
||||||
.getBeanProvider(TracingObservationHandler.class).orderedStream().toList();
|
.getBeanProvider(TracingObservationHandler.class).orderedStream().toList();
|
||||||
assertThat(tracingObservationHandlers).hasSize(3);
|
assertThat(tracingObservationHandlers).hasSize(3);
|
||||||
assertThat(tracingObservationHandlers.get(0))
|
assertThat(tracingObservationHandlers.get(0))
|
||||||
.isInstanceOf(HttpServerTracingObservationHandler.class);
|
.isInstanceOf(PropagatingReceiverTracingObservationHandler.class);
|
||||||
assertThat(tracingObservationHandlers.get(1))
|
assertThat(tracingObservationHandlers.get(1))
|
||||||
.isInstanceOf(HttpClientTracingObservationHandler.class);
|
.isInstanceOf(PropagatingSenderTracingObservationHandler.class);
|
||||||
assertThat(tracingObservationHandlers.get(2)).isInstanceOf(DefaultTracingObservationHandler.class);
|
assertThat(tracingObservationHandlers.get(2)).isInstanceOf(DefaultTracingObservationHandler.class);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -77,10 +76,10 @@ class MicrometerTracingAutoConfigurationTests {
|
||||||
this.contextRunner.withUserConfiguration(CustomConfiguration.class).run((context) -> {
|
this.contextRunner.withUserConfiguration(CustomConfiguration.class).run((context) -> {
|
||||||
assertThat(context).hasBean("customDefaultTracingObservationHandler");
|
assertThat(context).hasBean("customDefaultTracingObservationHandler");
|
||||||
assertThat(context).hasSingleBean(DefaultTracingObservationHandler.class);
|
assertThat(context).hasSingleBean(DefaultTracingObservationHandler.class);
|
||||||
assertThat(context).hasBean("customHttpServerTracingObservationHandler");
|
assertThat(context).hasBean("customPropagatingReceiverTracingObservationHandler");
|
||||||
assertThat(context).hasSingleBean(HttpServerTracingObservationHandler.class);
|
assertThat(context).hasSingleBean(PropagatingReceiverTracingObservationHandler.class);
|
||||||
assertThat(context).hasBean("customHttpClientTracingObservationHandler");
|
assertThat(context).hasBean("customPropagatingSenderTracingObservationHandler");
|
||||||
assertThat(context).hasSingleBean(HttpClientTracingObservationHandler.class);
|
assertThat(context).hasSingleBean(PropagatingSenderTracingObservationHandler.class);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -88,43 +87,35 @@ class MicrometerTracingAutoConfigurationTests {
|
||||||
void shouldNotSupplyBeansIfMicrometerIsMissing() {
|
void shouldNotSupplyBeansIfMicrometerIsMissing() {
|
||||||
this.contextRunner.withClassLoader(new FilteredClassLoader("io.micrometer")).run((context) -> {
|
this.contextRunner.withClassLoader(new FilteredClassLoader("io.micrometer")).run((context) -> {
|
||||||
assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class);
|
assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class);
|
||||||
assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class);
|
assertThat(context).doesNotHaveBean(PropagatingReceiverTracingObservationHandler.class);
|
||||||
assertThat(context).doesNotHaveBean(HttpClientTracingObservationHandler.class);
|
assertThat(context).doesNotHaveBean(PropagatingSenderTracingObservationHandler.class);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldNotSupplyBeansIfTracerIsMissing() {
|
void shouldNotSupplyBeansIfTracerIsMissing() {
|
||||||
this.contextRunner
|
this.contextRunner.withUserConfiguration(PropagatorConfiguration.class).run((context) -> {
|
||||||
.withUserConfiguration(HttpServerHandlerConfiguration.class, HttpClientHandlerConfiguration.class)
|
assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class);
|
||||||
.run((context) -> {
|
assertThat(context).doesNotHaveBean(PropagatingReceiverTracingObservationHandler.class);
|
||||||
assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class);
|
assertThat(context).doesNotHaveBean(PropagatingSenderTracingObservationHandler.class);
|
||||||
assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class);
|
});
|
||||||
assertThat(context).doesNotHaveBean(HttpClientTracingObservationHandler.class);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldNotSupplyBeansIfHttpClientHandlerIsMissing() {
|
void shouldNotSupplyBeansIfPropagatorIsMissing() {
|
||||||
this.contextRunner.withUserConfiguration(TracerConfiguration.class, HttpServerHandlerConfiguration.class)
|
this.contextRunner.withUserConfiguration(TracerConfiguration.class).run((context) -> {
|
||||||
.run((context) -> assertThat(context).doesNotHaveBean(HttpClientTracingObservationHandler.class));
|
assertThat(context).doesNotHaveBean(PropagatingSenderTracingObservationHandler.class);
|
||||||
}
|
assertThat(context).doesNotHaveBean(PropagatingReceiverTracingObservationHandler.class);
|
||||||
|
});
|
||||||
@Test
|
|
||||||
void shouldNotSupplyBeansIfHttpServerHandlerIsMissing() {
|
|
||||||
this.contextRunner.withUserConfiguration(TracerConfiguration.class, HttpClientHandlerConfiguration.class)
|
|
||||||
.run((context) -> assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldNotSupplyBeansIfTracingIsDisabled() {
|
void shouldNotSupplyBeansIfTracingIsDisabled() {
|
||||||
this.contextRunner
|
this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class)
|
||||||
.withUserConfiguration(TracerConfiguration.class, HttpClientHandlerConfiguration.class,
|
|
||||||
HttpServerHandlerConfiguration.class)
|
|
||||||
.withPropertyValues("management.tracing.enabled=false").run((context) -> {
|
.withPropertyValues("management.tracing.enabled=false").run((context) -> {
|
||||||
assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class);
|
assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class);
|
||||||
assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class);
|
assertThat(context).doesNotHaveBean(PropagatingReceiverTracingObservationHandler.class);
|
||||||
assertThat(context).doesNotHaveBean(HttpClientTracingObservationHandler.class);
|
assertThat(context).doesNotHaveBean(PropagatingSenderTracingObservationHandler.class);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -139,21 +130,11 @@ class MicrometerTracingAutoConfigurationTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
private static class HttpClientHandlerConfiguration {
|
private static class PropagatorConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
HttpClientHandler httpClientHandler() {
|
Propagator propagator() {
|
||||||
return mock(HttpClientHandler.class);
|
return mock(Propagator.class);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
|
||||||
private static class HttpServerHandlerConfiguration {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
HttpServerHandler httpServerHandler() {
|
|
||||||
return mock(HttpServerHandler.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -167,13 +148,13 @@ class MicrometerTracingAutoConfigurationTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
HttpServerTracingObservationHandler customHttpServerTracingObservationHandler() {
|
PropagatingReceiverTracingObservationHandler<?> customPropagatingReceiverTracingObservationHandler() {
|
||||||
return mock(HttpServerTracingObservationHandler.class);
|
return mock(PropagatingReceiverTracingObservationHandler.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
HttpClientTracingObservationHandler customHttpClientTracingObservationHandler() {
|
PropagatingSenderTracingObservationHandler<?> customPropagatingSenderTracingObservationHandler() {
|
||||||
return mock(HttpClientTracingObservationHandler.class);
|
return mock(PropagatingSenderTracingObservationHandler.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1012,7 +1012,7 @@ bom {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
library("Micrometer", "1.10.0-M3") {
|
library("Micrometer", "1.10.0-SNAPSHOT") {
|
||||||
group("io.micrometer") {
|
group("io.micrometer") {
|
||||||
modules = [
|
modules = [
|
||||||
"micrometer-registry-stackdriver" {
|
"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") {
|
group("io.micrometer") {
|
||||||
imports = [
|
imports = [
|
||||||
"micrometer-tracing-bom"
|
"micrometer-tracing-bom"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue