@Test void resetState() { final Transaction transaction = new Transaction(mock(ElasticApmTracer.class)); TransactionUtils.fillTransaction(transaction); transaction.resetState(); assertThat(jsonSerializer.toJsonString(transaction)).isEqualTo(jsonSerializer.toJsonString(new Transaction(mock(ElasticApmTracer.class)))); } }
@Test void testBodyBuffer() throws IOException { final Transaction transaction = createTransactionWithRequiredValues(); final CharBuffer bodyBuffer = transaction.getContext().getRequest().withBodyBuffer(); IOUtils.decodeUtf8Bytes("{f".getBytes(StandardCharsets.UTF_8), bodyBuffer); IOUtils.decodeUtf8Bytes(new byte[]{0, 0, 'o', 'o', 0}, 2, 2, bodyBuffer); IOUtils.decodeUtf8Byte((byte) '}', bodyBuffer); bodyBuffer.flip(); final String content = serializer.toJsonString(transaction); System.out.println(content); final JsonNode transactionJson = objectMapper.readTree(content); assertThat(transactionJson.get("context").get("request").get("body").textValue()).isEqualTo("{foo}"); transaction.resetState(); assertThat((Object) transaction.getContext().getRequest().getBodyBuffer()).isNull(); }
@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(); } }