private static boolean isAnyParentLinkSampled(List<Span> parentLinks) { for (Span parentLink : parentLinks) { if (parentLink.getContext().getTraceOptions().isSampled()) { return true; } } return false; }
private static boolean isAnyParentLinkSampled(List<Span> parentLinks) { for (Span parentLink : parentLinks) { if (parentLink.getContext().getTraceOptions().isSampled()) { return true; } } return false; }
@Override public <C /*>>> extends @NonNull Object*/> void inject( SpanContext spanContext, C carrier, Setter<C> setter) { checkNotNull(spanContext, "spanContext"); checkNotNull(setter, "setter"); checkNotNull(carrier, "carrier"); setter.put(carrier, X_B3_TRACE_ID, spanContext.getTraceId().toLowerBase16()); setter.put(carrier, X_B3_SPAN_ID, spanContext.getSpanId().toLowerBase16()); if (spanContext.getTraceOptions().isSampled()) { setter.put(carrier, X_B3_SAMPLED, SAMPLED_VALUE); } }
@Override public void onEnd(RecordEventsSpanImpl span) { if ((span.getOptions().contains(Options.RECORD_EVENTS) && enqueueEventForNonSampledSpans) || span.getContext().getTraceOptions().isSampled()) { eventQueue.enqueue(new SpanEndEvent(span, spanExporter, runningSpanStore, sampledSpanStore)); } }
@Override public void onEnd(RecordEventsSpanImpl span) { if ((span.getOptions().contains(Options.RECORD_EVENTS) && enqueueEventForNonSampledSpans) || span.getContext().getTraceOptions().isSampled()) { eventQueue.enqueue(new SpanEndEvent(span, spanExporter, runningSpanStore, sampledSpanStore)); } }
@Override public <C /*>>> extends @NonNull Object*/> void inject( SpanContext spanContext, C carrier, Setter<C> setter) { checkNotNull(spanContext, "spanContext"); checkNotNull(setter, "setter"); checkNotNull(carrier, "carrier"); setter.put(carrier, X_B3_TRACE_ID, spanContext.getTraceId().toLowerBase16()); setter.put(carrier, X_B3_SPAN_ID, spanContext.getSpanId().toLowerBase16()); if (spanContext.getTraceOptions().isSampled()) { setter.put(carrier, X_B3_SAMPLED, SAMPLED_VALUE); } }
@Override public void process() { if (span.getContext().getTraceOptions().isSampled()) { spanExporter.addSpan(span); } if (runningSpanStore != null) { runningSpanStore.onEnd(span); } if (sampledSpanStore != null) { sampledSpanStore.considerForSampling(span); } } }
@Override public void process() { if (span.getContext().getTraceOptions().isSampled()) { spanExporter.addSpan(span); } if (runningSpanStore != null) { runningSpanStore.onEnd(span); } if (sampledSpanStore != null) { sampledSpanStore.considerForSampling(span); } } }
@Test public void getTraceOptions() { assertThat(first.getTraceOptions()).isEqualTo(TraceOptions.DEFAULT); assertThat(second.getTraceOptions()) .isEqualTo(TraceOptions.builder().setIsSampled(true).build()); }
@Test public void invalidSpanContext() { assertThat(SpanContext.INVALID.getTraceId()).isEqualTo(TraceId.INVALID); assertThat(SpanContext.INVALID.getSpanId()).isEqualTo(SpanId.INVALID); assertThat(SpanContext.INVALID.getTraceOptions()).isEqualTo(TraceOptions.DEFAULT); }
@Test public void fromBinaryValue_MissingTraceOptionsOk() throws SpanContextParseException { SpanContext extracted = binaryFormat.fromByteArray( new byte[] { 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 1, 97, 98, 99, 100, 101, 102, 103, 104 }); assertThat(extracted.isValid()).isTrue(); assertThat(extracted.getTraceOptions()).isEqualTo(TraceOptions.DEFAULT); } }
private static void addTracingData( String tracePrefix, SpanContext span, LogEntry.Builder builder) { builder.setTrace(formatTraceId(tracePrefix, span.getTraceId())); builder.setSpanId(span.getSpanId().toLowerBase16()); builder.setTraceSampled(span.getTraceOptions().isSampled()); }
private static void assertSpanEquals( Span span, org.springframework.cloud.sleuth.Span sleuthSpan) { assertThat(Long.parseLong(span.getContext().getTraceId().toLowerBase16().substring(0, 16), 16)) .isEqualTo(sleuthSpan.getTraceIdHigh()); assertThat(Long.parseLong(span.getContext().getTraceId().toLowerBase16().substring(16, 32), 16)) .isEqualTo(sleuthSpan.getTraceId()); assertThat(Long.parseLong(span.getContext().getSpanId().toLowerBase16(), 16)) .isEqualTo(sleuthSpan.getSpanId()); assertThat(span.getContext().getTraceOptions().isSampled()) .isEqualTo(sleuthSpan.isExportable()); } }
private static final void assertSpanEquals(io.opencensus.trace.Span span, Span sleuthSpan) { assertThat(span.getContext().isValid()).isTrue(); assertThat(Long.parseLong(span.getContext().getTraceId().toLowerBase16().substring(0, 16), 16)) .isEqualTo(sleuthSpan.getTraceIdHigh()); assertThat(Long.parseLong(span.getContext().getTraceId().toLowerBase16().substring(16, 32), 16)) .isEqualTo(sleuthSpan.getTraceId()); assertThat(Long.parseLong(span.getContext().getSpanId().toLowerBase16(), 16)) .isEqualTo(sleuthSpan.getSpanId()); assertThat(span.getContext().getTraceOptions().isSampled()) .isEqualTo(sleuthSpan.isExportable()); } }
@Test public void startRootSpan_WithoutSpecifiedSampler() { // Apply default sampler (always true in the tests) for root spans. Span rootSpan = SpanBuilderImpl.createWithParent(SPAN_NAME, null, spanBuilderOptions).startSpan(); assertThat(rootSpan.getContext().isValid()).isTrue(); assertThat(rootSpan.getContext().getTraceOptions().isSampled()).isTrue(); }
@Test public void startRemoteSpanInvalidParent() { RecordEventsSpanImpl span = (RecordEventsSpanImpl) SpanBuilderImpl.createWithRemoteParent( SPAN_NAME, SpanContext.INVALID, spanBuilderOptions) .startSpan(); assertThat(span.getContext().isValid()).isTrue(); assertThat(span.getOptions().contains(Options.RECORD_EVENTS)).isTrue(); assertThat(span.getContext().getTraceOptions().isSampled()).isTrue(); SpanData spanData = span.toSpanData(); assertThat(spanData.getParentSpanId()).isNull(); assertThat(spanData.getHasRemoteParent()).isNull(); }
@Test public void startSpanNullParentNoRecordOptions() { Span span = SpanBuilderImpl.createWithParent(SPAN_NAME, null, spanBuilderOptions) .setSampler(Samplers.neverSample()) .startSpan(); assertThat(span.getContext().isValid()).isTrue(); assertThat(span.getOptions().contains(Options.RECORD_EVENTS)).isFalse(); assertThat(span.getContext().getTraceOptions().isSampled()).isFalse(); }
@Test public void testFromSleuthSampled() { org.springframework.cloud.sleuth.Span sleuthSpan = createSleuthSpan(21, 22, 23, /* exportable= */ true); OpenCensusSleuthSpanContextHolder.setCurrentSpan(sleuthSpan); assertThat(OpenCensusSleuthSpanContextHolder.isTracing()).isTrue(); assertThat(OpenCensusSleuthSpanContextHolder.getCurrentSpan()).isEqualTo(sleuthSpan); assertSpanEquals(tracer.getCurrentSpan(), sleuthSpan); assertThat(tracer.getCurrentSpan().getContext().getTraceOptions().isSampled()).isTrue(); OpenCensusSleuthSpanContextHolder.close(); }
@Test public void startRootSpan_WithSpecifiedSampler() { // Apply given sampler before default sampler for root spans. Span rootSpan = SpanBuilderImpl.createWithParent(SPAN_NAME, null, spanBuilderOptions) .setSampler(Samplers.neverSample()) .startSpan(); assertThat(rootSpan.getContext().isValid()).isTrue(); assertThat(rootSpan.getContext().getTraceOptions().isSampled()).isFalse(); }
@Test public void testFromSleuthUnsampled() { org.springframework.cloud.sleuth.Span sleuthSpan = createSleuthSpan(21, 22, 23, /* exportable= */ false); OpenCensusSleuthSpanContextHolder.setCurrentSpan(sleuthSpan); assertThat(OpenCensusSleuthSpanContextHolder.isTracing()).isTrue(); assertThat(OpenCensusSleuthSpanContextHolder.getCurrentSpan()).isEqualTo(sleuthSpan); assertSpanEquals(tracer.getCurrentSpan(), sleuthSpan); assertThat(tracer.getCurrentSpan().getContext().getTraceOptions().isSampled()).isFalse(); OpenCensusSleuthSpanContextHolder.close(); }