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());
}
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"));
}
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);
}
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);
}
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);
}
Aggregations