Polish "Allow configuration of auto-timed metrics"

Closes gh-15988
This commit is contained in:
Stephane Nicoll
2019-05-01 08:16:54 +02:00
parent 4df6f5dee0
commit 8045bf1f50
26 changed files with 305 additions and 224 deletions

View File

@@ -17,6 +17,8 @@
package org.springframework.boot.actuate.autoconfigure.metrics.web.client;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer;
import io.micrometer.core.instrument.distribution.HistogramSnapshot;
import org.junit.Rule;
import org.junit.Test;
@@ -100,6 +102,24 @@ public class RestTemplateMetricsConfigurationTests {
});
}
@Test
public void autoTimeRequestsCanBeConfigured() {
this.contextRunner.withPropertyValues(
"management.metrics.web.client.request.autotime.enabled=true",
"management.metrics.web.client.request.autotime.percentiles=0.5,0.7",
"management.metrics.web.client.request.autotime.percentiles-histogram=true")
.run((context) -> {
MeterRegistry registry = getInitializedMeterRegistry(context);
Timer timer = registry.get("http.client.requests").timer();
HistogramSnapshot snapshot = timer.takeSnapshot();
assertThat(snapshot.percentileValues()).hasSize(2);
assertThat(snapshot.percentileValues()[0].percentile())
.isEqualTo(0.5);
assertThat(snapshot.percentileValues()[1].percentile())
.isEqualTo(0.7);
});
}
@Test
public void backsOffWhenRestTemplateBuilderIsMissing() {
new ApplicationContextRunner().with(MetricsRun.simple())

View File

@@ -19,6 +19,8 @@ package org.springframework.boot.actuate.autoconfigure.metrics.web.client;
import java.time.Duration;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer;
import io.micrometer.core.instrument.distribution.HistogramSnapshot;
import org.junit.Rule;
import org.junit.Test;
import reactor.core.publisher.Mono;
@@ -101,6 +103,24 @@ public class WebClientMetricsConfigurationTests {
});
}
@Test
public void autoTimeRequestsCanBeConfigured() {
this.contextRunner.withPropertyValues(
"management.metrics.web.client.request.autotime.enabled=true",
"management.metrics.web.client.request.autotime.percentiles=0.5,0.7",
"management.metrics.web.client.request.autotime.percentiles-histogram=true")
.run((context) -> {
MeterRegistry registry = getInitializedMeterRegistry(context);
Timer timer = registry.get("http.client.requests").timer();
HistogramSnapshot snapshot = timer.takeSnapshot();
assertThat(snapshot.percentileValues()).hasSize(2);
assertThat(snapshot.percentileValues()[0].percentile())
.isEqualTo(0.5);
assertThat(snapshot.percentileValues()[1].percentile())
.isEqualTo(0.7);
});
}
private MeterRegistry getInitializedMeterRegistry(
AssertableApplicationContext context) {
WebClient webClient = mockWebClient(context.getBean(WebClient.Builder.class));

View File

@@ -102,7 +102,7 @@ public class WebFluxMetricsAutoConfigurationTests {
.withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class))
.withUserConfiguration(TestController.class)
.withPropertyValues(
"management.metrics.web.server.request.auto-time.enabled=false")
"management.metrics.web.server.request.autotime.enabled=false")
.run((context) -> {
MeterRegistry registry = getInitializedMeterRegistry(context);
assertThat(registry.find("http.server.requests").meter()).isNull();

View File

@@ -141,14 +141,14 @@ public class WebMvcMetricsAutoConfigurationTests {
}
@Test
public void autoTimeRequestsDefaultValues() {
public void autoTimeRequestsCanBeConfigured() {
this.contextRunner.withUserConfiguration(TestController.class)
.withConfiguration(AutoConfigurations.of(MetricsAutoConfiguration.class,
WebMvcAutoConfiguration.class))
.withPropertyValues(
"management.metrics.web.server.request.auto-time.enabled=true",
"management.metrics.web.server.request.auto-time.default-percentiles=0.5,0.7",
"management.metrics.web.server.request.auto-time.default-histogram=true")
"management.metrics.web.server.request.autotime.enabled=true",
"management.metrics.web.server.request.autotime.percentiles=0.5,0.7",
"management.metrics.web.server.request.autotime.percentiles-histogram=true")
.run((context) -> {
MeterRegistry registry = getInitializedMeterRegistry(context);
Timer timer = registry.get("http.server.requests").timer();