Add contextualName to HTTP Observations

This commit ensures that all HTTP `ObservationConvention`
implementations provide a consistent contextual name for observations.
This name should be like "http get" where only the HTTP verb changes
depending on the request.

Fixes gh-29231
This commit is contained in:
Brian Clozel
2022-09-30 16:08:42 +02:00
parent 0cc3c6b5d1
commit b9070ae752
8 changed files with 57 additions and 5 deletions

View File

@@ -42,6 +42,18 @@ class DefaultClientHttpObservationConventionTests {
private final DefaultClientHttpObservationConvention observationConvention = new DefaultClientHttpObservationConvention();
@Test
void shouldHaveName() {
assertThat(this.observationConvention.getName()).isEqualTo("http.client.requests");
}
@Test
void shouldHaveContextualName() {
ClientHttpObservationContext context = new ClientHttpObservationContext();
context.setCarrier(new MockClientHttpRequest(HttpMethod.GET, "/test"));
assertThat(this.observationConvention.getContextualName(context)).isEqualTo("http get");
}
@Test
void supportsOnlyClientHttpObservationContext() {
assertThat(this.observationConvention.supportsContext(new ClientHttpObservationContext())).isTrue();

View File

@@ -33,7 +33,7 @@ class DefaultHttpRequestsObservationConventionTests {
private final DefaultHttpRequestsObservationConvention convention = new DefaultHttpRequestsObservationConvention();
private final MockHttpServletRequest request = new MockHttpServletRequest();
private final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/test/resource");
private final MockHttpServletResponse response = new MockHttpServletResponse();
@@ -45,6 +45,11 @@ class DefaultHttpRequestsObservationConventionTests {
assertThat(convention.getName()).isEqualTo("http.server.requests");
}
@Test
void shouldHaveContextualName() {
assertThat(convention.getContextualName(this.context)).isEqualTo("http get");
}
@Test
void supportsOnlyHttpRequestsObservationContext() {
assertThat(this.convention.supportsContext(this.context)).isTrue();
@@ -66,7 +71,6 @@ class DefaultHttpRequestsObservationConventionTests {
@Test
void addsKeyValuesForExchangeWithPathPattern() {
this.request.setMethod("GET");
this.request.setRequestURI("/test/resource");
this.request.setPathInfo("/test/resource");
this.context.setPathPattern("/test/{name}");
@@ -80,7 +84,6 @@ class DefaultHttpRequestsObservationConventionTests {
@Test
void addsKeyValuesForErrorExchange() {
this.request.setMethod("GET");
this.request.setRequestURI("/test/resource");
this.request.setPathInfo("/test/resource");
this.context.setError(new IllegalArgumentException("custom error"));
@@ -95,7 +98,6 @@ class DefaultHttpRequestsObservationConventionTests {
@Test
void addsKeyValuesForRedirectExchange() {
this.request.setMethod("GET");
this.request.setRequestURI("/test/redirect");
this.request.setPathInfo("/test/redirect");
this.response.setStatus(302);
@@ -110,7 +112,6 @@ class DefaultHttpRequestsObservationConventionTests {
@Test
void addsKeyValuesForNotFoundExchange() {
this.request.setMethod("GET");
this.request.setRequestURI("/test/notFound");
this.request.setPathInfo("/test/notFound");
this.response.setStatus(404);

View File

@@ -42,6 +42,13 @@ class DefaultHttpRequestsObservationConventionTests {
assertThat(convention.getName()).isEqualTo("http.server.requests");
}
@Test
void shouldHaveContextualName() {
ServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/test/resource"));
HttpRequestsObservationContext context = new HttpRequestsObservationContext(exchange);
assertThat(convention.getContextualName(context)).isEqualTo("http get");
}
@Test
void supportsOnlyHttpRequestsObservationContext() {
ServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.post("/test/resource"));