Ensure that metrics and observation properties are enabled

Closes gh-32676
pull/32685/head
Andy Wilkinson 2 years ago
parent 3ca5c7ff5b
commit 4dfd770406

@ -32,6 +32,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration; import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
@ -53,6 +54,7 @@ import org.springframework.core.annotation.Order;
@ConditionalOnClass(Observation.class) @ConditionalOnClass(Observation.class)
@ConditionalOnBean(ObservationRegistry.class) @ConditionalOnBean(ObservationRegistry.class)
@Import({ RestTemplateObservationConfiguration.class, WebClientObservationConfiguration.class }) @Import({ RestTemplateObservationConfiguration.class, WebClientObservationConfiguration.class })
@EnableConfigurationProperties({ MetricsProperties.class, ObservationProperties.class })
public class HttpClientObservationsAutoConfiguration { public class HttpClientObservationsAutoConfiguration {
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)

@ -57,7 +57,7 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
@SuppressWarnings({ "deprecation", "removal" }) @SuppressWarnings({ "deprecation", "removal" })
class RestTemplateObservationConfigurationTests { class RestTemplateObservationConfigurationTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().with(MetricsRun.simple()) private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withBean(ObservationRegistry.class, TestObservationRegistry::create) .withBean(ObservationRegistry.class, TestObservationRegistry::create)
.withConfiguration(AutoConfigurations.of(ObservationAutoConfiguration.class, .withConfiguration(AutoConfigurations.of(ObservationAutoConfiguration.class,
RestTemplateAutoConfiguration.class, HttpClientObservationsAutoConfiguration.class)); RestTemplateAutoConfiguration.class, HttpClientObservationsAutoConfiguration.class));
@ -118,22 +118,23 @@ class RestTemplateObservationConfigurationTests {
@Test @Test
void afterMaxUrisReachedFurtherUrisAreDenied(CapturedOutput output) { void afterMaxUrisReachedFurtherUrisAreDenied(CapturedOutput output) {
this.contextRunner.withPropertyValues("management.metrics.web.client.max-uri-tags=2").run((context) -> { this.contextRunner.with(MetricsRun.simple()).withPropertyValues("management.metrics.web.client.max-uri-tags=2")
.run((context) -> {
RestTemplate restTemplate = context.getBean(RestTemplateBuilder.class).build();
MockRestServiceServer server = MockRestServiceServer.createServer(restTemplate); RestTemplate restTemplate = context.getBean(RestTemplateBuilder.class).build();
for (int i = 0; i < 3; i++) { MockRestServiceServer server = MockRestServiceServer.createServer(restTemplate);
server.expect(requestTo("/test/" + i)).andRespond(withStatus(HttpStatus.OK)); for (int i = 0; i < 3; i++) {
} server.expect(requestTo("/test/" + i)).andRespond(withStatus(HttpStatus.OK));
for (int i = 0; i < 3; i++) { }
restTemplate.getForObject("/test/" + i, String.class); for (int i = 0; i < 3; i++) {
} restTemplate.getForObject("/test/" + i, String.class);
TestObservationRegistry registry = context.getBean(TestObservationRegistry.class); }
TestObservationRegistryAssert.assertThat(registry); TestObservationRegistry registry = context.getBean(TestObservationRegistry.class);
// TODO: check observation count for name TestObservationRegistryAssert.assertThat(registry);
assertThat(output).contains("Reached the maximum number of URI tags for 'http.client.requests'.") // TODO: check observation count for name
.contains("Are you using 'uriVariables'?"); assertThat(output).contains("Reached the maximum number of URI tags for 'http.client.requests'.")
}); .contains("Are you using 'uriVariables'?");
});
} }
@Test @Test

Loading…
Cancel
Save