From 5a387a85a91cfbacdd3954651cb29b4086facf01 Mon Sep 17 00:00:00 2001 From: Johnny Lim Date: Sat, 22 Jun 2024 23:37:00 +0900 Subject: [PATCH] Polish gh-40023 See gh-41208 --- ...eclientMetricsExportAutoConfiguration.java | 6 +- ...usMetricsExportAutoConfigurationTests.java | 4 +- ...usMetricsExportAutoConfigurationTests.java | 4 +- ...ntMetricsExportAutoConfigurationTests.java | 4 +- .../LazyTracingSpanContextTests.java | 22 ++--- ...etheusExemplarsAutoConfigurationTests.java | 6 +- ...metheusScrapeEndpointIntegrationTests.java | 90 +++++++------------ .../spring-boot-dependencies/build.gradle | 4 +- 8 files changed, 55 insertions(+), 85 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfiguration.java index 371de66e430..47f401c5002 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfiguration.java @@ -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; @@ -69,14 +67,14 @@ import org.springframework.util.StringUtils; before = { CompositeMeterRegistryAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class }, after = { MetricsAutoConfiguration.class, PrometheusMetricsExportAutoConfiguration.class }) @ConditionalOnBean(Clock.class) -@ConditionalOnClass(PrometheusMeterRegistry.class) +@ConditionalOnClass(io.micrometer.prometheus.PrometheusMeterRegistry.class) @ConditionalOnEnabledMetricsExport("prometheus") @EnableConfigurationProperties(PrometheusProperties.class) public class PrometheusSimpleclientMetricsExportAutoConfiguration { @Bean @ConditionalOnMissingBean - PrometheusConfig simpleclientPrometheusConfig(PrometheusProperties prometheusProperties) { + io.micrometer.prometheus.PrometheusConfig simpleclientPrometheusConfig(PrometheusProperties prometheusProperties) { return new PrometheusSimpleclientPropertiesConfigAdapter(prometheusProperties); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/DualPrometheusMetricsExportAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/DualPrometheusMetricsExportAutoConfigurationTests.java index 519d0af17ae..f0c08e52289 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/DualPrometheusMetricsExportAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/DualPrometheusMetricsExportAutoConfigurationTests.java @@ -192,8 +192,8 @@ class DualPrometheusMetricsExportAutoConfigurationTests { @Test void scrapeEndpointCanBeDisabled() { this.contextRunner.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class)) - .withPropertyValues("management.endpoints.web.exposure.include=prometheus") - .withPropertyValues("management.endpoint.prometheus.enabled=false") + .withPropertyValues("management.endpoints.web.exposure.include=prometheus", + "management.endpoint.prometheus.enabled=false") .withUserConfiguration(BaseConfiguration.class) .run((context) -> assertThat(context).doesNotHaveBean(PrometheusSimpleclientScrapeEndpoint.class) .doesNotHaveBean(PrometheusScrapeEndpoint.class)); 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 507b38571cc..1c26b2ec713 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 @@ -138,8 +138,8 @@ class PrometheusMetricsExportAutoConfigurationTests { @Test void scrapeEndpointCanBeDisabled() { this.contextRunner.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class)) - .withPropertyValues("management.endpoints.web.exposure.include=prometheus") - .withPropertyValues("management.endpoint.prometheus.enabled=false") + .withPropertyValues("management.endpoints.web.exposure.include=prometheus", + "management.endpoint.prometheus.enabled=false") .withUserConfiguration(BaseConfiguration.class) .run((context) -> assertThat(context).doesNotHaveBean(PrometheusScrapeEndpoint.class)); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfigurationTests.java index d409db5f7ba..b1778b76f6f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfigurationTests.java @@ -165,8 +165,8 @@ class PrometheusSimpleclientMetricsExportAutoConfigurationTests { @Test void scrapeEndpointCanBeDisabled() { this.contextRunner.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class)) - .withPropertyValues("management.endpoints.web.exposure.include=prometheus") - .withPropertyValues("management.endpoint.prometheus.enabled=false") + .withPropertyValues("management.endpoints.web.exposure.include=prometheus", + "management.endpoint.prometheus.enabled=false") .withUserConfiguration(BaseConfiguration.class) .run((context) -> assertThat(context).doesNotHaveBean(PrometheusSimpleclientScrapeEndpoint.class)); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/LazyTracingSpanContextTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/LazyTracingSpanContextTests.java index ebdcdf830bf..87ab9d805e5 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/LazyTracingSpanContextTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/LazyTracingSpanContextTests.java @@ -62,21 +62,21 @@ class LazyTracingSpanContextTests { }; - private final LazyTracingSpanContext spanContextSupplier = new LazyTracingSpanContext(this.objectProvider); + private final LazyTracingSpanContext spanContext = new LazyTracingSpanContext(this.objectProvider); @Test void whenCurrentSpanIsNullThenSpanIdIsNull() { - assertThat(this.spanContextSupplier.getCurrentSpanId()).isNull(); + assertThat(this.spanContext.getCurrentSpanId()).isNull(); } @Test void whenCurrentSpanIsNullThenTraceIdIsNull() { - assertThat(this.spanContextSupplier.getCurrentTraceId()).isNull(); + assertThat(this.spanContext.getCurrentTraceId()).isNull(); } @Test void whenCurrentSpanIsNullThenSampledIsFalse() { - assertThat(this.spanContextSupplier.isCurrentSpanSampled()).isFalse(); + assertThat(this.spanContext.isCurrentSpanSampled()).isFalse(); } @Test @@ -86,7 +86,7 @@ class LazyTracingSpanContextTests { TraceContext traceContext = mock(TraceContext.class); given(traceContext.spanId()).willReturn("span-id"); given(span.context()).willReturn(traceContext); - assertThat(this.spanContextSupplier.getCurrentSpanId()).isEqualTo("span-id"); + assertThat(this.spanContext.getCurrentSpanId()).isEqualTo("span-id"); } @Test @@ -96,7 +96,7 @@ class LazyTracingSpanContextTests { TraceContext traceContext = mock(TraceContext.class); given(traceContext.traceId()).willReturn("trace-id"); given(span.context()).willReturn(traceContext); - assertThat(this.spanContextSupplier.getCurrentTraceId()).isEqualTo("trace-id"); + assertThat(this.spanContext.getCurrentTraceId()).isEqualTo("trace-id"); } @Test @@ -105,7 +105,7 @@ class LazyTracingSpanContextTests { given(this.tracer.currentSpan()).willReturn(span); TraceContext traceContext = mock(TraceContext.class); given(span.context()).willReturn(traceContext); - assertThat(this.spanContextSupplier.getCurrentSpanId()).isNull(); + assertThat(this.spanContext.getCurrentSpanId()).isNull(); } @Test @@ -114,7 +114,7 @@ class LazyTracingSpanContextTests { given(this.tracer.currentSpan()).willReturn(span); TraceContext traceContext = mock(TraceContext.class); given(span.context()).willReturn(traceContext); - assertThat(this.spanContextSupplier.getCurrentTraceId()).isNull(); + assertThat(this.spanContext.getCurrentTraceId()).isNull(); } @Test @@ -124,7 +124,7 @@ class LazyTracingSpanContextTests { TraceContext traceContext = mock(TraceContext.class); given(traceContext.sampled()).willReturn(true); given(span.context()).willReturn(traceContext); - assertThat(this.spanContextSupplier.isCurrentSpanSampled()).isTrue(); + assertThat(this.spanContext.isCurrentSpanSampled()).isTrue(); } @Test @@ -134,7 +134,7 @@ class LazyTracingSpanContextTests { TraceContext traceContext = mock(TraceContext.class); given(traceContext.sampled()).willReturn(false); given(span.context()).willReturn(traceContext); - assertThat(this.spanContextSupplier.isCurrentSpanSampled()).isFalse(); + assertThat(this.spanContext.isCurrentSpanSampled()).isFalse(); } @Test @@ -144,7 +144,7 @@ class LazyTracingSpanContextTests { TraceContext traceContext = mock(TraceContext.class); given(traceContext.sampled()).willReturn(null); given(span.context()).willReturn(traceContext); - assertThat(this.spanContextSupplier.isCurrentSpanSampled()).isFalse(); + assertThat(this.spanContext.isCurrentSpanSampled()).isFalse(); } } 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 4777a0c9d52..90aa5e2bac6 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 @@ -80,7 +80,7 @@ class PrometheusExemplarsAutoConfigurationTests { this.contextRunner.withUserConfiguration(CustomConfiguration.class) .run((context) -> assertThat(context).hasSingleBean(SpanContext.class) .getBean(SpanContext.class) - .isSameAs(CustomConfiguration.SUPPLIER)); + .isSameAs(CustomConfiguration.SPAN_CONTEXT)); } @Test @@ -145,11 +145,11 @@ class PrometheusExemplarsAutoConfigurationTests { @Configuration(proxyBeanMethods = false) private static final class CustomConfiguration { - static final SpanContext SUPPLIER = mock(SpanContext.class); + static final SpanContext SPAN_CONTEXT = mock(SpanContext.class); @Bean SpanContext customSpanContext() { - return SUPPLIER; + return SPAN_CONTEXT; } } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/SecondCustomPrometheusScrapeEndpointIntegrationTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/SecondCustomPrometheusScrapeEndpointIntegrationTests.java index fb781030958..2f47b437867 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/SecondCustomPrometheusScrapeEndpointIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/SecondCustomPrometheusScrapeEndpointIntegrationTests.java @@ -47,20 +47,14 @@ class SecondCustomPrometheusScrapeEndpointIntegrationTests { @WebEndpointTest void scrapeHasContentTypeText004ByDefault(WebTestClient client) { + scrapeHasContentTypeText004ByDefault(client, "/actuator/prometheus"); + scrapeHasContentTypeText004ByDefault(client, "/actuator/prometheussc"); + } + + private void scrapeHasContentTypeText004ByDefault(WebTestClient client, String uri) { String expectedContentType = PrometheusTextFormatWriter.CONTENT_TYPE; client.get() - .uri("/actuator/prometheus") - .exchange() - .expectStatus() - .isOk() - .expectHeader() - .contentType(MediaType.parseMediaType(expectedContentType)) - .expectBody(String.class) - .value((body) -> assertThat(body).contains("counter1_total") - .contains("counter2_total") - .contains("counter3_total")); - client.get() - .uri("/actuator/prometheussc") + .uri(uri) .exchange() .expectStatus() .isOk() @@ -74,22 +68,16 @@ class SecondCustomPrometheusScrapeEndpointIntegrationTests { @WebEndpointTest void scrapeHasContentTypeText004ByDefaultWhenClientAcceptsWildcardWithParameter(WebTestClient client) { + scrapeHasContentTypeText004ByDefaultWhenClientAcceptsWildcardWithParameter(client, "/actuator/prometheus"); + scrapeHasContentTypeText004ByDefaultWhenClientAcceptsWildcardWithParameter(client, "/actuator/prometheussc"); + } + + private void scrapeHasContentTypeText004ByDefaultWhenClientAcceptsWildcardWithParameter(WebTestClient client, + String uri) { String expectedContentType = PrometheusTextFormatWriter.CONTENT_TYPE; String accept = "*/*;q=0.8"; client.get() - .uri("/actuator/prometheus") - .accept(MediaType.parseMediaType(accept)) - .exchange() - .expectStatus() - .isOk() - .expectHeader() - .contentType(MediaType.parseMediaType(expectedContentType)) - .expectBody(String.class) - .value((body) -> assertThat(body).contains("counter1_total") - .contains("counter2_total") - .contains("counter3_total")); - client.get() - .uri("/actuator/prometheussc") + .uri(uri) .accept(MediaType.parseMediaType(accept)) .exchange() .expectStatus() @@ -104,21 +92,14 @@ class SecondCustomPrometheusScrapeEndpointIntegrationTests { @WebEndpointTest void scrapeCanProduceOpenMetrics100(WebTestClient client) { + scrapeCanProduceOpenMetrics100(client, "/actuator/prometheus"); + scrapeCanProduceOpenMetrics100(client, "/actuator/prometheussc"); + } + + private void scrapeCanProduceOpenMetrics100(WebTestClient client, String uri) { MediaType openMetrics = MediaType.parseMediaType(OpenMetricsTextFormatWriter.CONTENT_TYPE); client.get() - .uri("/actuator/prometheus") - .accept(openMetrics) - .exchange() - .expectStatus() - .isOk() - .expectHeader() - .contentType(openMetrics) - .expectBody(String.class) - .value((body) -> assertThat(body).contains("counter1_total") - .contains("counter2_total") - .contains("counter3_total")); - client.get() - .uri("/actuator/prometheussc") + .uri(uri) .accept(openMetrics) .exchange() .expectStatus() @@ -133,18 +114,15 @@ class SecondCustomPrometheusScrapeEndpointIntegrationTests { @WebEndpointTest void scrapePrefersToProduceOpenMetrics100(WebTestClient client) { + scrapePrefersToProduceOpenMetrics100(client, "/actuator/prometheus"); + scrapePrefersToProduceOpenMetrics100(client, "/actuator/prometheussc"); + } + + private void scrapePrefersToProduceOpenMetrics100(WebTestClient client, String uri) { MediaType openMetrics = MediaType.parseMediaType(OpenMetricsTextFormatWriter.CONTENT_TYPE); MediaType textPlain = MediaType.parseMediaType(PrometheusTextFormatWriter.CONTENT_TYPE); client.get() - .uri("/actuator/prometheus") - .accept(openMetrics, textPlain) - .exchange() - .expectStatus() - .isOk() - .expectHeader() - .contentType(openMetrics); - client.get() - .uri("/actuator/prometheussc") + .uri(uri) .accept(openMetrics, textPlain) .exchange() .expectStatus() @@ -155,19 +133,13 @@ class SecondCustomPrometheusScrapeEndpointIntegrationTests { @WebEndpointTest void scrapeWithIncludedNames(WebTestClient client) { + scrapeWithIncludedNames(client, "/actuator/prometheus?includedNames=counter1,counter2"); + scrapeWithIncludedNames(client, "/actuator/prometheussc?includedNames=counter1_total,counter2_total"); + } + + private void scrapeWithIncludedNames(WebTestClient client, String uri) { client.get() - .uri("/actuator/prometheus?includedNames=counter1,counter2") - .exchange() - .expectStatus() - .isOk() - .expectHeader() - .contentType(MediaType.parseMediaType(PrometheusTextFormatWriter.CONTENT_TYPE)) - .expectBody(String.class) - .value((body) -> assertThat(body).contains("counter1_total") - .contains("counter2_total") - .doesNotContain("counter3_total")); - client.get() - .uri("/actuator/prometheussc?includedNames=counter1_total,counter2_total") + .uri(uri) .exchange() .expectStatus() .isOk() diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index 1cce0937b8d..f16119ca78e 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -1492,12 +1492,12 @@ bom { library("Prometheus Client", "1.2.1") { group("io.prometheus") { imports = [ - "prometheus-metrics-bom" + "prometheus-metrics-bom" ] } links { site("https://github.com/prometheus/client_java") - releaseNotes("https://github.com/prometheus/client_java/releases/tag/parent-{version}") + releaseNotes("https://github.com/prometheus/client_java/releases/tag/v{version}") } } library("Prometheus Simpleclient", "0.16.0") {