Browse Source

Polish gh-40023

See gh-41208
pull/41325/head
Johnny Lim 2 years ago committed by Moritz Halbritter
parent
commit
5a387a85a9
  1. 6
      spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfiguration.java
  2. 4
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/DualPrometheusMetricsExportAutoConfigurationTests.java
  3. 4
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfigurationTests.java
  4. 4
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusSimpleclientMetricsExportAutoConfigurationTests.java
  5. 22
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/LazyTracingSpanContextTests.java
  6. 6
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/prometheus/PrometheusExemplarsAutoConfigurationTests.java
  7. 90
      spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/SecondCustomPrometheusScrapeEndpointIntegrationTests.java
  8. 4
      spring-boot-project/spring-boot-dependencies/build.gradle

6
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; @@ -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; @@ -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);
}

4
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 { @@ -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));

4
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 { @@ -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));
}

4
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 { @@ -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));
}

22
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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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();
}
}

6
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 { @@ -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 { @@ -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;
}
}

90
spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/export/prometheus/SecondCustomPrometheusScrapeEndpointIntegrationTests.java

@ -47,20 +47,14 @@ class SecondCustomPrometheusScrapeEndpointIntegrationTests { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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()

4
spring-boot-project/spring-boot-dependencies/build.gradle

@ -1492,12 +1492,12 @@ bom { @@ -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") {

Loading…
Cancel
Save