|
|
|
@ -24,6 +24,7 @@ import io.micrometer.core.instrument.Statistic;
|
|
|
|
|
import io.micrometer.core.instrument.Tag;
|
|
|
|
|
import io.micrometer.core.instrument.simple.SimpleConfig;
|
|
|
|
|
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
|
|
|
|
|
import org.junit.Before;
|
|
|
|
|
import org.junit.Test;
|
|
|
|
|
|
|
|
|
|
import org.springframework.http.HttpMethod;
|
|
|
|
@ -39,35 +40,54 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
|
* Tests for {@link MetricsRestTemplateCustomizer}.
|
|
|
|
|
*
|
|
|
|
|
* @author Jon Schneider
|
|
|
|
|
* @author Brian Clozel
|
|
|
|
|
*/
|
|
|
|
|
public class MetricsRestTemplateCustomizerTests {
|
|
|
|
|
|
|
|
|
|
private MeterRegistry registry;
|
|
|
|
|
|
|
|
|
|
private RestTemplate restTemplate;
|
|
|
|
|
|
|
|
|
|
@Before
|
|
|
|
|
public void setup() {
|
|
|
|
|
this.registry = new SimpleMeterRegistry(SimpleConfig.DEFAULT, new MockClock());
|
|
|
|
|
this.restTemplate = new RestTemplate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void interceptRestTemplate() {
|
|
|
|
|
MeterRegistry registry = new SimpleMeterRegistry(SimpleConfig.DEFAULT,
|
|
|
|
|
new MockClock());
|
|
|
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
|
|
|
MetricsRestTemplateCustomizer customizer = new MetricsRestTemplateCustomizer(
|
|
|
|
|
registry, new DefaultRestTemplateExchangeTagsProvider(),
|
|
|
|
|
this.registry, new DefaultRestTemplateExchangeTagsProvider(),
|
|
|
|
|
"http.client.requests", true);
|
|
|
|
|
customizer.customize(restTemplate);
|
|
|
|
|
customizer.customize(this.restTemplate);
|
|
|
|
|
MockRestServiceServer mockServer = MockRestServiceServer
|
|
|
|
|
.createServer(restTemplate);
|
|
|
|
|
.createServer(this.restTemplate);
|
|
|
|
|
mockServer.expect(MockRestRequestMatchers.requestTo("/test/123"))
|
|
|
|
|
.andExpect(MockRestRequestMatchers.method(HttpMethod.GET))
|
|
|
|
|
.andRespond(MockRestResponseCreators.withSuccess("OK",
|
|
|
|
|
MediaType.APPLICATION_JSON));
|
|
|
|
|
String result = restTemplate.getForObject("/test/{id}", String.class, 123);
|
|
|
|
|
MockClock.clock(registry).add(SimpleConfig.DEFAULT_STEP);
|
|
|
|
|
assertThat(registry.find("http.client.requests")
|
|
|
|
|
String result = this.restTemplate.getForObject("/test/{id}", String.class, 123);
|
|
|
|
|
MockClock.clock(this.registry).add(SimpleConfig.DEFAULT_STEP);
|
|
|
|
|
assertThat(this.registry.find("http.client.requests")
|
|
|
|
|
.meters()).anySatisfy((m) -> assertThat(
|
|
|
|
|
StreamSupport.stream(m.getId().getTags().spliterator(), false)
|
|
|
|
|
.map(Tag::getKey)).doesNotContain("bucket"));
|
|
|
|
|
assertThat(registry.find("http.client.requests")
|
|
|
|
|
StreamSupport.stream(m.getId().getTags().spliterator(), false)
|
|
|
|
|
.map(Tag::getKey)).doesNotContain("bucket"));
|
|
|
|
|
assertThat(this.registry.find("http.client.requests")
|
|
|
|
|
.tags("method", "GET", "uri", "/test/{id}", "status", "200")
|
|
|
|
|
.value(Statistic.Count, 1.0).timer()).isPresent();
|
|
|
|
|
assertThat(result).isEqualTo("OK");
|
|
|
|
|
mockServer.verify();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void avoidDuplicateRegistration() {
|
|
|
|
|
MetricsRestTemplateCustomizer customizer = new MetricsRestTemplateCustomizer(
|
|
|
|
|
this.registry, new DefaultRestTemplateExchangeTagsProvider(),
|
|
|
|
|
"http.client.requests", true);
|
|
|
|
|
customizer.customize(this.restTemplate);
|
|
|
|
|
assertThat(this.restTemplate.getInterceptors()).hasSize(1);
|
|
|
|
|
customizer.customize(this.restTemplate);
|
|
|
|
|
assertThat(this.restTemplate.getInterceptors()).hasSize(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|