Remove remaining usages of MetricsRun

This commit is contained in:
Andy Wilkinson
2025-06-04 12:40:40 +01:00
committed by Phillip Webb
parent e81b34311f
commit b74460b338
3 changed files with 10 additions and 115 deletions

View File

@@ -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<Class<?>> EXPORT_AUTO_CONFIGURATIONS;
static {
Set<Class<?>> 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 <T extends AbstractApplicationContextRunner<?, ?, ?>> Function<T, T> 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 <T extends AbstractApplicationContextRunner<?, ?, ?>> Function<T, T> limitedTo(
Class<?>... exportAutoConfigurations) {
return (contextRunner) -> apply(contextRunner, exportAutoConfigurations);
}
@SuppressWarnings("unchecked")
private static <T extends AbstractApplicationContextRunner<?, ?, ?>> 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));
}
}

View File

@@ -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))

View File

@@ -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