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:
@@ -67,6 +67,11 @@ public class DefaultClientObservationConvention implements ClientObservationConv
|
||||
return this.name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContextualName(ClientObservationContext context) {
|
||||
return "http " + context.getCarrier().method().name().toLowerCase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeyValues getLowCardinalityKeyValues(ClientObservationContext context) {
|
||||
return KeyValues.of(uri(context), method(context), status(context), exception(context), outcome(context));
|
||||
|
||||
@@ -36,6 +36,18 @@ class DefaultClientObservationConventionTests {
|
||||
|
||||
private DefaultClientObservationConvention observationConvention = new DefaultClientObservationConvention();
|
||||
|
||||
@Test
|
||||
void shouldHaveName() {
|
||||
assertThat(this.observationConvention.getName()).isEqualTo("http.client.requests");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldHaveContextualName() {
|
||||
ClientObservationContext context = new ClientObservationContext();
|
||||
context.setCarrier(ClientRequest.create(HttpMethod.GET, URI.create("/test")).build());
|
||||
assertThat(this.observationConvention.getContextualName(context)).isEqualTo("http get");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldOnlySupportWebClientObservationContext() {
|
||||
assertThat(this.observationConvention.supportsContext(new ClientObservationContext())).isTrue();
|
||||
|
||||
Reference in New Issue
Block a user