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