Search in sources :

Example 46 with ExternalRequest

use of com.newrelic.agent.introspec.ExternalRequest in project newrelic-java-agent by newrelic.

the class NingAsyncHttpClient11Tests method testSuccess.

@Test
public void testSuccess() throws Exception {
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    URI endpoint = server.getEndPoint();
    String host = endpoint.getHost();
    String url = endpoint.toURL().toExternalForm();
    int status = makeAsyncRequest(url + "?no-transaction=true");
    assertEquals(200, status);
    // transaction
    assertEquals(1, introspector.getFinishedTransactionCount(10000));
    String txName = introspector.getTransactionNames().iterator().next();
    // scoped metrics
    assertEquals(1, MetricsHelper.getScopedMetricCount(txName, "External/" + host + "/AsyncHttpClient/onCompleted"));
    // unscoped metrics
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/" + host + "/AsyncHttpClient/onCompleted"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/" + host + "/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/allOther"));
    // events
    Collection<TransactionEvent> transactionEvents = introspector.getTransactionEvents(txName);
    assertEquals(1, transactionEvents.size());
    TransactionEvent transactionEvent = transactionEvents.iterator().next();
    assertEquals(1, transactionEvent.getExternalCallCount());
    assertTrue(transactionEvent.getExternalDurationInSec() > 0);
    // traces
    Collection<TransactionTrace> traces = introspector.getTransactionTracesForTransaction(txName);
    assertEquals(1, traces.size());
    TransactionTrace trace = traces.iterator().next();
    for (TraceSegment segment : trace.getInitialTraceSegment().getChildren()) {
        Map<String, Object> attributes = segment.getTracerAttributes();
        Object asyncContext = attributes.get("async_context");
        if (asyncContext != null && asyncContext.equals("External")) {
            assertEquals("", segment.getMethodName());
            assertEquals("External Request", segment.getClassName());
            assertEquals("External/" + host + "/AsyncHttpClient/onCompleted", segment.getName());
            assertEquals(url, segment.getUri());
            assertEquals(1, segment.getCallCount());
        }
    }
    // external request information
    Collection<ExternalRequest> externalRequests = introspector.getExternalRequests(txName);
    assertEquals(1, externalRequests.size());
    ExternalRequest externalRequest = externalRequests.iterator().next();
    assertEquals(1, externalRequest.getCount());
    assertEquals(host, externalRequest.getHostname());
    assertEquals("AsyncHttpClient", externalRequest.getLibrary());
    assertEquals("onCompleted", externalRequest.getOperation());
    assertEquals(Integer.valueOf(200), externalRequest.getStatusCode());
    assertEquals("OK", externalRequest.getStatusText());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) URI(java.net.URI) TraceSegment(com.newrelic.agent.introspec.TraceSegment) ExternalRequest(com.newrelic.agent.introspec.ExternalRequest) TransactionEvent(com.newrelic.agent.introspec.TransactionEvent) TransactionTrace(com.newrelic.agent.introspec.TransactionTrace) Test(org.junit.Test)

Example 47 with ExternalRequest

use of com.newrelic.agent.introspec.ExternalRequest in project newrelic-java-agent by newrelic.

the class PlayAsyncHttpClientTests method testCat.

@Test
public void testCat() throws Exception {
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    URI endpoint = server.getEndPoint();
    String host = endpoint.getHost();
    final CountDownLatch latch = new CountDownLatch(1);
    final AtomicInteger result = new AtomicInteger();
    makeAsyncRequest(endpoint.toURL().toString(), new ResponseRunnable() {

        @Override
        public void onResponse(StandaloneWSResponse standaloneWSResponse) {
            result.set(standaloneWSResponse.status());
            latch.countDown();
        }
    });
    latch.await(30, TimeUnit.SECONDS);
    assertEquals(200, result.get());
    // transaction
    String txName = "OtherTransaction/Custom/com.nr.agent.instrumentation.playws.PlayAsyncHttpClientTests/makeAsyncRequest";
    assertEquals(2, introspector.getFinishedTransactionCount(TimeUnit.SECONDS.toMillis(30)));
    Collection<String> names = introspector.getTransactionNames();
    assertEquals(2, names.size());
    assertTrue(names.contains(server.getServerTransactionName()));
    assertTrue(names.contains(txName));
    // scoped metrics
    assertEquals(1, MetricsHelper.getScopedMetricCount(txName, "ExternalTransaction/" + host + "/" + server.getCrossProcessId() + "/" + server.getServerTransactionName()));
    assertEquals(1, MetricsHelper.getScopedMetricCount(txName, "Java/com.nr.agent.instrumentation.playws.PlayAsyncHttpClientTests/makeAsyncRequest"));
    // unscoped metrics
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("ExternalTransaction/" + host + "/" + server.getCrossProcessId() + "/" + server.getServerTransactionName()));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/" + host + "/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/allOther"));
    // events
    Collection<TransactionEvent> transactionEvents = introspector.getTransactionEvents(txName);
    assertEquals(1, transactionEvents.size());
    TransactionEvent transactionEvent = transactionEvents.iterator().next();
    assertEquals(1, transactionEvent.getExternalCallCount());
    assertTrue(transactionEvent.getExternalDurationInSec() > 0);
    CatHelper.verifyOneSuccessfulCat(introspector, txName);
    // external request information
    Collection<ExternalRequest> externalRequests = introspector.getExternalRequests(txName);
    assertEquals(1, externalRequests.size());
    ExternalRequest externalRequest = externalRequests.iterator().next();
    assertEquals(1, externalRequest.getCount());
    assertEquals(host, externalRequest.getHostname());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) CountDownLatch(java.util.concurrent.CountDownLatch) URI(java.net.URI) ExternalRequest(com.newrelic.agent.introspec.ExternalRequest) TransactionEvent(com.newrelic.agent.introspec.TransactionEvent) StandaloneWSResponse(play.api.libs.ws.StandaloneWSResponse) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Java10IncompatibleTest(com.newrelic.test.marker.Java10IncompatibleTest) Java13IncompatibleTest(com.newrelic.test.marker.Java13IncompatibleTest) Java16IncompatibleTest(com.newrelic.test.marker.Java16IncompatibleTest) Java9IncompatibleTest(com.newrelic.test.marker.Java9IncompatibleTest) Java17IncompatibleTest(com.newrelic.test.marker.Java17IncompatibleTest) Java14IncompatibleTest(com.newrelic.test.marker.Java14IncompatibleTest) Test(org.junit.Test) Java11IncompatibleTest(com.newrelic.test.marker.Java11IncompatibleTest) Java15IncompatibleTest(com.newrelic.test.marker.Java15IncompatibleTest) Java12IncompatibleTest(com.newrelic.test.marker.Java12IncompatibleTest)

Example 48 with ExternalRequest

use of com.newrelic.agent.introspec.ExternalRequest in project newrelic-java-agent by newrelic.

the class PlayAsyncHttpClientTests method testWithFilterHeaders.

@Test
public void testWithFilterHeaders() throws Exception {
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    URI endpoint = server.getEndPoint();
    String host = endpoint.getHost();
    String url = endpoint.toURL().toExternalForm();
    final CountDownLatch latch = new CountDownLatch(1);
    final AtomicInteger result = new AtomicInteger();
    makeAsyncRequestWithFilterHeaders(url + "?no-transaction=true", standaloneWSResponse -> {
        result.set(standaloneWSResponse.status());
        latch.countDown();
    });
    latch.await(30, TimeUnit.SECONDS);
    assertEquals(200, result.get());
    // transaction
    assertEquals(1, introspector.getFinishedTransactionCount(TimeUnit.SECONDS.toMillis(30)));
    String txName = introspector.getTransactionNames().iterator().next();
    // scoped metrics
    assertEquals(1, MetricsHelper.getScopedMetricCount(txName, "External/" + host + "/PlayWS/get"));
    // unscoped metrics
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/" + host + "/PlayWS/get"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/" + host + "/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/allOther"));
    // events
    Collection<TransactionEvent> transactionEvents = introspector.getTransactionEvents(txName);
    assertEquals(1, transactionEvents.size());
    TransactionEvent transactionEvent = transactionEvents.iterator().next();
    assertEquals(1, transactionEvent.getExternalCallCount());
    assertTrue(transactionEvent.getExternalDurationInSec() > 0);
    // traces
    Collection<TransactionTrace> traces = introspector.getTransactionTracesForTransaction(txName);
    assertEquals(1, traces.size());
    TransactionTrace trace = traces.iterator().next();
    for (TraceSegment segment : trace.getInitialTraceSegment().getChildren()) {
        Map<String, Object> attributes = segment.getTracerAttributes();
        if (attributes.get("async_context").equals("segment-api")) {
            assertEquals("", segment.getMethodName());
            assertEquals("PlayWS", segment.getClassName());
            assertEquals("External/" + host + "/PlayWS/get", segment.getName());
            assertEquals(url, segment.getUri());
            assertEquals(1, segment.getCallCount());
        }
    }
    // external request information
    Collection<ExternalRequest> externalRequests = introspector.getExternalRequests(txName);
    assertEquals(1, externalRequests.size());
    ExternalRequest externalRequest = externalRequests.iterator().next();
    assertEquals(1, externalRequest.getCount());
    assertEquals(host, externalRequest.getHostname());
    assertEquals("PlayWS", externalRequest.getLibrary());
    assertEquals("get", externalRequest.getOperation());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) CountDownLatch(java.util.concurrent.CountDownLatch) URI(java.net.URI) TraceSegment(com.newrelic.agent.introspec.TraceSegment) ExternalRequest(com.newrelic.agent.introspec.ExternalRequest) TransactionEvent(com.newrelic.agent.introspec.TransactionEvent) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) TransactionTrace(com.newrelic.agent.introspec.TransactionTrace) Java10IncompatibleTest(com.newrelic.test.marker.Java10IncompatibleTest) Java13IncompatibleTest(com.newrelic.test.marker.Java13IncompatibleTest) Java16IncompatibleTest(com.newrelic.test.marker.Java16IncompatibleTest) Java9IncompatibleTest(com.newrelic.test.marker.Java9IncompatibleTest) Java17IncompatibleTest(com.newrelic.test.marker.Java17IncompatibleTest) Java14IncompatibleTest(com.newrelic.test.marker.Java14IncompatibleTest) Test(org.junit.Test) Java11IncompatibleTest(com.newrelic.test.marker.Java11IncompatibleTest) Java15IncompatibleTest(com.newrelic.test.marker.Java15IncompatibleTest) Java12IncompatibleTest(com.newrelic.test.marker.Java12IncompatibleTest)

Example 49 with ExternalRequest

use of com.newrelic.agent.introspec.ExternalRequest in project newrelic-java-agent by newrelic.

the class PlayAsyncHttpClientTests method testError.

@Test
public void testError() {
    String host = "www.thiswebsitedoesntexistreallyatallipromise.com";
    String url = "http://" + host + "/";
    final CountDownLatch latch = new CountDownLatch(1);
    final AtomicInteger result = new AtomicInteger();
    makeAsyncRequest(url, standaloneWSResponse -> {
        result.set(standaloneWSResponse.status());
        latch.countDown();
    });
    assertEquals(0, result.get());
    // transaction
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    assertEquals(1, introspector.getFinishedTransactionCount(TimeUnit.SECONDS.toMillis(30)));
    String txName = introspector.getTransactionNames().iterator().next();
    // scoped metrics
    assertEquals(1, MetricsHelper.getScopedMetricCount(txName, "External/" + host + "/PlayWS/get"));
    // unscoped metrics
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/" + host + "/PlayWS/get"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/" + host + "/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/allOther"));
    // events
    Collection<TransactionEvent> transactionEvents = introspector.getTransactionEvents(txName);
    assertEquals(1, transactionEvents.size());
    TransactionEvent transactionEvent = transactionEvents.iterator().next();
    assertEquals(1, transactionEvent.getExternalCallCount());
    assertTrue(transactionEvent.getExternalDurationInSec() > 0);
    // traces
    Collection<TransactionTrace> traces = introspector.getTransactionTracesForTransaction(txName);
    assertEquals(1, traces.size());
    TransactionTrace trace = traces.iterator().next();
    for (TraceSegment segment : trace.getInitialTraceSegment().getChildren()) {
        Map<String, Object> attributes = segment.getTracerAttributes();
        if ("segment-api".equals(attributes.get("async_context"))) {
            assertEquals("", segment.getMethodName());
            assertEquals("PlayWS", segment.getClassName());
            assertEquals("External/" + host + "/PlayWS/get", segment.getName());
            assertEquals(url, segment.getUri());
            assertEquals(1, segment.getCallCount());
        }
    }
    // external request information
    Collection<ExternalRequest> externalRequests = introspector.getExternalRequests(txName);
    assertEquals(1, externalRequests.size());
    ExternalRequest externalRequest = externalRequests.iterator().next();
    assertEquals(1, externalRequest.getCount());
    assertEquals(host, externalRequest.getHostname());
    assertEquals("PlayWS", externalRequest.getLibrary());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) CountDownLatch(java.util.concurrent.CountDownLatch) TraceSegment(com.newrelic.agent.introspec.TraceSegment) ExternalRequest(com.newrelic.agent.introspec.ExternalRequest) TransactionEvent(com.newrelic.agent.introspec.TransactionEvent) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) TransactionTrace(com.newrelic.agent.introspec.TransactionTrace) Java10IncompatibleTest(com.newrelic.test.marker.Java10IncompatibleTest) Java13IncompatibleTest(com.newrelic.test.marker.Java13IncompatibleTest) Java16IncompatibleTest(com.newrelic.test.marker.Java16IncompatibleTest) Java9IncompatibleTest(com.newrelic.test.marker.Java9IncompatibleTest) Java17IncompatibleTest(com.newrelic.test.marker.Java17IncompatibleTest) Java14IncompatibleTest(com.newrelic.test.marker.Java14IncompatibleTest) Test(org.junit.Test) Java11IncompatibleTest(com.newrelic.test.marker.Java11IncompatibleTest) Java15IncompatibleTest(com.newrelic.test.marker.Java15IncompatibleTest) Java12IncompatibleTest(com.newrelic.test.marker.Java12IncompatibleTest)

Example 50 with ExternalRequest

use of com.newrelic.agent.introspec.ExternalRequest in project newrelic-java-agent by newrelic.

the class PlayAsyncHttpClientTests method testWithHeaders.

@Test
public void testWithHeaders() throws Exception {
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    URI endpoint = server.getEndPoint();
    String host = endpoint.getHost();
    String url = endpoint.toURL().toExternalForm();
    final CountDownLatch latch = new CountDownLatch(1);
    final AtomicInteger result = new AtomicInteger();
    makeAsyncRequestWithHeaders(url + "?no-transaction=true", standaloneWSResponse -> {
        result.set(standaloneWSResponse.status());
        latch.countDown();
    });
    latch.await(30, TimeUnit.SECONDS);
    assertEquals(200, result.get());
    // transaction
    assertEquals(1, introspector.getFinishedTransactionCount(TimeUnit.SECONDS.toMillis(30)));
    String txName = introspector.getTransactionNames().iterator().next();
    // scoped metrics
    assertEquals(1, MetricsHelper.getScopedMetricCount(txName, "External/" + host + "/PlayWS/get"));
    // unscoped metrics
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/" + host + "/PlayWS/get"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/" + host + "/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/all"));
    assertEquals(1, MetricsHelper.getUnscopedMetricCount("External/allOther"));
    // events
    Collection<TransactionEvent> transactionEvents = introspector.getTransactionEvents(txName);
    assertEquals(1, transactionEvents.size());
    TransactionEvent transactionEvent = transactionEvents.iterator().next();
    assertEquals(1, transactionEvent.getExternalCallCount());
    assertTrue(transactionEvent.getExternalDurationInSec() > 0);
    // traces
    Collection<TransactionTrace> traces = introspector.getTransactionTracesForTransaction(txName);
    assertEquals(1, traces.size());
    TransactionTrace trace = traces.iterator().next();
    for (TraceSegment segment : trace.getInitialTraceSegment().getChildren()) {
        Map<String, Object> attributes = segment.getTracerAttributes();
        if (attributes.get("async_context").equals("segment-api")) {
            assertEquals("", segment.getMethodName());
            assertEquals("PlayWS", segment.getClassName());
            assertEquals("External/" + host + "/PlayWS/get", segment.getName());
            assertEquals(url, segment.getUri());
            assertEquals(1, segment.getCallCount());
        }
    }
    // external request information
    Collection<ExternalRequest> externalRequests = introspector.getExternalRequests(txName);
    assertEquals(1, externalRequests.size());
    ExternalRequest externalRequest = externalRequests.iterator().next();
    assertEquals(1, externalRequest.getCount());
    assertEquals(host, externalRequest.getHostname());
    assertEquals("PlayWS", externalRequest.getLibrary());
    assertEquals("get", externalRequest.getOperation());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) CountDownLatch(java.util.concurrent.CountDownLatch) URI(java.net.URI) TraceSegment(com.newrelic.agent.introspec.TraceSegment) ExternalRequest(com.newrelic.agent.introspec.ExternalRequest) TransactionEvent(com.newrelic.agent.introspec.TransactionEvent) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) TransactionTrace(com.newrelic.agent.introspec.TransactionTrace) Java10IncompatibleTest(com.newrelic.test.marker.Java10IncompatibleTest) Java13IncompatibleTest(com.newrelic.test.marker.Java13IncompatibleTest) Java16IncompatibleTest(com.newrelic.test.marker.Java16IncompatibleTest) Java9IncompatibleTest(com.newrelic.test.marker.Java9IncompatibleTest) Java17IncompatibleTest(com.newrelic.test.marker.Java17IncompatibleTest) Java14IncompatibleTest(com.newrelic.test.marker.Java14IncompatibleTest) Test(org.junit.Test) Java11IncompatibleTest(com.newrelic.test.marker.Java11IncompatibleTest) Java15IncompatibleTest(com.newrelic.test.marker.Java15IncompatibleTest) Java12IncompatibleTest(com.newrelic.test.marker.Java12IncompatibleTest)

Aggregations

ExternalRequest (com.newrelic.agent.introspec.ExternalRequest)55 Test (org.junit.Test)52 Introspector (com.newrelic.agent.introspec.Introspector)51 TransactionEvent (com.newrelic.agent.introspec.TransactionEvent)44 URI (java.net.URI)34 TraceSegment (com.newrelic.agent.introspec.TraceSegment)10 TransactionTrace (com.newrelic.agent.introspec.TransactionTrace)10 TracedMetricData (com.newrelic.agent.introspec.TracedMetricData)7 Java7IncompatibleTest (com.newrelic.test.marker.Java7IncompatibleTest)6 Java10IncompatibleTest (com.newrelic.test.marker.Java10IncompatibleTest)5 Java11IncompatibleTest (com.newrelic.test.marker.Java11IncompatibleTest)5 Java12IncompatibleTest (com.newrelic.test.marker.Java12IncompatibleTest)5 Java13IncompatibleTest (com.newrelic.test.marker.Java13IncompatibleTest)5 Java14IncompatibleTest (com.newrelic.test.marker.Java14IncompatibleTest)5 Java15IncompatibleTest (com.newrelic.test.marker.Java15IncompatibleTest)5 Java16IncompatibleTest (com.newrelic.test.marker.Java16IncompatibleTest)5 Java17IncompatibleTest (com.newrelic.test.marker.Java17IncompatibleTest)5 Java9IncompatibleTest (com.newrelic.test.marker.Java9IncompatibleTest)5 CountDownLatch (java.util.concurrent.CountDownLatch)5 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)5