ContextInScopeRunnableWrapper(ElasticApmTracer tracer) { this.tracer = tracer; context = TraceContext.with64BitId(tracer); }
ContextInScopeCallableWrapper(ElasticApmTracer tracer) { this.tracer = tracer; context = TraceContext.with64BitId(tracer); }
public AbstractSpan(ElasticApmTracer tracer) { super(tracer); traceContext = TraceContext.with64BitId(this.tracer); }
public TraceContext copy() { final TraceContext copy; final int idLength = id.getLength(); if (idLength == 8) { copy = TraceContext.with64BitId(tracer); } else if (idLength == 16) { copy = TraceContext.with128BitId(tracer); } else { throw new IllegalStateException("Id has invalid length: " + idLength); } copy.copyFrom(this); return copy; }
private void assertValid(String s) { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); assertThat(traceContext.asChildOf(s)).isTrue(); } }
private void assertInvalid(String s) { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); assertThat(traceContext.asChildOf(s)).isFalse(); }
@Test void parseFromTraceParentHeader_notSampled() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); final String header = "00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-00"; assertThat(traceContext.asChildOf(header)).isTrue(); assertThat(traceContext.isSampled()).isFalse(); assertThat(traceContext.getIncomingTraceParentHeader()).isEqualTo(header); }
@Test void parseFromTraceParentHeaderUnsupportedFlag() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); final String header = "00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-03"; assertThat(traceContext.asChildOf(header)).isTrue(); assertThat(traceContext.isSampled()).isTrue(); assertThat(traceContext.getOutgoingTraceParentHeader().toString()).endsWith("-03"); }
@Test void parseFromTraceParentHeaderNotRecorded() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); final String header = "00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-00"; assertThat(traceContext.asChildOf(header)).isTrue(); assertThat(traceContext.isSampled()).isFalse(); assertThat(traceContext.getOutgoingTraceParentHeader().toString()).endsWith("-00"); }
@Test void parseFromTraceParentHeaderRecorded() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); final String header = "00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01"; assertThat(traceContext.asChildOf(header)).isTrue(); assertThat(traceContext.isSampled()).isTrue(); assertThat(traceContext.getOutgoingTraceParentHeader().toString()).endsWith("-01"); }
@Test void outgoingHeader() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); final String header = "00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-03"; assertThat(traceContext.asChildOf(header)).isTrue(); assertThat(traceContext.getOutgoingTraceParentHeader().toString()) .isEqualTo("00-0af7651916cd43dd8448eb211c80319c-" + traceContext.getId().toString() + "-03"); }
@Test void testResetState() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); traceContext.asChildOf("00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-00"); traceContext.resetState(); assertThat(traceContext.getIncomingTraceParentHeader()).isEqualTo("00-00000000000000000000000000000000-0000000000000000-00"); }
@Test void testSetSampled() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); traceContext.asRootSpan(ConstantSampler.of(false)); assertThat(traceContext.isSampled()).isFalse(); traceContext.setRecorded(true); assertThat(traceContext.isSampled()).isTrue(); traceContext.setRecorded(false); assertThat(traceContext.isSampled()).isFalse(); }
@Test void outgoingHeaderRootSpan() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); traceContext.asRootSpan(ConstantSampler.of(true)); assertThat(traceContext.isSampled()).isTrue(); assertThat(traceContext.getOutgoingTraceParentHeader().toString()).hasSize(55); assertThat(traceContext.getOutgoingTraceParentHeader().toString()).startsWith("00-"); assertThat(traceContext.getOutgoingTraceParentHeader().toString()).endsWith("-01"); }
@Test void testRandomValue() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); traceContext.asRootSpan(ConstantSampler.of(true)); assertThat(traceContext.getTraceId().isEmpty()).isFalse(); assertThat(traceContext.getParentId().isEmpty()).isTrue(); assertThat(traceContext.getId().isEmpty()).isFalse(); }
@Test void testPropagateTransactionIdForUnsampledSpan() { final TraceContext rootContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); rootContext.asRootSpan(ConstantSampler.of(false)); final TraceContext childContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); childContext.asChildOf(rootContext); assertThat(childContext.getOutgoingTraceParentHeader().toString()).doesNotContain(childContext.getId().toString()); assertThat(childContext.getOutgoingTraceParentHeader().toString()).contains(rootContext.getId().toString()); }
@Test void testW3CData() { assertSoftly(softly -> { for (JsonNode testCase : testData) { PotentiallyMultiValuedMap headersMap = getHeaders(testCase.get("headers")); if (headersMap.getAll("traceparent").size() == 1) { final String traceParentHeader = headersMap.getFirst("traceparent"); final boolean traceparentValid = testCase.get("is_traceparent_valid").booleanValue(); final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); softly.assertThat(traceContext.asChildOf(traceParentHeader)) .withFailMessage("Expected '%s' to be %s", traceParentHeader, traceparentValid ? "valid" : "invalid") .isEqualTo(traceparentValid); } } }); }