private List<JsonNode> getStackTrace() throws IOException { final Transaction transaction = tracer.startTransaction(); final Span span = transaction.createSpan(); span.end(); transaction.end(); return StreamSupport.stream(objectMapper .readTree(serializer.toJsonString(span)) .get("stacktrace") .spliterator(), false) .collect(Collectors.toList()); }
@Test void testTimestamps() { final Transaction transaction = tracerImpl.startTransaction(TraceContext.fromTraceparentHeader(), null, ConstantSampler.of(true), 0); final Span span = transaction.createSpan(10); span.end(20); transaction.end(30); assertThat(transaction.getTimestamp()).isEqualTo(0); assertThat(transaction.getDuration()).isEqualTo(0.03); assertThat(span.getTimestamp()).isEqualTo(10); assertThat(span.getDuration()).isEqualTo(0.01); }
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(); } }