@Override public String toString() { return "SpanId{spanId=" + toLowerBase16() + "}"; }
private static SpanId longToSpanId(long x) { ByteBuffer buffer = ByteBuffer.allocate(SpanId.SIZE); buffer.putLong(x); return SpanId.fromBytes(buffer.array()); }
/** * Returns a {@code SpanId} built from a lowercase base16 representation. * * @param src the lowercase base16 representation. * @return a {@code SpanId} built from a lowercase base16 representation. * @throws NullPointerException if {@code src} is null. * @throws IllegalArgumentException if {@code src.length} is not {@code 2 * SpanId.SIZE} OR if the * {@code str} has invalid characters. * @since 0.11 */ public static SpanId fromLowerBase16(CharSequence src) { Utils.checkNotNull(src, "src"); // TODO: Remove this extra condition. Utils.checkArgument( src.length() == BASE16_SIZE, "Invalid size: expected %s, got %s", BASE16_SIZE, src.length()); return fromLowerBase16(src, 0); }
Span.newBuilder() .traceId(context.getTraceId().toLowerBase16()) .id(context.getSpanId().toLowerBase16()) .kind(toSpanKind(spanData)) .name(spanData.getName()) .localEndpoint(localEndpoint); if (spanData.getParentSpanId() != null && spanData.getParentSpanId().isValid()) { spanBuilder.parentId(spanData.getParentSpanId().toLowerBase16());
private static long convertSpanId(final SpanId spanId) { final byte[] bytes = spanId.getBytes(); long result = 0; for (int i = 0; i < Long.SIZE / Byte.SIZE; i++) { result <<= Byte.SIZE; result |= (bytes[i] & 0xff); } if (result < 0) { return -result; } return result; }
Span.newBuilder() .setTraceId(toByteString(traceId.getBytes())) .setSpanId(toByteString(spanId.getBytes())) .setTracestate(toTracestateProto(spanContext.getTracestate())) .setName(toTruncatableStringProto(spanData.getName())) if (parentSpanId != null && parentSpanId.isValid()) { spanBuilder.setParentSpanId(toByteString(parentSpanId.getBytes()));
@Test public void censusHttpExecuteInterceptorShouldInjectHeader() throws IOException { Random random = new Random(); SpanContext spanContext = SpanContext.create( TraceId.generateRandomId(random), SpanId.generateRandomId(random), TraceOptions.DEFAULT); Span mockSpan = createMockBuilder(Span.class) .withConstructor(SpanContext.class, EnumSet.class) .withArgs(spanContext, null) .createMock(); Scope scope = tracer.withSpan(mockSpan); try { HttpExecuteInterceptor interceptor = censusHttpModule.new CensusHttpExecuteInterceptor(null); interceptor.intercept(httpRequest); assertThat(httpRequest.getHeaders().get("X-Cloud-Trace-Context")).isNotNull(); } finally { scope.close(); } }
@Test public void spanContext_ToString() { assertThat(first.toString()).contains(TraceId.fromBytes(firstTraceIdBytes).toString()); assertThat(first.toString()).contains(SpanId.fromBytes(firstSpanIdBytes).toString()); assertThat(first.toString()).contains(TraceOptions.DEFAULT.toString()); assertThat(second.toString()).contains(TraceId.fromBytes(secondTraceIdBytes).toString()); assertThat(second.toString()).contains(SpanId.fromBytes(secondSpanIdBytes).toString()); assertThat(second.toString()) .contains(TraceOptions.builder().setIsSampled(true).build().toString()); } }
/** * Returns true if this {@code SpanContext} is valid. * * @return true if this {@code SpanContext} is valid. * @since 0.5 */ public boolean isValid() { return traceId.isValid() && spanId.isValid(); }
private long spanIdToLong(final @Nullable SpanId spanId) { if (spanId == null) { return 0L; } // Attempt to minimise allocations, since SpanId#getBytes currently creates a defensive copy: spanId.copyBytesTo(spanIdBuffer, 0); return Longs.fromByteArray(spanIdBuffer); }
Map<String, AttributeValue> fixedAttributes) { SpanContext context = spanData.getContext(); final String spanIdHex = context.getSpanId().toLowerBase16(); SpanName spanName = SpanName.newBuilder() spanBuilder.setChildSpanCount(Int32Value.newBuilder().setValue(childSpanCount).build()); if (spanData.getParentSpanId() != null && spanData.getParentSpanId().isValid()) { spanBuilder.setParentSpanId(spanData.getParentSpanId().toLowerBase16());
private static long spanIdToLong(SpanId spanId) { ByteBuffer buffer = ByteBuffer.allocate(SpanId.SIZE); buffer.put(spanId.getBytes()); return buffer.getLong(0); } }
private RecordEventsSpanImpl createSpan(String spanName) { final SpanContext spanContext = SpanContext.create( TraceId.generateRandomId(random), SpanId.generateRandomId(random), TraceOptions.DEFAULT); return RecordEventsSpanImpl.startSpan( spanContext, spanName, null, SpanId.generateRandomId(random), false, TraceParams.DEFAULT, startEndHandler, null, MillisClock.getInstance()); }
/** * Returns true if this {@code SpanContext} is valid. * * @return true if this {@code SpanContext} is valid. */ public boolean isValid() { return traceId.isValid() && spanId.isValid(); }
@Override public byte[] toByteArray(SpanContext spanContext) { checkNotNull(spanContext, "spanContext"); byte[] bytes = new byte[ALL_FORMAT_LENGTH]; bytes[VERSION_ID_OFFSET] = VERSION_ID; bytes[TRACE_ID_FIELD_ID_OFFSET] = TRACE_ID_FIELD_ID; spanContext.getTraceId().copyBytesTo(bytes, TRACE_ID_OFFSET); bytes[SPAN_ID_FIELD_ID_OFFSET] = SPAN_ID_FIELD_ID; spanContext.getSpanId().copyBytesTo(bytes, SPAN_ID_OFFSET); bytes[TRACE_OPTION_FIELD_ID_OFFSET] = TRACE_OPTION_FIELD_ID; spanContext.getTraceOptions().copyBytesTo(bytes, TRACE_OPTIONS_OFFSET); return bytes; }
@Test public void fromLowerBase16() { assertThat(SpanId.fromLowerBase16("0000000000000000")).isEqualTo(SpanId.INVALID); assertThat(SpanId.fromLowerBase16("0000000000000061")).isEqualTo(first); assertThat(SpanId.fromLowerBase16("ff00000000000041")).isEqualTo(second); }
@Test public void toLowerBase16() { assertThat(SpanId.INVALID.toLowerBase16()).isEqualTo("0000000000000000"); assertThat(first.toLowerBase16()).isEqualTo("0000000000000061"); assertThat(second.toLowerBase16()).isEqualTo("ff00000000000041"); }
private static SpanId longToSpanId(long x) { ByteBuffer buffer = ByteBuffer.allocate(SpanId.SIZE); buffer.putLong(x); return SpanId.fromBytes(buffer.array()); }
Map<String, AttributeValue> fixedAttributes) { SpanContext context = spanData.getContext(); final String spanIdHex = context.getSpanId().toLowerBase16(); SpanName spanName = SpanName.newBuilder() spanBuilder.setChildSpanCount(Int32Value.newBuilder().setValue(childSpanCount).build()); if (spanData.getParentSpanId() != null && spanData.getParentSpanId().isValid()) { spanBuilder.setParentSpanId(spanData.getParentSpanId().toLowerBase16());