Search in sources :

Example 81 with Tracer

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());
}
Also used : SqlTraceConfig(com.newrelic.agent.config.SqlTraceConfig) Transaction(com.newrelic.agent.Transaction) DefaultTracer(com.newrelic.agent.tracers.DefaultTracer) ClassMethodSignature(com.newrelic.agent.tracers.ClassMethodSignature) DefaultTracer(com.newrelic.agent.tracers.DefaultTracer) Tracer(com.newrelic.agent.tracers.Tracer) OtherRootTracer(com.newrelic.agent.tracers.OtherRootTracer) MockDispatcher(com.newrelic.agent.MockDispatcher) TransactionData(com.newrelic.agent.TransactionData) Test(org.junit.Test)

Example 82 with Tracer

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());
}
Also used : TransactionActivityInitiator(com.newrelic.agent.tracers.TransactionActivityInitiator) DefaultTracer(com.newrelic.agent.tracers.DefaultTracer) Tracer(com.newrelic.agent.tracers.Tracer) TransactionActivity(com.newrelic.agent.TransactionActivity) HashSet(java.util.HashSet)

Example 83 with Tracer

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);
            }
        }
    }
}
Also used : Tracer(com.newrelic.agent.tracers.Tracer)

Example 84 with Tracer

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);
}
Also used : Transaction(com.newrelic.agent.Transaction) Tracer(com.newrelic.agent.tracers.Tracer) Collection(java.util.Collection) Test(org.junit.Test)

Example 85 with Tracer

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);
}
Also used : Transaction(com.newrelic.agent.Transaction) Tracer(com.newrelic.agent.tracers.Tracer) Collection(java.util.Collection) Test(org.junit.Test)

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