Search in sources :

Example 16 with Token

use of com.newrelic.agent.bridge.Token in project newrelic-java-agent by newrelic.

the class TransactionPropagationTest method testReactorSchedulersInstrumentation.

@Test
public void testReactorSchedulersInstrumentation() throws InterruptedException {
    AtomicBoolean hadTransaction = new AtomicBoolean();
    CountDownLatch done = new CountDownLatch(1);
    inTransaction(() -> {
        Token token = createToken();
        Schedulers.elastic().schedule(() -> {
            // trace_async(() -> { it is not need as Tasks are instrumented and annotated with @Trace(async = ture)
            token.linkAndExpire();
            checkTransaction(hadTransaction);
            done.countDown();
        // });
        });
    });
    done.await();
    assertCapturedData(hadTransaction);
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Token(com.newrelic.agent.bridge.Token) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 17 with Token

use of com.newrelic.agent.bridge.Token in project newrelic-java-agent by newrelic.

the class Util method addPath.

public static void addPath(ServerRequest request, String name) {
    Token token = (Token) request.attributes().get(NR_TOKEN);
    if (token != null && !name.isEmpty()) {
        request.attributes().computeIfAbsent(NR_TXN_NAME, k -> "");
        String existingName = (String) request.attributes().get(NR_TXN_NAME);
        request.attributes().put(NR_TXN_NAME, existingName + name);
    }
}
Also used : Token(com.newrelic.agent.bridge.Token)

Example 18 with Token

use of com.newrelic.agent.bridge.Token in project newrelic-java-agent by newrelic.

the class DispatchHandler_Instrumentation method handle.

@Trace
public Mono<Void> handle(ServerWebExchange exchange) {
    final Token token = exchange == null ? null : exchange.getAttribute(Util.NR_TOKEN);
    Mono<Void> original = Weaver.callOriginal();
    if (token != null) {
        return Util.setTransactionToken(original, token);
    }
    return original;
}
Also used : Token(com.newrelic.agent.bridge.Token) Trace(com.newrelic.api.agent.Trace)

Example 19 with Token

use of com.newrelic.agent.bridge.Token in project newrelic-java-agent by newrelic.

the class DefaultTracerTest method testTokenRefToken.

@Test
public void testTokenRefToken() throws URISyntaxException {
    TransactionActivity.clear();
    Transaction.clearTransaction();
    Transaction tx = Transaction.getTransaction();
    TransactionActivity txa = TransactionActivity.get();
    Tracer root = new OtherRootTracer(tx, new ClassMethodSignature("com.newrelic.agent.TracedActivityTest", "makeTransaction", "()V"), null, DefaultTracer.NULL_METRIC_NAME_FORMATTER);
    txa.tracerStarted(root);
    final Token token = tx.getToken();
    TransactionActivity.clear();
    Transaction.clearTransaction();
    final AgentBridge.TokenAndRefCount tokenAndRefCount = new AgentBridge.TokenAndRefCount(token, root, new AtomicInteger(1));
    AgentBridge.activeToken.set(tokenAndRefCount);
    DefaultTracer tracer = (DefaultTracer) AgentBridge.instrumentation.createTracer(null, 0, "iamyourchild", DefaultTracer.DEFAULT_TRACER_FLAGS);
    Assert.assertNotNull(tracer);
    root.finish(0, null);
}
Also used : Transaction(com.newrelic.agent.Transaction) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) AgentBridge(com.newrelic.agent.bridge.AgentBridge) Token(com.newrelic.agent.bridge.Token) NoOpToken(com.newrelic.agent.bridge.NoOpToken) TransactionActivity(com.newrelic.agent.TransactionActivity) Test(org.junit.Test)

Example 20 with Token

use of com.newrelic.agent.bridge.Token in project newrelic-java-agent by newrelic.

the class DefaultTracerTest method testTokenRefNoOpToken.

@Test
public void testTokenRefNoOpToken() throws URISyntaxException {
    TransactionActivity.clear();
    Transaction.clearTransaction();
    Transaction tx = Transaction.getTransaction();
    TransactionActivity txa = TransactionActivity.get();
    Tracer root = new OtherRootTracer(tx, new ClassMethodSignature("com.newrelic.agent.TracedActivityTest", "makeTransaction", "()V"), null, DefaultTracer.NULL_METRIC_NAME_FORMATTER);
    txa.tracerStarted(root);
    final Token token = NoOpToken.INSTANCE;
    TransactionActivity.clear();
    Transaction.clearTransaction();
    final AgentBridge.TokenAndRefCount tokenAndRefCount = new AgentBridge.TokenAndRefCount(token, root, new AtomicInteger(1));
    AgentBridge.activeToken.set(tokenAndRefCount);
    DefaultTracer tracer = (DefaultTracer) AgentBridge.instrumentation.createTracer(null, 0, "iamyourchild", DefaultTracer.DEFAULT_TRACER_FLAGS);
    assertNull(tracer);
    root.finish(0, null);
}
Also used : Transaction(com.newrelic.agent.Transaction) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) AgentBridge(com.newrelic.agent.bridge.AgentBridge) Token(com.newrelic.agent.bridge.Token) NoOpToken(com.newrelic.agent.bridge.NoOpToken) TransactionActivity(com.newrelic.agent.TransactionActivity) Test(org.junit.Test)

Aggregations

Token (com.newrelic.agent.bridge.Token)20 Test (org.junit.Test)15 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)12 CountDownLatch (java.util.concurrent.CountDownLatch)10 AgentBridge (com.newrelic.agent.bridge.AgentBridge)8 Trace (com.newrelic.api.agent.Trace)7 InstrumentationTestConfig (com.newrelic.agent.introspec.InstrumentationTestConfig)6 InstrumentationTestRunner (com.newrelic.agent.introspec.InstrumentationTestRunner)6 Introspector (com.newrelic.agent.introspec.Introspector)6 TokenLinkingSubscriber (com.nr.instrumentation.reactor.netty.TokenLinkingSubscriber)6 TokenLinkingSubscriber.tokenLift (com.nr.instrumentation.reactor.netty.TokenLinkingSubscriber.tokenLift)6 Duration (java.time.Duration)6 Consumer (java.util.function.Consumer)6 CoreMatchers.is (org.hamcrest.CoreMatchers.is)6 MatcherAssert.assertThat (org.hamcrest.MatcherAssert.assertThat)6 Matchers (org.hamcrest.Matchers)6 Assert.assertTrue (org.junit.Assert.assertTrue)6 BeforeClass (org.junit.BeforeClass)6 RunWith (org.junit.runner.RunWith)6 Flux (reactor.core.publisher.Flux)6