use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.
the class SlowQueryInfoTest method testTxnUrl.
@Test
public void testTxnUrl() {
setupServiceManager(new HashMap<String, Object>());
Transaction transaction = Transaction.getTransaction();
SqlTraceConfig sqlTraceConfig = ServiceFactory.getConfigService().getDefaultAgentConfig().getSqlTraceConfig();
MockDispatcher dispatcher = new MockDispatcher();
dispatcher.setUri("http://jvm.agent.uri");
transaction.setDispatcher(dispatcher);
TransactionData data = new TransactionData(transaction, 100);
Tracer tracer = new DefaultTracer(transaction, new ClassMethodSignature("ClassName", "methodName", "methodDesc"), null, null, TracerFlags.DISPATCHER);
SlowQueryInfo slowQueryInfo = new SlowQueryInfo(data, tracer, "select * from person", "select ? from ?", sqlTraceConfig);
SqlTrace sqlTrace = slowQueryInfo.asSqlTrace();
assertEquals("http://jvm.agent.uri", sqlTrace.getUri());
}
use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.
the class AsyncTest method verifyCpu.
public void verifyCpu(long minCpu) {
Assert.assertNotNull(data);
Assert.assertNotNull(data.getIntrinsicAttributes().get(AttributeNames.CPU_TIME_PARAMETER_NAME));
Long val = (Long) data.getIntrinsicAttributes().get(AttributeNames.CPU_TIME_PARAMETER_NAME);
Assert.assertTrue("The cpu should be greater than 0", val > 0);
Assert.assertTrue("The cpu should be greater than the expeted min value " + minCpu, val > minCpu);
long cpuTime = 0L;
Collection<Tracer> tracers = new HashSet<>();
tracers.add(data.getRootTracer());
tracers.addAll(data.getTracers());
Collection<TransactionActivity> txas = new HashSet<>();
// collect all txas for the transaction
for (Tracer current : tracers) {
if (current instanceof TransactionActivityInitiator) {
txas.add(((DefaultTracer) current).getTransactionActivity());
}
}
for (TransactionActivity txa : txas) {
cpuTime += txa.getTotalCpuTime();
}
Assert.assertEquals("The cpu should be sum of txa cpus ", cpuTime, val.longValue());
}
use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.
the class ExcludeRootAsyncTracers method logChildren.
private void logChildren(Map<Tracer, Collection<Tracer>> children, Tracer root, int offset) {
String tabs = "";
for (int i = 0; i < offset; ++i) {
tabs += "\t";
}
if (null == root) {
Agent.LOG.log(Level.FINE, "{0} tracers go out:", children.size());
for (Tracer tracer : children.keySet()) {
Agent.LOG.log(Level.FINE, tabs + "{0}-{1}", tracer, tracer.getMetricName());
System.out.println(tabs + tracer + "-" + tracer.getMetricName());
logChildren(children, tracer, ++offset);
}
} else {
if (null != children.get(root) && children.get(root).size() > 0) {
for (Tracer tracer : children.get(root)) {
Agent.LOG.log(Level.FINE, tabs + "{0}-{1}", tracer, tracer.getMetricName());
System.out.println(tabs + tracer + "-" + tracer.getMetricName());
logChildren(children, tracer, ++offset);
}
}
}
}
use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.
the class ExcludeRootAsyncTracers method testRegisterStartSameThread.
/**
* Make sure @Trace(async = true, excludeFromTransactionTrace = true) works as expected with the old async API.
*
* The tracer should only be excluded if it is not a root tracer. Additionally, regular tracers created under the
* excluded tracer should still appear in the TT.
*/
@Test
public void testRegisterStartSameThread() throws Exception {
Transaction tx = new SingleThreadWorker().run();
List<Tracer> tracers = tx.getTracers();
Assert.assertEquals(2, tracers.size());
// assert: transactionWork -> moreWork() -> regularWork();
Map<Tracer, Collection<Tracer>> children = TransactionTrace.buildChildren(tracers);
Collection<Tracer> ttChildrenMap = children.get(tx.getRootTracer());
Assert.assertNotNull(ttChildrenMap);
// the root moreWork()
Assert.assertEquals(1, ttChildrenMap.size());
Tracer trace = ttChildrenMap.iterator().next();
Assert.assertEquals("Java/com.newrelic.agent.async.ExcludeRootAsyncTracers$SingleThreadWorker/moreWork", trace.getMetricName());
ttChildrenMap = children.get(trace);
Assert.assertNotNull(ttChildrenMap);
// regularWork() segment
Assert.assertEquals(1, ttChildrenMap.size());
trace = ttChildrenMap.iterator().next();
Assert.assertEquals("Custom/com.newrelic.agent.async.ExcludeRootAsyncTracers$SingleThreadWorker/regularWork", trace.getMetricName());
// no more tracers
ttChildrenMap = children.get(trace);
Assert.assertNull(ttChildrenMap);
}
use of com.newrelic.agent.tracers.Tracer in project newrelic-java-agent by newrelic.
the class ExcludeRootAsyncTracersWithTokens method testRegisterStartSameThread.
/**
* Make sure @Trace(async = true, excludeFromTransactionTrace = true) works as expected with the Token API.
*
* The tracer should only be excluded if it is not a root tracer. Additionally, regular tracers created under the
* excluded tracer should still appear in the TT.
*/
@Test
public void testRegisterStartSameThread() {
Transaction tx = new SingleThreadWorker().run();
List<Tracer> tracers = tx.getTracers();
Assert.assertEquals(2, tracers.size());
// assert: transactionWork -> moreWork() -> [innerWork, regularWork()];
Map<Tracer, Collection<Tracer>> children = TransactionTrace.buildChildren(tracers);
Collection<Tracer> ttChildrenMap = children.get(tx.getRootTracer());
Assert.assertNotNull(ttChildrenMap);
// the root moreWork()
Assert.assertEquals(2, ttChildrenMap.size());
Iterator<Tracer> iter = ttChildrenMap.iterator();
Assert.assertNotNull(iter);
Tracer trace1 = iter.next();
Assert.assertEquals("Custom/com.newrelic.agent.async.ExcludeRootAsyncTracersWithTokens$SingleThreadWorker/regularWork", trace1.getMetricName());
ttChildrenMap = children.get(trace1);
Assert.assertNull(ttChildrenMap);
Tracer trace2 = iter.next();
Assert.assertEquals("Java/com.newrelic.agent.async.ExcludeRootAsyncTracersWithTokens$SingleThreadWorker/innerWork", trace2.getMetricName());
ttChildrenMap = children.get(trace2);
Assert.assertNull(ttChildrenMap);
}
Aggregations