Search in sources :

Example 11 with RequiredSearch

use of io.micrometer.core.instrument.search.RequiredSearch in project cxf by apache.

the class SpringJaxrsTest method testJaxrsCustomHttpMethodMetric.

@Test
public void testJaxrsCustomHttpMethodMetric() {
    final WebTarget target = createWebTarget();
    try (Response r = target.request().trace()) {
        assertThat(r.getStatus()).isEqualTo(Status.NOT_ACCEPTABLE.getStatusCode());
    }
    await().atMost(Duration.ofSeconds(1)).ignoreException(MeterNotFoundException.class).until(() -> registry.get("cxf.server.requests").timers(), not(empty()));
    RequiredSearch serverRequestMetrics = registry.get("cxf.server.requests");
    Map<Object, Object> serverTags = serverRequestMetrics.timer().getId().getTags().stream().collect(toMap(Tag::getKey, Tag::getValue));
    assertThat(serverTags).containsOnly(entry("exception", "None"), entry("method", "TRACE"), entry("operation", "traceBooks"), entry("uri", "/api/library"), entry("outcome", "CLIENT_ERROR"), entry("status", "406"));
    RequiredSearch clientRequestMetrics = registry.get("cxf.client.requests");
    Map<Object, Object> clientTags = clientRequestMetrics.timer().getId().getTags().stream().collect(toMap(Tag::getKey, Tag::getValue));
    assertThat(clientTags).containsOnly(entry("exception", "None"), entry("method", "TRACE"), entry("operation", "UNKNOWN"), entry("uri", "http://localhost:" + port + "/api/library"), entry("outcome", "CLIENT_ERROR"), entry("status", "406"));
}
Also used : Response(javax.ws.rs.core.Response) MeterNotFoundException(io.micrometer.core.instrument.search.MeterNotFoundException) WebTarget(javax.ws.rs.client.WebTarget) RequiredSearch(io.micrometer.core.instrument.search.RequiredSearch) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 12 with RequiredSearch

use of io.micrometer.core.instrument.search.RequiredSearch in project cxf by apache.

the class SpringJaxrsTest method testJaxrsExceptionMetric.

@Test
public void testJaxrsExceptionMetric() {
    final WebTarget target = createWebTarget();
    assertThatThrownBy(() -> target.request().delete(String.class)).isInstanceOf(InternalServerErrorException.class).hasMessageContaining("Internal Server Error");
    await().atMost(Duration.ofSeconds(1)).ignoreException(MeterNotFoundException.class).until(() -> registry.get("cxf.server.requests").timers(), not(empty()));
    RequiredSearch serverRequestMetrics = registry.get("cxf.server.requests");
    Map<Object, Object> serverTags = serverRequestMetrics.timer().getId().getTags().stream().collect(toMap(Tag::getKey, Tag::getValue));
    assertThat(serverTags).containsOnly(entry("exception", "UnsupportedOperationException"), entry("method", "DELETE"), entry("operation", "deleteBooks"), entry("uri", "/api/library"), entry("outcome", "SERVER_ERROR"), entry("status", "500"));
    RequiredSearch clientRequestMetrics = registry.get("cxf.client.requests");
    Map<Object, Object> clientTags = clientRequestMetrics.timer().getId().getTags().stream().collect(toMap(Tag::getKey, Tag::getValue));
    assertThat(clientTags).containsOnly(entry("exception", "None"), entry("method", "DELETE"), entry("operation", "UNKNOWN"), entry("uri", "http://localhost:" + port + "/api/library"), entry("outcome", "SERVER_ERROR"), entry("status", "500"));
}
Also used : MeterNotFoundException(io.micrometer.core.instrument.search.MeterNotFoundException) InternalServerErrorException(javax.ws.rs.InternalServerErrorException) WebTarget(javax.ws.rs.client.WebTarget) RequiredSearch(io.micrometer.core.instrument.search.RequiredSearch) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 13 with RequiredSearch

use of io.micrometer.core.instrument.search.RequiredSearch in project cxf by apache.

the class SpringJaxrsTest method testJaxrsClientExceptionMetric.

@Test
public void testJaxrsClientExceptionMetric() {
    final int fakePort = SocketUtils.findAvailableTcpPort();
    final WebTarget target = ClientBuilder.newClient().register(new MetricsFeature(metricsProvider)).target("http://localhost:" + fakePort + "/api/library");
    assertThatThrownBy(() -> target.request().delete(String.class)).isInstanceOf(ProcessingException.class).hasMessageContaining("Connection refused");
    // no server meters
    assertThat(registry.getMeters()).noneMatch(m -> "cxf.server.requests".equals(m.getId().getName()));
    RequiredSearch clientRequestMetrics = registry.get("cxf.client.requests");
    Map<Object, Object> clientTags = clientRequestMetrics.timer().getId().getTags().stream().collect(toMap(Tag::getKey, Tag::getValue));
    assertThat(clientTags).containsOnly(entry("exception", "None"), entry("method", "DELETE"), entry("operation", "UNKNOWN"), entry("uri", "http://localhost:" + fakePort + "/api/library"), entry("outcome", "UNKNOWN"), entry("status", "UNKNOWN"));
}
Also used : MetricsFeature(org.apache.cxf.metrics.MetricsFeature) WebTarget(javax.ws.rs.client.WebTarget) RequiredSearch(io.micrometer.core.instrument.search.RequiredSearch) ProcessingException(javax.ws.rs.ProcessingException) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 14 with RequiredSearch

use of io.micrometer.core.instrument.search.RequiredSearch in project cxf by apache.

the class SpringJaxrsTest method testJaxrsSuccessMetric.

@Test
public void testJaxrsSuccessMetric() {
    final WebTarget target = createWebTarget();
    try (Response r = target.request().get()) {
        assertThat(r.getStatus()).isEqualTo(200);
    }
    await().atMost(Duration.ofSeconds(1)).ignoreException(MeterNotFoundException.class).until(() -> registry.get("cxf.server.requests").timers(), not(empty()));
    RequiredSearch serverRequestMetrics = registry.get("cxf.server.requests");
    Map<Object, Object> serverTags = serverRequestMetrics.timer().getId().getTags().stream().collect(toMap(Tag::getKey, Tag::getValue));
    assertThat(serverTags).containsOnly(entry("exception", "None"), entry("method", "GET"), entry("operation", "getBooks"), entry("uri", "/api/library"), entry("outcome", "SUCCESS"), entry("status", "200"));
    RequiredSearch clientRequestMetrics = registry.get("cxf.client.requests");
    Map<Object, Object> clientTags = clientRequestMetrics.timer().getId().getTags().stream().collect(toMap(Tag::getKey, Tag::getValue));
    assertThat(clientTags).containsOnly(entry("exception", "None"), entry("method", "GET"), entry("operation", "UNKNOWN"), entry("uri", "http://localhost:" + port + "/api/library"), entry("outcome", "SUCCESS"), entry("status", "200"));
}
Also used : Response(javax.ws.rs.core.Response) MeterNotFoundException(io.micrometer.core.instrument.search.MeterNotFoundException) WebTarget(javax.ws.rs.client.WebTarget) RequiredSearch(io.micrometer.core.instrument.search.RequiredSearch) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 15 with RequiredSearch

use of io.micrometer.core.instrument.search.RequiredSearch in project cxf by apache.

the class SpringClientOnlyJaxrsTest method testJaxrsClientExceptionMetric.

@Test
public void testJaxrsClientExceptionMetric() {
    final WebTarget target = ClientBuilder.newClient().register(new MetricsFeature(metricsProvider)).target("http://localhost:" + port + "/api/library");
    final Builder builder = target.request().header(HttpHeaders.CONTENT_TYPE, "text/plain");
    assertThatThrownBy(() -> builder.delete(String.class)).isInstanceOf(BadRequestException.class).hasMessageContaining("Bad Request");
    // no server meters
    assertThat(registry.getMeters()).noneMatch(m -> "cxf.server.requests".equals(m.getId().getName()));
    RequiredSearch clientRequestMetrics = registry.get("cxf.client.requests");
    Map<Object, Object> clientTags = clientRequestMetrics.timer().getId().getTags().stream().collect(toMap(Tag::getKey, Tag::getValue));
    assertThat(clientTags).containsOnly(entry("exception", "None"), entry("method", "DELETE"), entry("operation", "UNKNOWN"), entry("uri", "http://localhost:" + port + "/api/library"), entry("outcome", "CLIENT_ERROR"), entry("status", "400"));
}
Also used : MetricsFeature(org.apache.cxf.metrics.MetricsFeature) ClientBuilder(javax.ws.rs.client.ClientBuilder) Builder(javax.ws.rs.client.Invocation.Builder) BadRequestException(javax.ws.rs.BadRequestException) WebTarget(javax.ws.rs.client.WebTarget) RequiredSearch(io.micrometer.core.instrument.search.RequiredSearch) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Aggregations

RequiredSearch (io.micrometer.core.instrument.search.RequiredSearch)28 Test (org.junit.jupiter.api.Test)25 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)25 MeterNotFoundException (io.micrometer.core.instrument.search.MeterNotFoundException)18 WebTarget (javax.ws.rs.client.WebTarget)12 Response (javax.ws.rs.core.Response)9 LibraryApi (org.apache.cxf.systest.jaxrs.resources.LibraryApi)8 InternalServerErrorException (javax.ws.rs.InternalServerErrorException)4 ProcessingException (javax.ws.rs.ProcessingException)4 Counter (io.micrometer.core.instrument.Counter)3 MetricsFeature (org.apache.cxf.metrics.MetricsFeature)3 HelloService (org.apache.cxf.systest.jaxws.resources.HelloService)3 NotFoundException (javax.ws.rs.NotFoundException)2 ClientBuilder (javax.ws.rs.client.ClientBuilder)2 Builder (javax.ws.rs.client.Invocation.Builder)2 SOAPFaultException (javax.xml.ws.soap.SOAPFaultException)2 Book (org.apache.cxf.systest.jaxrs.resources.Book)2 Test (org.junit.Test)2 BadRequestException (javax.ws.rs.BadRequestException)1 Endpoint (javax.xml.ws.Endpoint)1