@Test void testTraceMethod() { TestClass.traceMe(); assertThat(reporter.getTransactions()).hasSize(1); assertThat(reporter.getFirstTransaction().getName().toString()).isEqualTo("TestClass#traceMe"); assertThat(reporter.getSpans()).hasSize(1); assertThat(reporter.getFirstSpan().getName().toString()).isEqualTo("TestClass#traceMeToo"); }
@Test void testDisableMidTransaction() { Transaction transaction = tracerImpl.startTransaction(); try (Scope scope = transaction.activateInScope()) { assertThat(tracerImpl.currentTransaction()).isSameAs(transaction); Span span = tracerImpl.getActive().createSpan(); try (Scope spanScope = span.activateInScope()) { when(config.getConfig(CoreConfiguration.class).isActive()).thenReturn(false); span.withName("test"); assertThat(span.getName().toString()).isEqualTo("test"); assertThat(tracerImpl.getActive()).isSameAs(span); assertThat(span.isChildOf(transaction)).isTrue(); span.end(); } Span span2 = tracerImpl.getActive().createSpan(); try (Scope spanScope = span2.activateInScope()) { when(config.getConfig(CoreConfiguration.class).isActive()).thenReturn(false); span2.withName("test2"); assertThat(span2.getName().toString()).isEqualTo("test2"); assertThat(tracerImpl.getActive()).isSameAs(span2); assertThat(span2.isChildOf(transaction)).isTrue(); span2.end(); } assertThat(tracerImpl.getActive()).isEqualTo(transaction); transaction.end(); } assertThat(tracerImpl.currentTransaction()).isNull(); assertThat(reporter.getSpans()).hasSize(2); assertThat(reporter.getFirstTransaction()).isSameAs(transaction); }
private void serializeSpan(final Span span) { jw.writeByte(OBJECT_START); writeField("name", span.getName()); writeTimestamp(span.getTimestamp()); serializeTraceContext(span.getTraceContext(), true); writeField("duration", span.getDuration()); if (span.getStacktrace() != null) { serializeStacktrace(span.getStacktrace().getStackTrace()); } if (span.getContext().hasContent()) { serializeSpanContext(span.getContext()); } serializeSpanType(span); jw.writeByte(OBJECT_END); }
@Test void resetState() { Span span = new Span(mock(ElasticApmTracer.class)) .withName("SELECT FROM product_types") .withType("db") .withSubtype("postgresql") .withAction("query"); span.getContext().getDb() .withInstance("customers") .withStatement("SELECT * FROM product_types WHERE user_id=?") .withType("sql") .withUser("readonly_user"); span.resetState(); assertThat(span.getContext().hasContent()).isFalse(); assertThat((CharSequence) span.getName()).isNullOrEmpty(); assertThat(span.getType()).isNull(); assertThat(span.getSubtype()).isNull(); assertThat(span.getAction()).isNull(); } }