From a01e0680599e6a47a8de0141bca760e2624f86f1 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 11 Mar 2024 20:35:56 +0000 Subject: [PATCH] Start building against Micrometer 1.13.0 snapshots See gh-39889 --- .../build.gradle | 2 +- ...metheusMetricsExportAutoConfiguration.java | 16 +++---- .../prometheus/PrometheusProperties.java | 11 ++--- .../PrometheusPropertiesConfigAdapter.java | 20 ++++---- ...theusScrapeEndpointDocumentationTests.java | 8 ++-- .../metrics/MeterRegistryCustomizerTests.java | 8 ++-- ...usMetricsExportAutoConfigurationTests.java | 46 ++++++++++--------- ...rometheusPropertiesConfigAdapterTests.java | 8 ++-- .../prometheus/PrometheusPropertiesTests.java | 6 +-- ...etheusExemplarsAutoConfigurationTests.java | 5 +- .../spring-boot-actuator/build.gradle | 2 +- ...metheusScrapeEndpointIntegrationTests.java | 7 +-- .../spring-boot-dependencies/build.gradle | 2 +- .../build.gradle | 2 +- ...eObservabilityMissingIntegrationTests.java | 6 +-- ...eObservabilityPresentIntegrationTests.java | 7 +-- 16 files changed, 80 insertions(+), 76 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle index de4db46bda7..a3cf3a70fda 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle @@ -56,7 +56,7 @@ dependencies { optional("io.micrometer:micrometer-registry-kairos") optional("io.micrometer:micrometer-registry-new-relic") optional("io.micrometer:micrometer-registry-otlp") - optional("io.micrometer:micrometer-registry-prometheus") + optional("io.micrometer:micrometer-registry-prometheus-simpleclient") optional("io.micrometer:micrometer-registry-stackdriver") { exclude group: "commons-logging", module: "commons-logging" exclude group: "javax.annotation", module: "javax.annotation-api" diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.java index 2b0751b980f..2be7ec73bf4 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -22,8 +22,6 @@ import java.time.Duration; import java.util.Map; import io.micrometer.core.instrument.Clock; -import io.micrometer.prometheus.PrometheusConfig; -import io.micrometer.prometheus.PrometheusMeterRegistry; import io.prometheus.client.CollectorRegistry; import io.prometheus.client.exemplars.DefaultExemplarSampler; import io.prometheus.client.exemplars.ExemplarSampler; @@ -60,26 +58,28 @@ import org.springframework.util.StringUtils; * @author Jonatan Ivanov * @since 2.0.0 */ +@SuppressWarnings("deprecation") @AutoConfiguration( before = { CompositeMeterRegistryAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class }, after = MetricsAutoConfiguration.class) @ConditionalOnBean(Clock.class) -@ConditionalOnClass(PrometheusMeterRegistry.class) +@ConditionalOnClass(io.micrometer.prometheus.PrometheusMeterRegistry.class) @ConditionalOnEnabledMetricsExport("prometheus") @EnableConfigurationProperties(PrometheusProperties.class) public class PrometheusMetricsExportAutoConfiguration { @Bean @ConditionalOnMissingBean - public PrometheusConfig prometheusConfig(PrometheusProperties prometheusProperties) { + public io.micrometer.prometheus.PrometheusConfig prometheusConfig(PrometheusProperties prometheusProperties) { return new PrometheusPropertiesConfigAdapter(prometheusProperties); } @Bean @ConditionalOnMissingBean - public PrometheusMeterRegistry prometheusMeterRegistry(PrometheusConfig prometheusConfig, - CollectorRegistry collectorRegistry, Clock clock, ObjectProvider exemplarSamplerProvider) { - return new PrometheusMeterRegistry(prometheusConfig, collectorRegistry, clock, + public io.micrometer.prometheus.PrometheusMeterRegistry prometheusMeterRegistry( + io.micrometer.prometheus.PrometheusConfig prometheusConfig, CollectorRegistry collectorRegistry, + Clock clock, ObjectProvider exemplarSamplerProvider) { + return new io.micrometer.prometheus.PrometheusMeterRegistry(prometheusConfig, collectorRegistry, clock, exemplarSamplerProvider.getIfAvailable()); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusProperties.java index 0b635e345c6..c22be89e7d3 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -20,8 +20,6 @@ import java.time.Duration; import java.util.HashMap; import java.util.Map; -import io.micrometer.prometheus.HistogramFlavor; - import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusPushGatewayManager.ShutdownOperation; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -33,6 +31,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; * @author Stephane Nicoll * @since 2.0.0 */ +@SuppressWarnings("deprecation") @ConfigurationProperties(prefix = "management.prometheus.metrics.export") public class PrometheusProperties { @@ -56,7 +55,7 @@ public class PrometheusProperties { /** * Histogram type for backing DistributionSummary and Timer. */ - private HistogramFlavor histogramFlavor = HistogramFlavor.Prometheus; + private io.micrometer.prometheus.HistogramFlavor histogramFlavor = io.micrometer.prometheus.HistogramFlavor.Prometheus; /** * Step size (i.e. reporting frequency) to use. @@ -71,11 +70,11 @@ public class PrometheusProperties { this.descriptions = descriptions; } - public HistogramFlavor getHistogramFlavor() { + public io.micrometer.prometheus.HistogramFlavor getHistogramFlavor() { return this.histogramFlavor; } - public void setHistogramFlavor(HistogramFlavor histogramFlavor) { + public void setHistogramFlavor(io.micrometer.prometheus.HistogramFlavor histogramFlavor) { this.histogramFlavor = histogramFlavor; } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java index 5e2b4f42f32..47b50a7bca2 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2024 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. @@ -18,19 +18,18 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus import java.time.Duration; -import io.micrometer.prometheus.HistogramFlavor; -import io.micrometer.prometheus.PrometheusConfig; - import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; /** - * Adapter to convert {@link PrometheusProperties} to a {@link PrometheusConfig}. + * Adapter to convert {@link PrometheusProperties} to a + * {@link io.micrometer.prometheus.PrometheusConfig}. * * @author Jon Schneider * @author Phillip Webb */ +@SuppressWarnings("deprecation") class PrometheusPropertiesConfigAdapter extends PropertiesConfigAdapter - implements PrometheusConfig { + implements io.micrometer.prometheus.PrometheusConfig { PrometheusPropertiesConfigAdapter(PrometheusProperties properties) { super(properties); @@ -48,17 +47,18 @@ class PrometheusPropertiesConfigAdapter extends PropertiesConfigAdapter null, collectorRegistry, - Clock.SYSTEM); + io.micrometer.prometheus.PrometheusMeterRegistry meterRegistry = new io.micrometer.prometheus.PrometheusMeterRegistry( + (key) -> null, collectorRegistry, Clock.SYSTEM); new JvmMemoryMetrics().bindTo(meterRegistry); return new PrometheusScrapeEndpoint(collectorRegistry); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java index a24345324bb..5b209ffda46 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -18,7 +18,6 @@ package org.springframework.boot.actuate.autoconfigure.metrics; import io.micrometer.atlas.AtlasMeterRegistry; import io.micrometer.core.instrument.MeterRegistry; -import io.micrometer.prometheus.PrometheusMeterRegistry; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasMetricsExportAutoConfiguration; @@ -37,6 +36,7 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Jon Schneider * @author Andy Wilkinson */ +@SuppressWarnings("deprecation") class MeterRegistryCustomizerTests { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() @@ -63,7 +63,7 @@ class MeterRegistryCustomizerTests { @Test void customizersCanBeAppliedToSpecificRegistryTypes() { this.contextRunner.withUserConfiguration(MeterRegistryCustomizerConfiguration.class).run((context) -> { - MeterRegistry prometheus = context.getBean(PrometheusMeterRegistry.class); + MeterRegistry prometheus = context.getBean(io.micrometer.prometheus.PrometheusMeterRegistry.class); prometheus.get("jvm.memory.used").tags("job", "myjob").gauge(); MeterRegistry atlas = context.getBean(AtlasMeterRegistry.class); assertThat(atlas.find("jvm.memory.used").tags("job", "myjob").gauge()).isNull(); @@ -79,7 +79,7 @@ class MeterRegistryCustomizerTests { } @Bean - MeterRegistryCustomizer prometheusOnlyCommonTags() { + MeterRegistryCustomizer prometheusOnlyCommonTags() { return (registry) -> registry.config().commonTags("job", "myjob"); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfigurationTests.java index 585455b2257..e691fc18974 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -17,8 +17,6 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus; import io.micrometer.core.instrument.Clock; -import io.micrometer.prometheus.PrometheusConfig; -import io.micrometer.prometheus.PrometheusMeterRegistry; import io.prometheus.client.CollectorRegistry; import io.prometheus.client.exemplars.ExemplarSampler; import io.prometheus.client.exemplars.tracer.common.SpanContextSupplier; @@ -54,6 +52,7 @@ import static org.mockito.Mockito.mock; * @author Stephane Nicoll * @author Jonatan Ivanov */ +@SuppressWarnings("deprecation") @ExtendWith(OutputCaptureExtension.class) class PrometheusMetricsExportAutoConfigurationTests { @@ -62,60 +61,63 @@ class PrometheusMetricsExportAutoConfigurationTests { @Test void backsOffWithoutAClock() { - this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean(PrometheusMeterRegistry.class)); + this.contextRunner.run((context) -> assertThat(context) + .doesNotHaveBean(io.micrometer.prometheus.PrometheusMeterRegistry.class)); } @Test void autoConfiguresItsConfigCollectorRegistryAndMeterRegistry() { this.contextRunner.withUserConfiguration(BaseConfiguration.class) - .run((context) -> assertThat(context).hasSingleBean(PrometheusMeterRegistry.class) + .run((context) -> assertThat(context).hasSingleBean(io.micrometer.prometheus.PrometheusMeterRegistry.class) .hasSingleBean(CollectorRegistry.class) - .hasSingleBean(PrometheusConfig.class)); + .hasSingleBean(io.micrometer.prometheus.PrometheusConfig.class)); } @Test void autoConfigurationCanBeDisabledWithDefaultsEnabledProperty() { this.contextRunner.withUserConfiguration(BaseConfiguration.class) .withPropertyValues("management.defaults.metrics.export.enabled=false") - .run((context) -> assertThat(context).doesNotHaveBean(PrometheusMeterRegistry.class) + .run((context) -> assertThat(context) + .doesNotHaveBean(io.micrometer.prometheus.PrometheusMeterRegistry.class) .doesNotHaveBean(CollectorRegistry.class) - .doesNotHaveBean(PrometheusConfig.class)); + .doesNotHaveBean(io.micrometer.prometheus.PrometheusConfig.class)); } @Test void autoConfigurationCanBeDisabledWithSpecificEnabledProperty() { this.contextRunner.withUserConfiguration(BaseConfiguration.class) .withPropertyValues("management.prometheus.metrics.export.enabled=false") - .run((context) -> assertThat(context).doesNotHaveBean(PrometheusMeterRegistry.class) + .run((context) -> assertThat(context) + .doesNotHaveBean(io.micrometer.prometheus.PrometheusMeterRegistry.class) .doesNotHaveBean(CollectorRegistry.class) - .doesNotHaveBean(PrometheusConfig.class)); + .doesNotHaveBean(io.micrometer.prometheus.PrometheusConfig.class)); } @Test void allowsCustomConfigToBeUsed() { this.contextRunner.withUserConfiguration(CustomConfigConfiguration.class) - .run((context) -> assertThat(context).hasSingleBean(PrometheusMeterRegistry.class) + .run((context) -> assertThat(context).hasSingleBean(io.micrometer.prometheus.PrometheusMeterRegistry.class) .hasSingleBean(CollectorRegistry.class) - .hasSingleBean(PrometheusConfig.class) + .hasSingleBean(io.micrometer.prometheus.PrometheusConfig.class) .hasBean("customConfig")); } @Test void allowsCustomRegistryToBeUsed() { this.contextRunner.withUserConfiguration(CustomRegistryConfiguration.class) - .run((context) -> assertThat(context).hasSingleBean(PrometheusMeterRegistry.class) + .run((context) -> assertThat(context).hasSingleBean(io.micrometer.prometheus.PrometheusMeterRegistry.class) .hasBean("customRegistry") .hasSingleBean(CollectorRegistry.class) - .hasSingleBean(PrometheusConfig.class)); + .hasSingleBean(io.micrometer.prometheus.PrometheusConfig.class)); } @Test void allowsCustomCollectorRegistryToBeUsed() { this.contextRunner.withUserConfiguration(CustomCollectorRegistryConfiguration.class) - .run((context) -> assertThat(context).hasSingleBean(PrometheusMeterRegistry.class) + .run((context) -> assertThat(context).hasSingleBean(io.micrometer.prometheus.PrometheusMeterRegistry.class) .hasBean("customCollectorRegistry") .hasSingleBean(CollectorRegistry.class) - .hasSingleBean(PrometheusConfig.class)); + .hasSingleBean(io.micrometer.prometheus.PrometheusConfig.class)); } @Test @@ -123,7 +125,7 @@ class PrometheusMetricsExportAutoConfigurationTests { this.contextRunner.withUserConfiguration(ExemplarsConfiguration.class) .run((context) -> assertThat(context).hasSingleBean(SpanContextSupplier.class) .hasSingleBean(ExemplarSampler.class) - .hasSingleBean(PrometheusMeterRegistry.class)); + .hasSingleBean(io.micrometer.prometheus.PrometheusMeterRegistry.class)); } @Test @@ -140,7 +142,7 @@ class PrometheusMetricsExportAutoConfigurationTests { this.contextRunner.withUserConfiguration(BaseConfiguration.class) .run((context) -> assertThat(context).doesNotHaveBean(SpanContextSupplier.class) .doesNotHaveBean(ExemplarSampler.class) - .hasSingleBean(PrometheusMeterRegistry.class)); + .hasSingleBean(io.micrometer.prometheus.PrometheusMeterRegistry.class)); } @Test @@ -255,7 +257,7 @@ class PrometheusMetricsExportAutoConfigurationTests { static class CustomConfigConfiguration { @Bean - PrometheusConfig customConfig() { + io.micrometer.prometheus.PrometheusConfig customConfig() { return (key) -> null; } @@ -266,9 +268,9 @@ class PrometheusMetricsExportAutoConfigurationTests { static class CustomRegistryConfiguration { @Bean - PrometheusMeterRegistry customRegistry(PrometheusConfig config, CollectorRegistry collectorRegistry, - Clock clock) { - return new PrometheusMeterRegistry(config, collectorRegistry, clock); + io.micrometer.prometheus.PrometheusMeterRegistry customRegistry( + io.micrometer.prometheus.PrometheusConfig config, CollectorRegistry collectorRegistry, Clock clock) { + return new io.micrometer.prometheus.PrometheusMeterRegistry(config, collectorRegistry, clock); } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java index 68929bf7b60..f38efdcbc0d 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -18,7 +18,6 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus import java.time.Duration; -import io.micrometer.prometheus.HistogramFlavor; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.AbstractPropertiesConfigAdapterTests; @@ -30,6 +29,7 @@ import static org.assertj.core.api.Assertions.assertThat; * * @author Mirko Sobeck */ +@SuppressWarnings("deprecation") class PrometheusPropertiesConfigAdapterTests extends AbstractPropertiesConfigAdapterTests { @@ -47,9 +47,9 @@ class PrometheusPropertiesConfigAdapterTests @Test void whenPropertiesHistogramFlavorIsSetAdapterHistogramFlavorReturnsIt() { PrometheusProperties properties = new PrometheusProperties(); - properties.setHistogramFlavor(HistogramFlavor.VictoriaMetrics); + properties.setHistogramFlavor(io.micrometer.prometheus.HistogramFlavor.VictoriaMetrics); assertThat(new PrometheusPropertiesConfigAdapter(properties).histogramFlavor()) - .isEqualTo(HistogramFlavor.VictoriaMetrics); + .isEqualTo(io.micrometer.prometheus.HistogramFlavor.VictoriaMetrics); } @Test diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesTests.java index 3cfc3c5ac9c..b2297f97358 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2024 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. @@ -16,7 +16,6 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus; -import io.micrometer.prometheus.PrometheusConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -26,12 +25,13 @@ import static org.assertj.core.api.Assertions.assertThat; * * @author Stephane Nicoll */ +@SuppressWarnings("deprecation") class PrometheusPropertiesTests { @Test void defaultValuesAreConsistent() { PrometheusProperties properties = new PrometheusProperties(); - PrometheusConfig config = PrometheusConfig.DEFAULT; + io.micrometer.prometheus.PrometheusConfig config = io.micrometer.prometheus.PrometheusConfig.DEFAULT; assertThat(properties.isDescriptions()).isEqualTo(config.descriptions()); assertThat(properties.getHistogramFlavor()).isEqualTo(config.histogramFlavor()); assertThat(properties.getStep()).isEqualTo(config.step()); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/PrometheusExemplarsAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/PrometheusExemplarsAutoConfigurationTests.java index e03ce27ae22..bc6030fdf2a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/PrometheusExemplarsAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/PrometheusExemplarsAutoConfigurationTests.java @@ -22,7 +22,6 @@ import java.util.regex.Pattern; import io.micrometer.observation.Observation; import io.micrometer.observation.ObservationRegistry; -import io.micrometer.prometheus.PrometheusMeterRegistry; import io.prometheus.client.exemplars.tracer.common.SpanContextSupplier; import io.prometheus.client.exporter.common.TextFormat; import org.junit.jupiter.api.Test; @@ -84,12 +83,14 @@ class PrometheusExemplarsAutoConfigurationTests { } @Test + @SuppressWarnings("deprecation") void prometheusOpenMetricsOutputShouldContainExemplars() { this.contextRunner.run((context) -> { assertThat(context).hasSingleBean(SpanContextSupplier.class); ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class); Observation.start("test.observation", observationRegistry).stop(); - PrometheusMeterRegistry prometheusMeterRegistry = context.getBean(PrometheusMeterRegistry.class); + io.micrometer.prometheus.PrometheusMeterRegistry prometheusMeterRegistry = context + .getBean(io.micrometer.prometheus.PrometheusMeterRegistry.class); String openMetricsOutput = prometheusMeterRegistry.scrape(TextFormat.CONTENT_TYPE_OPENMETRICS_100); assertThat(openMetricsOutput).contains("test_observation_seconds_bucket"); diff --git a/spring-boot-project/spring-boot-actuator/build.gradle b/spring-boot-project/spring-boot-actuator/build.gradle index 37325cfd7e1..c66e297035b 100644 --- a/spring-boot-project/spring-boot-actuator/build.gradle +++ b/spring-boot-project/spring-boot-actuator/build.gradle @@ -24,7 +24,7 @@ dependencies { optional("io.micrometer:micrometer-observation") optional("io.micrometer:micrometer-jakarta9") optional("io.micrometer:micrometer-tracing") - optional("io.micrometer:micrometer-registry-prometheus") + optional("io.micrometer:micrometer-registry-prometheus-simpleclient") optional("io.prometheus:simpleclient_pushgateway") { exclude(group: "javax.xml.bind", module: "jaxb-api") } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpointIntegrationTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpointIntegrationTests.java index d74a63e875e..49c3a658db3 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpointIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpointIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -19,7 +19,6 @@ package org.springframework.boot.actuate.metrics.export.prometheus; import io.micrometer.core.instrument.Clock; import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.MeterRegistry; -import io.micrometer.prometheus.PrometheusMeterRegistry; import io.prometheus.client.CollectorRegistry; import io.prometheus.client.exporter.common.TextFormat; @@ -135,8 +134,10 @@ class PrometheusScrapeEndpointIntegrationTests { } @Bean + @SuppressWarnings("deprecation") MeterRegistry registry(CollectorRegistry registry) { - PrometheusMeterRegistry meterRegistry = new PrometheusMeterRegistry((k) -> null, registry, Clock.SYSTEM); + io.micrometer.prometheus.PrometheusMeterRegistry meterRegistry = new io.micrometer.prometheus.PrometheusMeterRegistry( + (k) -> null, registry, Clock.SYSTEM); Counter.builder("counter1").register(meterRegistry); Counter.builder("counter2").register(meterRegistry); Counter.builder("counter3").register(meterRegistry); diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index e036ade0fb8..8867633aafd 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -1232,7 +1232,7 @@ bom { ] } } - library("Micrometer", "1.13.0-M1") { + library("Micrometer", "1.13.0-SNAPSHOT") { considerSnapshots() group("io.micrometer") { modules = [ diff --git a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle index 623831519c1..fa95eb8f65f 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle @@ -69,7 +69,7 @@ dependencies { testImplementation("com.h2database:h2") testImplementation("com.unboundid:unboundid-ldapsdk") testImplementation("io.lettuce:lettuce-core") - testImplementation("io.micrometer:micrometer-registry-prometheus") + testImplementation("io.micrometer:micrometer-registry-prometheus-simpleclient") testImplementation("io.projectreactor.netty:reactor-netty-http") testImplementation("io.projectreactor:reactor-core") testImplementation("io.projectreactor:reactor-test") diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/actuate/observability/AutoConfigureObservabilityMissingIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/actuate/observability/AutoConfigureObservabilityMissingIntegrationTests.java index e0aa0600943..8c3fd64eec9 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/actuate/observability/AutoConfigureObservabilityMissingIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/actuate/observability/AutoConfigureObservabilityMissingIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2024 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. @@ -18,7 +18,6 @@ package org.springframework.boot.test.autoconfigure.actuate.observability; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; -import io.micrometer.prometheus.PrometheusMeterRegistry; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -37,13 +36,14 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Moritz Halbritter */ @SpringBootTest +@SuppressWarnings("deprecation") class AutoConfigureObservabilityMissingIntegrationTests { @Test void customizerRunsAndOnlyEnablesSimpleMeterRegistryWhenNoAnnotationPresent( @Autowired ApplicationContext applicationContext) { assertThat(applicationContext.getBean(MeterRegistry.class)).isInstanceOf(SimpleMeterRegistry.class); - assertThat(applicationContext.getBeansOfType(PrometheusMeterRegistry.class)).isEmpty(); + assertThat(applicationContext.getBeansOfType(io.micrometer.prometheus.PrometheusMeterRegistry.class)).isEmpty(); } @Test diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/actuate/observability/AutoConfigureObservabilityPresentIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/actuate/observability/AutoConfigureObservabilityPresentIntegrationTests.java index d4fbdcef567..f1c58916c45 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/actuate/observability/AutoConfigureObservabilityPresentIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/actuate/observability/AutoConfigureObservabilityPresentIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2024 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. @@ -16,7 +16,6 @@ package org.springframework.boot.test.autoconfigure.actuate.observability; -import io.micrometer.prometheus.PrometheusMeterRegistry; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -36,12 +35,14 @@ import static org.assertj.core.api.Assertions.assertThat; */ @SpringBootTest @AutoConfigureObservability +@SuppressWarnings("deprecation") class AutoConfigureObservabilityPresentIntegrationTests { @Test void customizerDoesNotDisableAvailableMeterRegistriesWhenAnnotationPresent( @Autowired ApplicationContext applicationContext) { - assertThat(applicationContext.getBeansOfType(PrometheusMeterRegistry.class)).hasSize(1); + assertThat(applicationContext.getBeansOfType(io.micrometer.prometheus.PrometheusMeterRegistry.class)) + .hasSize(1); } @Test