From b74460b338a5b03a0a9345d255ecae22a0a554c7 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 4 Jun 2025 12:40:40 +0100 Subject: [PATCH] Remove remaining usages of MetricsRun --- .../metrics/test/MetricsRun.java | 107 ------------------ .../ObservabilityAutoConfigurationTests.java | 9 +- ...etheusExemplarsAutoConfigurationTests.java | 9 +- 3 files changed, 10 insertions(+), 115 deletions(-) delete mode 100644 spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsRun.java diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsRun.java b/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsRun.java deleted file mode 100644 index 819ff72307..0000000000 --- a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsRun.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2012-2025 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.actuate.autoconfigure.metrics.test; - -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.Set; -import java.util.function.Function; - -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.atlas.AtlasMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.datadog.DatadogMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.ganglia.GangliaMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.graphite.GraphiteMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.influx.InfluxMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.jmx.JmxMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.newrelic.NewRelicMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.otlp.OtlpMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.prometheus.PrometheusMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration; -import org.springframework.boot.metrics.autoconfigure.export.statsd.StatsdMetricsExportAutoConfiguration; -import org.springframework.boot.test.context.runner.AbstractApplicationContextRunner; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.util.Assert; - -/** - * Additional metrics configuration and settings that can be applied to a - * {@link ApplicationContextRunner} when running a metrics test. - * - * @author Jon Schneider - * @author Phillip Webb - */ -public final class MetricsRun { - - private static final Set> EXPORT_AUTO_CONFIGURATIONS; - - static { - Set> implementations = new LinkedHashSet<>(); - implementations.add(AtlasMetricsExportAutoConfiguration.class); - implementations.add(DatadogMetricsExportAutoConfiguration.class); - implementations.add(GangliaMetricsExportAutoConfiguration.class); - implementations.add(GraphiteMetricsExportAutoConfiguration.class); - implementations.add(InfluxMetricsExportAutoConfiguration.class); - implementations.add(JmxMetricsExportAutoConfiguration.class); - implementations.add(NewRelicMetricsExportAutoConfiguration.class); - implementations.add(OtlpMetricsExportAutoConfiguration.class); - implementations.add(PrometheusMetricsExportAutoConfiguration.class); - implementations.add(SimpleMetricsExportAutoConfiguration.class); - implementations.add(StatsdMetricsExportAutoConfiguration.class); - EXPORT_AUTO_CONFIGURATIONS = Collections.unmodifiableSet(implementations); - } - - private static final AutoConfigurations AUTO_CONFIGURATIONS = AutoConfigurations.of(MetricsAutoConfiguration.class, - CompositeMeterRegistryAutoConfiguration.class); - - private MetricsRun() { - } - - /** - * Return a function that configures the run to be limited to the {@code simple} - * implementation. - * @return the function to apply - */ - public static > Function simple() { - return limitedTo(SimpleMetricsExportAutoConfiguration.class); - } - - /** - * Return a function that configures the run to be limited to the specified - * implementations. - * @param exportAutoConfigurations the export auto-configurations to include - * @return the function to apply - */ - public static > Function limitedTo( - Class... exportAutoConfigurations) { - return (contextRunner) -> apply(contextRunner, exportAutoConfigurations); - } - - @SuppressWarnings("unchecked") - private static > T apply(T contextRunner, - Class[] exportAutoConfigurations) { - for (Class configuration : exportAutoConfigurations) { - Assert.state(EXPORT_AUTO_CONFIGURATIONS.contains(configuration), - () -> "Unknown export auto-configuration " + configuration.getName()); - } - return (T) contextRunner.withPropertyValues("management.metrics.use-global-registry=false") - .withConfiguration(AUTO_CONFIGURATIONS) - .withConfiguration(AutoConfigurations.of(exportAutoConfigurations)); - } - -} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/observability/ObservabilityAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/observability/ObservabilityAutoConfigurationTests.java index 31ea4d9f1f..5fb9007ab2 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/observability/ObservabilityAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/observability/ObservabilityAutoConfigurationTests.java @@ -22,6 +22,7 @@ import java.util.List; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.observation.DefaultMeterObservationHandler; import io.micrometer.core.instrument.observation.MeterObservationHandler; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import io.micrometer.observation.Observation; import io.micrometer.observation.Observation.Context; import io.micrometer.observation.ObservationHandler; @@ -35,7 +36,6 @@ import io.micrometer.tracing.handler.TracingObservationHandler; import org.junit.jupiter.api.Test; import org.mockito.Answers; -import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.observation.autoconfigure.ObservationAutoConfiguration; import org.springframework.boot.observation.autoconfigure.ObservationHandlerGrouping; @@ -59,14 +59,15 @@ import static org.mockito.Mockito.mock; */ class ObservabilityAutoConfigurationTests { - private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().with(MetricsRun.simple()) + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withBean(SimpleMeterRegistry.class) .withPropertyValues("management.observations.annotations.enabled=true") .withClassLoader(new FilteredClassLoader("io.micrometer.tracing")) .withConfiguration( AutoConfigurations.of(ObservationAutoConfiguration.class, ObservabilityAutoConfiguration.class)); private final ApplicationContextRunner tracingContextRunner = new ApplicationContextRunner() - .with(MetricsRun.simple()) + .withBean(SimpleMeterRegistry.class) .withPropertyValues("management.observations.annotations.enabled=true") .withUserConfiguration(TracerConfiguration.class) .withConfiguration( @@ -114,7 +115,7 @@ class ObservabilityAutoConfigurationTests { @Test void supplyMeterHandlerAndGroupingWhenMicrometerCoreAndTracingAreOnClassPathButThereIsNoTracer() { - new ApplicationContextRunner().with(MetricsRun.simple()) + new ApplicationContextRunner().withBean(SimpleMeterRegistry.class) .withPropertyValues("management.observations.annotations.enabled=true") .withConfiguration( AutoConfigurations.of(ObservationAutoConfiguration.class, ObservabilityAutoConfiguration.class)) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/PrometheusExemplarsAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/PrometheusExemplarsAutoConfigurationTests.java index fc2e0cd888..a882920e5a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/PrometheusExemplarsAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/PrometheusExemplarsAutoConfigurationTests.java @@ -31,10 +31,10 @@ import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter; import io.prometheus.metrics.tracer.common.SpanContext; import org.junit.jupiter.api.Test; -import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.autoconfigure.tracing.BraveAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.tracing.MicrometerTracingAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration; import org.springframework.boot.metrics.autoconfigure.export.prometheus.PrometheusMetricsExportAutoConfiguration; import org.springframework.boot.observation.autoconfigure.ObservationAutoConfiguration; import org.springframework.boot.test.context.FilteredClassLoader; @@ -61,10 +61,11 @@ class PrometheusExemplarsAutoConfigurationTests { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("management.tracing.sampling.probability=1.0", - "management.metrics.distribution.percentiles-histogram.all=true") - .with(MetricsRun.limitedTo(PrometheusMetricsExportAutoConfiguration.class)) + "management.metrics.distribution.percentiles-histogram.all=true", + "management.metrics.use-global-registry=false") .withConfiguration( - AutoConfigurations.of(PrometheusExemplarsAutoConfiguration.class, ObservationAutoConfiguration.class, + AutoConfigurations.of(MetricsAutoConfiguration.class, PrometheusMetricsExportAutoConfiguration.class, + PrometheusExemplarsAutoConfiguration.class, ObservationAutoConfiguration.class, BraveAutoConfiguration.class, MicrometerTracingAutoConfiguration.class)); @Test