Search in sources :

Example 36 with Tracer

use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.

the class TransactionTest method testTransportDuration.

@Test
public void testTransportDuration() throws Exception {
    Map<String, Object> configMap = createNRDTConfigMap(false);
    createServiceManager(configMap);
    serviceManager.setDistributedTraceService(mockDistributedTraceService);
    final long sentTimestamp = System.currentTimeMillis();
    String inboundPayload = "{" + "  \"v\": [0,2]," + "  \"d\": {" + "    \"ty\": \"Mobile\"," + "    \"ac\": \"9123\"," + "    \"tk\": \"67890\"," + "    \"ap\": \"51424\"" + "    \"id\": \"27856f70d3d314b7\"," + "    \"tr\": \"3221bf09aa0bcf0d\"," + "    \"pr\": 0.33333," + "    \"ti\": " + sentTimestamp + "  }" + "}";
    // Simulate some transport time
    sleep(100);
    Transaction.clearTransaction();
    Tracer dispatcherTracer = createDispatcherTracer(true);
    final long txnStartTime = System.currentTimeMillis();
    Transaction transaction = dispatcherTracer.getTransactionActivity().getTransaction();
    transaction.getTransactionActivity().tracerStarted(dispatcherTracer);
    transaction.acceptDistributedTracePayload(inboundPayload);
    dispatcherTracer.finish(Opcodes.ARETURN, null);
    assertTrue(isTransportDurationMillisWithinAcceptableDelta(transaction.getTransportDurationInMillis(), txnStartTime, sentTimestamp, 5));
    assertTrue(transaction.getTransportDurationInMillis() > 0);
    // No transport duration should be equal to 0
    Transaction.clearTransaction();
    dispatcherTracer = createDispatcherTracer(true);
    transaction = dispatcherTracer.getTransactionActivity().getTransaction();
    transaction.getTransactionActivity().tracerStarted(dispatcherTracer);
    assertEquals(0, transaction.getTransportDurationInMillis());
    // No negative transport duration
    long futureTimestamp = System.currentTimeMillis() + 1000000;
    inboundPayload = "{" + "  \"v\": [0,2]," + "  \"d\": {" + "    \"ty\": \"APP\"," + "    \"ac\": \"9123\"," + "    \"tk\": \"67890\"," + "    \"ap\": \"51424\"" + "    \"id\": \"27856f70d3d314b7\"," + "    \"tr\": \"3221bf09aa0bcf0d\"," + "    \"pr\": 0.33333," + "    \"ti\": " + futureTimestamp + "  }" + "}";
    transaction.acceptDistributedTracePayload(inboundPayload);
    assertEquals(0, transaction.getTransportDurationInMillis());
}
Also used : BasicRequestRootTracer(com.newrelic.agent.tracers.servlet.BasicRequestRootTracer) DefaultTracer(com.newrelic.agent.tracers.DefaultTracer) Tracer(com.newrelic.agent.tracers.Tracer) OtherRootTracer(com.newrelic.agent.tracers.OtherRootTracer) Test(org.junit.Test) SegmentTest(com.newrelic.agent.transaction.SegmentTest)

Example 37 with Tracer

use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.

the class TransactionTest method testThreadName.

@Test
public void testThreadName() throws Exception {
    createServiceManager(createConfigMap());
    Transaction.clearTransaction();
    Tracer dispatcherTracer = createDispatcherTracer(true);
    Transaction transaction = dispatcherTracer.getTransactionActivity().getTransaction();
    TransactionActivity transactionActivity = dispatcherTracer.getTransactionActivity();
    transactionActivity.tracerStarted(dispatcherTracer);
    transactionActivity.tracerFinished(dispatcherTracer, Opcodes.ARETURN);
    assertTrue(transaction.isFinished());
    Map<String, Object> agentAttributes = transaction.getAgentAttributes();
    assertEquals(Thread.currentThread().getName(), agentAttributes.get("jvm.thread_name"));
}
Also used : BasicRequestRootTracer(com.newrelic.agent.tracers.servlet.BasicRequestRootTracer) DefaultTracer(com.newrelic.agent.tracers.DefaultTracer) Tracer(com.newrelic.agent.tracers.Tracer) OtherRootTracer(com.newrelic.agent.tracers.OtherRootTracer) Test(org.junit.Test) SegmentTest(com.newrelic.agent.transaction.SegmentTest)

Example 38 with Tracer

use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.

the class TransactionTest method testWithNullPriorityDoesNotResetPriority.

@Test
public void testWithNullPriorityDoesNotResetPriority() throws Exception {
    Map<String, Object> configMap = createConfigMap();
    configMap.put(AgentConfigImpl.DISTRIBUTED_TRACING, ImmutableMap.of("enabled", Boolean.TRUE));
    createServiceManager(configMap);
    serviceManager.setDistributedTraceService(new DistributedTraceService() {

        @Override
        public boolean isEnabled() {
            return true;
        }

        @Override
        public int getMajorSupportedCatVersion() {
            return 1;
        }

        @Override
        public int getMinorSupportedCatVersion() {
            return 0;
        }

        @Override
        public String getAccountId() {
            return "9123";
        }

        @Override
        public String getApplicationId() {
            return "1234";
        }

        @Override
        public <T extends PriorityAware> float calculatePriority(Float priority, SamplingPriorityQueue<T> reservoir) {
            return 0.678f;
        }

        @Override
        public Map<String, Object> getIntrinsics(DistributedTracePayloadImpl inboundPayload, String guid, String traceId, TransportType transportType, long parentTransportDuration, long largestTransportDuration, String parentId, String parentSpanId, float priority) {
            return null;
        }

        @Override
        public String getTrustKey() {
            return "67890";
        }

        @Override
        public DistributedTracePayload createDistributedTracePayload(Tracer tracer) {
            return null;
        }
    });
    Transaction.clearTransaction();
    Tracer dispatcherTracer = createDispatcherTracer(true);
    Transaction transaction = dispatcherTracer.getTransactionActivity().getTransaction();
    transaction.getTransactionActivity().tracerStarted(dispatcherTracer);
    String inboundPayload = "{" + "  \"v\": [0,2]," + "  \"d\": {" + "    \"ty\": \"Mobile\"," + "    \"ac\": \"9123\"," + "    \"tk\": \"67890\"," + "    \"ap\": \"51424\"" + "    \"id\": \"27856f70d3d314b7\"," + "    \"tr\": \"3221bf09aa0bcf0d\"," + "    \"pr\": null," + "    \"ti\": 1482959525577" + "  }" + "}";
    transaction.acceptDistributedTracePayload(inboundPayload);
    String spanId = "meatball101";
    DistributedTracePayloadImpl payload = transaction.createDistributedTracePayload(spanId);
    DistributedTracePayloadImpl secondPayload = transaction.createDistributedTracePayload(spanId);
    dispatcherTracer.finish(Opcodes.ARETURN, null);
    // Verify that when the inbound priority is null, that we retain our priority.
    assertEquals("Mobile", transaction.getSpanProxy().getInboundDistributedTracePayload().parentType);
    assertEquals(0.678f, payload.priority, 0.0f);
    // Verify that the payload that gets passed on will preserve the priority we created.
    assertEquals("App", secondPayload.parentType);
    assertEquals("3221bf09aa0bcf0d", secondPayload.traceId);
    assertEquals(spanId, secondPayload.guid);
    assertEquals(0.678f, secondPayload.priority, 0.0f);
}
Also used : DistributedTraceService(com.newrelic.agent.tracing.DistributedTraceService) BasicRequestRootTracer(com.newrelic.agent.tracers.servlet.BasicRequestRootTracer) DefaultTracer(com.newrelic.agent.tracers.DefaultTracer) Tracer(com.newrelic.agent.tracers.Tracer) OtherRootTracer(com.newrelic.agent.tracers.OtherRootTracer) DistributedTracePayloadImpl(com.newrelic.agent.tracing.DistributedTracePayloadImpl) TransportType(com.newrelic.api.agent.TransportType) ImmutableMap(com.google.common.collect.ImmutableMap) Test(org.junit.Test) SegmentTest(com.newrelic.agent.transaction.SegmentTest)

Example 39 with Tracer

use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.

the class TransactionTest method testAcceptCreatePayload.

@Test
public void testAcceptCreatePayload() throws Exception {
    Map<String, Object> configMap = createNRDTConfigMap(false);
    createServiceManager(configMap);
    serviceManager.setDistributedTraceService(mockDistributedTraceService);
    Transaction.clearTransaction();
    Tracer dispatcherTracer = createDispatcherTracer(true);
    Transaction transaction = dispatcherTracer.getTransactionActivity().getTransaction();
    transaction.getTransactionActivity().tracerStarted(dispatcherTracer);
    String inboundPayload = "{" + "  \"v\": [0,2]," + "  \"d\": {" + "    \"ty\": \"Mobile\"," + "    \"ac\": \"9123\"," + "    \"tk\": \"67890\"," + "    \"ap\": \"51424\"" + "    \"id\": \"27856f70d3d314b7\"," + "    \"tr\": \"3221bf09aa0bcf0d\"," + "    \"pr\": 0.999993," + "    \"ti\": 1482959525577" + "  }" + "}";
    transaction.acceptDistributedTracePayload(inboundPayload);
    String spanId = "meatball99";
    DistributedTracePayloadImpl payload = transaction.createDistributedTracePayload(spanId);
    DistributedTracePayloadImpl secondPayload = transaction.createDistributedTracePayload(spanId);
    dispatcherTracer.finish(Opcodes.ARETURN, null);
    assertEquals("App", payload.parentType);
    assertEquals(spanId, payload.guid);
    assertEquals("3221bf09aa0bcf0d", payload.traceId);
    assertNotNull(transaction.getSpanProxy().getInboundDistributedTracePayload());
    assertEquals("Mobile", transaction.getSpanProxy().getInboundDistributedTracePayload().parentType);
    assertEquals(0.999993f, payload.priority, 0.0f);
    assertEquals("App", secondPayload.parentType);
    assertEquals("3221bf09aa0bcf0d", secondPayload.traceId);
    assertEquals(spanId, secondPayload.guid);
    assertEquals(0.999993f, secondPayload.priority, 0.0f);
}
Also used : BasicRequestRootTracer(com.newrelic.agent.tracers.servlet.BasicRequestRootTracer) DefaultTracer(com.newrelic.agent.tracers.DefaultTracer) Tracer(com.newrelic.agent.tracers.Tracer) OtherRootTracer(com.newrelic.agent.tracers.OtherRootTracer) DistributedTracePayloadImpl(com.newrelic.agent.tracing.DistributedTracePayloadImpl) Test(org.junit.Test) SegmentTest(com.newrelic.agent.transaction.SegmentTest)

Example 40 with Tracer

use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.

the class TransactionTest method noticeThenSetAsTracerPicksUpOriginalSpanNotCurrent.

@Test
public void noticeThenSetAsTracerPicksUpOriginalSpanNotCurrent() throws Exception {
    createServiceManager(Collections.<String, Object>emptyMap());
    Transaction.clearTransaction();
    Tracer dispatcherTracer = createDispatcherTracer(true);
    Transaction tx = dispatcherTracer.getTransactionActivity().getTransaction();
    tx.getTransactionActivity().tracerStarted(dispatcherTracer);
    Throwable exc = new Throwable();
    tx.noticeTracerException(exc, "span id 1");
    tx.noticeTracerException(exc, "span id 2");
    tx.setThrowable(exc, TransactionErrorPriority.TRACER, false);
    assertEquals("span id 1", tx.getThrowable().spanId);
}
Also used : BasicRequestRootTracer(com.newrelic.agent.tracers.servlet.BasicRequestRootTracer) DefaultTracer(com.newrelic.agent.tracers.DefaultTracer) Tracer(com.newrelic.agent.tracers.Tracer) OtherRootTracer(com.newrelic.agent.tracers.OtherRootTracer) Test(org.junit.Test) SegmentTest(com.newrelic.agent.transaction.SegmentTest)

Aggregations

Tracer (com.newrelic.agent.tracers.Tracer)263 Test (org.junit.Test)195 OtherRootTracer (com.newrelic.agent.tracers.OtherRootTracer)104 DefaultTracer (com.newrelic.agent.tracers.DefaultTracer)99 Transaction (com.newrelic.agent.Transaction)86 BasicRequestRootTracer (com.newrelic.agent.tracers.servlet.BasicRequestRootTracer)54 ClassMethodSignature (com.newrelic.agent.tracers.ClassMethodSignature)41 ExitTracer (com.newrelic.agent.bridge.ExitTracer)39 TokenImpl (com.newrelic.agent.TokenImpl)35 StartAndThenLink (com.newrelic.agent.TransactionAsyncUtility.StartAndThenLink)31 OtherRootSqlTracer (com.newrelic.agent.tracers.OtherRootSqlTracer)25 TransactionData (com.newrelic.agent.TransactionData)24 HashMap (java.util.HashMap)24 SqlTracer (com.newrelic.agent.tracers.SqlTracer)20 ArrayList (java.util.ArrayList)19 UltraLightTracer (com.newrelic.agent.tracers.UltraLightTracer)17 TransactionStats (com.newrelic.agent.stats.TransactionStats)16 MockRPMService (com.newrelic.agent.MockRPMService)15 JSONArray (org.json.simple.JSONArray)15 JSONObject (org.json.simple.JSONObject)14