public Transaction startTransaction() { return startTransaction(TraceContext.asRoot(), null); }
@Test void testStartSpanAfterTransactionHasEnded() { final Transaction transaction = tracerImpl.startTransaction(TraceContext.asRoot(), null); final TraceContext transactionTraceContext = transaction.getTraceContext().copy(); transaction.end(); transaction.resetState(); tracerImpl.activate(transactionTraceContext); try { assertThat(tracerImpl.getActive()).isEqualTo(transactionTraceContext); final Span span = tracerImpl.startSpan(TraceContext.fromActive(), tracerImpl); assertThat(span).isNotNull(); try (Scope scope = span.activateInScope()) { assertThat(tracerImpl.currentTransaction()).isNull(); assertThat(tracerImpl.getActive()).isSameAs(span); } finally { span.end(); } } finally { tracerImpl.deactivate(transactionTraceContext); } assertThat(tracerImpl.getActive()).isNull(); } }
private Transaction createTransactionWithRequiredValues() { Transaction t = new Transaction(mock(ElasticApmTracer.class)); t.start(TraceContext.asRoot(), null, (long) 0, ConstantSampler.of(true)); t.withType("type"); t.getContext().getRequest().withMethod("GET"); t.getContext().getRequest().getUrl().appendToFull("http://localhost:8080/foo/bar"); return t; }
private void innerRecordExceptionWithTrace(boolean sampled) { reporter.reset(); Transaction transaction = tracerImpl.startTransaction(TraceContext.asRoot(), null, ConstantSampler.of(sampled), -1); transaction.withType("test-type"); try (Scope scope = transaction.activateInScope()) { transaction.getContext().getRequest() .addHeader("foo", "bar") .withMethod("GET") .getUrl() .withPathname("/foo"); tracerImpl.currentTransaction().captureException(new Exception("from transaction")); ErrorCapture error = validateError(transaction, sampled, transaction); assertThat(error.getContext().getRequest().getHeaders().get("foo")).isEqualTo("bar"); reporter.reset(); Span span = transaction.createSpan().activate(); span.captureException(new Exception("from span")); validateError(span, sampled, transaction); span.deactivate().end(); transaction.end(); } }
public static void fillTransaction(Transaction t) { t.start(TraceContext.asRoot(), null, (long) 0, ConstantSampler.of(true)); t.setName("GET /api/types"); t.withType("request");