use of zipkin2.Span.Kind in project spring-cloud-gcp by spring-cloud.
the class StackdriverTraceReporterTests method testSingleServerSpan.
@Test
public void testSingleServerSpan() {
Span parent = Span.newBuilder().traceId("123").id("9999").name("http:parent").timestamp(beginTime).duration(endTime - beginTime).kind(Span.Kind.SERVER).build();
this.reporter.report(parent);
Assert.assertEquals(1, this.test.traceSpans.size());
TraceSpan traceSpan = this.test.traceSpans.get(0);
Assert.assertEquals("http:parent", traceSpan.getName());
// Server Spans should use Span begin and end time, not SR or SS
Assert.assertEquals(this.spanTranslator.createTimestamp(beginTime), traceSpan.getStartTime());
Assert.assertEquals(this.spanTranslator.createTimestamp(endTime), traceSpan.getEndTime());
Assert.assertEquals(TraceSpan.SpanKind.RPC_SERVER, traceSpan.getKind());
}
use of zipkin2.Span.Kind in project spring-cloud-gcp by spring-cloud.
the class StackdriverTraceReporterTests method testClientServerSpans.
@Test
public void testClientServerSpans() {
Span clientSpan = Span.newBuilder().traceId("123").id("9999").name("http:call").timestamp(beginTime).duration(endTime - beginTime).kind(Span.Kind.CLIENT).build();
Span serverSpan = Span.newBuilder().traceId("123").parentId(clientSpan.id()).id(clientSpan.id()).name("http:service").timestamp(beginTime).duration(endTime - beginTime).kind(Span.Kind.SERVER).build();
this.reporter.report(serverSpan);
this.reporter.report(clientSpan);
Assert.assertEquals(2, this.test.traceSpans.size());
TraceSpan serverTraceSpan = this.test.traceSpans.get(0);
Assert.assertEquals("http:service", serverTraceSpan.getName());
Assert.assertEquals(TraceSpan.SpanKind.RPC_SERVER, serverTraceSpan.getKind());
TraceSpan clientTraceSpan = this.test.traceSpans.get(1);
Assert.assertEquals("http:call", clientTraceSpan.getName());
// Client span chould use CS and CR time, not Span begin or end time.
Assert.assertEquals(this.spanTranslator.createTimestamp(beginTime), clientTraceSpan.getStartTime());
Assert.assertEquals(this.spanTranslator.createTimestamp(endTime), clientTraceSpan.getEndTime());
Assert.assertEquals(TraceSpan.SpanKind.RPC_CLIENT, clientTraceSpan.getKind());
Assert.assertEquals(0, clientTraceSpan.getParentSpanId());
Assert.assertNotEquals(Long.valueOf(serverSpan.parentId()).longValue(), serverTraceSpan.getParentSpanId());
// Even though the client and server spans shared the same Span ID. In Stackdriver Trace,
// the IDs should be different. This is accomplished through
// StackdriverTraceSpanListener.rewriteIds().
Assert.assertNotEquals(clientTraceSpan.getSpanId(), serverTraceSpan.getSpanId());
// Although the Span IDs were re-written, the server Span's parent ID should still refer
// to client Span ID.
Assert.assertEquals(serverTraceSpan.getParentSpanId(), clientTraceSpan.getSpanId());
}
use of zipkin2.Span.Kind in project instrumentation-java by census-instrumentation.
the class ZipkinExporterHandler method generateSpan.
@SuppressWarnings("deprecation")
static Span generateSpan(SpanData spanData, Endpoint localEndpoint) {
SpanContext context = spanData.getContext();
long startTimestamp = toEpochMicros(spanData.getStartTimestamp());
// TODO(sebright): Fix the Checker Framework warning.
@SuppressWarnings("nullness") long endTimestamp = toEpochMicros(spanData.getEndTimestamp());
// TODO(bdrutu): Fix the Checker Framework warning.
@SuppressWarnings("nullness") Span.Builder spanBuilder = Span.newBuilder().traceId(context.getTraceId().toLowerBase16()).id(context.getSpanId().toLowerBase16()).kind(toSpanKind(spanData)).name(spanData.getName()).timestamp(toEpochMicros(spanData.getStartTimestamp())).duration(endTimestamp - startTimestamp).localEndpoint(localEndpoint);
if (spanData.getParentSpanId() != null && spanData.getParentSpanId().isValid()) {
spanBuilder.parentId(spanData.getParentSpanId().toLowerBase16());
}
for (Map.Entry<String, AttributeValue> label : spanData.getAttributes().getAttributeMap().entrySet()) {
spanBuilder.putTag(label.getKey(), attributeValueToString(label.getValue()));
}
Status status = spanData.getStatus();
if (status != null) {
spanBuilder.putTag(STATUS_CODE, status.getCanonicalCode().toString());
if (status.getDescription() != null) {
spanBuilder.putTag(STATUS_DESCRIPTION, status.getDescription());
}
if (!status.isOk()) {
spanBuilder.putTag(STATUS_ERROR, status.getCanonicalCode().toString());
}
}
for (TimedEvent<Annotation> annotation : spanData.getAnnotations().getEvents()) {
spanBuilder.addAnnotation(toEpochMicros(annotation.getTimestamp()), annotation.getEvent().getDescription());
}
for (TimedEvent<io.opencensus.trace.MessageEvent> messageEvent : spanData.getMessageEvents().getEvents()) {
spanBuilder.addAnnotation(toEpochMicros(messageEvent.getTimestamp()), messageEvent.getEvent().getType().name());
}
return spanBuilder.build();
}
use of zipkin2.Span.Kind in project zipkin by openzipkin.
the class ITTraces method getTrace_differentiatesDebugFromShared.
/**
* Prevents subtle bugs which can result in mixed-length traces from linking.
*/
@Test
protected void getTrace_differentiatesDebugFromShared(TestInfo testInfo) throws Exception {
String testSuffix = testSuffix(testInfo);
Span clientSpan = newClientSpan(testSuffix).toBuilder().debug(true).build();
Span serverSpan = clientSpan.toBuilder().kind(SERVER).debug(null).shared(true).build();
accept(clientSpan, serverSpan);
// assertGetTraceReturns does recursive comparison
assertGetTraceReturns(clientSpan.traceId(), asList(clientSpan, serverSpan));
}
use of zipkin2.Span.Kind in project zipkin by openzipkin.
the class ITTraces method getTraces_differentiatesDebugFromShared.
/**
* Prevents subtle bugs which can result in mixed-length traces from linking.
*/
@Test
protected void getTraces_differentiatesDebugFromShared(TestInfo testInfo) throws Exception {
String testSuffix = testSuffix(testInfo);
Span clientSpan = newClientSpan(testSuffix).toBuilder().debug(true).build();
Span serverSpan = clientSpan.toBuilder().kind(SERVER).debug(null).shared(true).build();
accept(clientSpan, serverSpan);
// assertGetTracesReturns does recursive comparison
assertGetTracesReturns(asList(clientSpan.traceId()), asList(clientSpan, serverSpan));
}
Aggregations