if (SAMPLED_VALUE.equals(getter.get(carrier, X_B3_SAMPLED)) || FLAGS_VALUE.equals(getter.get(carrier, X_B3_FLAGS))) { traceOptions = TraceOptions.builder().setIsSampled(true).build();
traceId, SpanId.generateRandomId(randomHandler.current()), TraceOptions.builder().setIsSampled(true).build()), spanBuilderOptions) .startSpan();
TraceId.fromLowerBase16(TRACE_ID), SpanId.fromLowerBase16(SPAN_ID), TraceOptions.builder().setIsSampled(true).build()),
TraceId.fromLowerBase16(TRACE_ID), SpanId.fromLowerBase16(SPAN_ID), TraceOptions.builder().setIsSampled(true).build(), Tracestate.builder().build()), SpanId.fromLowerBase16(PARENT_SPAN_ID),
TraceId.fromLowerBase16("fae1c6346b9cf9a272cb6504b5a10dcc"), SpanId.fromLowerBase16("8000000000000000"), TraceOptions.builder().setIsSampled(true).build()));
TraceId.fromLowerBase16("fae1c6346b9cf9a272cb6504b5a10dcc"), SpanId.fromLowerBase16("8000000000000000"), TraceOptions.builder().setIsSampled(false).build()));
TraceId.fromLowerBase16(TRACE_ID), SpanId.fromLowerBase16(SPAN_ID), TraceOptions.builder().setIsSampled(true).build()),
TraceId.fromLowerBase16(TRACE_ID), SpanId.fromLowerBase16(SPAN_ID), TraceOptions.builder().setIsSampled(true).build()),
TraceId.fromLowerBase16(TRACE_ID), SpanId.fromLowerBase16(SPAN_ID), TraceOptions.builder().setIsSampled(true).build(), Tracestate.builder().build()),
TraceId.fromLowerBase16(TRACE_ID), SpanId.fromLowerBase16(SPAN_ID), TraceOptions.builder().setIsSampled(true).build()),
if (SAMPLED_VALUE.equals(getter.get(carrier, X_B3_SAMPLED)) || FLAGS_VALUE.equals(getter.get(carrier, X_B3_FLAGS))) { traceOptions = TraceOptions.builder().setIsSampled(true).build();
TraceId.fromLowerBase16(TRACE_ID), SpanId.fromLowerBase16(SPAN_ID), TraceOptions.builder().setIsSampled(true).build()), SpanId.fromLowerBase16(PARENT_SPAN_ID), true, /* hasRemoteParent */
TraceId.fromLowerBase16(TRACE_ID), SpanId.fromLowerBase16(SPAN_ID), TraceOptions.builder().setIsSampled(true).build()), SpanId.fromLowerBase16(PARENT_SPAN_ID), true, /* hasRemoteParent */
TraceId.fromLowerBase16("e17944156660f55b8cae5ce3f45d4a40"), SpanId.fromLowerBase16("fc3d2ba0d283b66a"), TraceOptions.builder().setIsSampled(true).build(), EMPTY_TRACESTATE); Scope scope = tracer.withSpan(new TestSpan(spanContext));
TraceId.fromLowerBase16(TRACE_ID), SpanId.fromLowerBase16(SPAN_ID), TraceOptions.builder().setIsSampled(true).build()), SpanId.fromLowerBase16(PARENT_SPAN_ID), true, /* hasRemoteParent */
@Test public void overwriteExistingTracingKey() { String log = logWithSpanAndLog4jConfiguration( TEST_PATTERN, SpanContext.create( TraceId.fromLowerBase16("18e4ae44273a0c44e0c9ea4380792c66"), SpanId.fromLowerBase16("199a7e16daa000a7"), TraceOptions.builder().setIsSampled(true).build(), EMPTY_TRACESTATE), new Function<Logger, Void>() { @Override public Void apply(Logger logger) { ThreadContext.put( OpenCensusTraceContextDataInjector.TRACE_ID_CONTEXT_KEY, "existingTraceId"); try { logger.error("message #5"); } finally { ThreadContext.remove(OpenCensusTraceContextDataInjector.TRACE_ID_CONTEXT_KEY); } return null; } }); assertThat(log) .isEqualTo( "traceId=18e4ae44273a0c44e0c9ea4380792c66 spanId=199a7e16daa000a7 " + "sampled=true ERROR - message #5"); } }
@Test public void preserveOtherKeyValuePairs() { String log = logWithSpanAndLog4jConfiguration( "%X{traceId} %X{myTestKey} %-5level - %msg", SpanContext.create( TraceId.fromLowerBase16("c95329bb6b7de41afbc51a231c128f97"), SpanId.fromLowerBase16("bf22ea74d38eddad"), TraceOptions.builder().setIsSampled(true).build(), EMPTY_TRACESTATE), new Function<Logger, Void>() { @Override public Void apply(Logger logger) { String key = "myTestKey"; ThreadContext.put(key, "myTestValue"); try { logger.error("message #4"); } finally { ThreadContext.remove(key); } return null; } }); assertThat(log).isEqualTo("c95329bb6b7de41afbc51a231c128f97 myTestValue ERROR - message #4"); }
/** * Converts AppEngine {@code CloudTraceContext} to {@code SpanContext}. * * @param cloudTraceContext the AppEngine {@code CloudTraceContext}. * @return the converted {@code SpanContext}. * @since 0.14 */ public static SpanContext fromCloudTraceContext(CloudTraceContext cloudTraceContext) { checkNotNull(cloudTraceContext, "cloudTraceContext"); try { // Extract the trace ID from the binary protobuf CloudTraceContext#traceId. TraceIdProto traceIdProto = TraceIdProto.parseFrom(cloudTraceContext.getTraceId()); ByteBuffer traceIdBuf = ByteBuffer.allocate(TraceId.SIZE); traceIdBuf.putLong(traceIdProto.getHi()); traceIdBuf.putLong(traceIdProto.getLo()); ByteBuffer spanIdBuf = ByteBuffer.allocate(SpanId.SIZE); spanIdBuf.putLong(cloudTraceContext.getSpanId()); return SpanContext.create( TraceId.fromBytes(traceIdBuf.array()), SpanId.fromBytes(spanIdBuf.array()), TraceOptions.builder().setIsSampled(cloudTraceContext.isTraceEnabled()).build(), TRACESTATE_DEFAULT); } catch (com.google.protobuf.InvalidProtocolBufferException e) { throw new RuntimeException(e); } }
@Test public void spanContext_EqualsAndHashCode() { EqualsTester tester = new EqualsTester(); tester.addEqualityGroup( first, SpanContext.create( TraceId.fromBytes(firstTraceIdBytes), SpanId.fromBytes(firstSpanIdBytes), TraceOptions.DEFAULT), SpanContext.create( TraceId.fromBytes(firstTraceIdBytes), SpanId.fromBytes(firstSpanIdBytes), TraceOptions.builder().setIsSampled(false).build(), firstTracestate)); tester.addEqualityGroup( second, SpanContext.create( TraceId.fromBytes(secondTraceIdBytes), SpanId.fromBytes(secondSpanIdBytes), TraceOptions.builder().setIsSampled(true).build(), secondTracestate)); tester.testEquals(); }
@Test public void addNonSampledSpanToLogEntryWithAllSpans() { String log = logWithSpanAndLog4jConfiguration( TEST_PATTERN, SpanContext.create( TraceId.fromLowerBase16("cd7061dfa9d312cdcc42edab3feab51b"), SpanId.fromLowerBase16("117d42d4c7acd066"), TraceOptions.builder().setIsSampled(false).build(), EMPTY_TRACESTATE), new Function<Logger, Void>() { @Override public Void apply(Logger logger) { logger.info("message #2"); return null; } }); assertThat(log) .isEqualTo( "traceId=cd7061dfa9d312cdcc42edab3feab51b spanId=117d42d4c7acd066 sampled=false INFO " + "- message #2"); }