private static String toSpanName(SpanData spanData) { return spanData.getName(); }
@javax.annotation.Nullable private static Span.Kind toSpanKind(SpanData spanData) { // This is a hack because the Span API did not have SpanKind. if (spanData.getKind() == Kind.SERVER || (spanData.getKind() == null && Boolean.TRUE.equals(spanData.getHasRemoteParent()))) { return Span.Kind.SERVER; } // This is a hack because the Span API did not have SpanKind. if (spanData.getKind() == Kind.CLIENT || spanData.getName().startsWith("Sent.")) { return Span.Kind.CLIENT; } return null; }
private static String toSpanType(SpanData spanData) { if (spanData.getKind() == Kind.SERVER || (spanData.getKind() == null && (spanData.getParentSpanId() == null || Boolean.TRUE.equals(spanData.getHasRemoteParent())))) { return "ENTRY"; } // This is a hack because the Span API did not have SpanKind. if (spanData.getKind() == Kind.CLIENT || (spanData.getKind() == null && spanData.getName().startsWith("Sent."))) { return "EXIT"; } return "INTERMEDIATE"; }
sc.getTraceId().getLowerLong(), convertSpanId(sc.getSpanId()), sd.getName(), resource, this.service,
@Test public void tracedAcceptsCustomSpanName() throws Exception { // When Sample sample = (Sample) context.getBean("sample"); sample.custom(100); // Then List<SpanData> data = handler.waitForExport(1); assertThat(data).isNotNull(); assertThat(data.size()).isEqualTo(1); assertThat(data.get(0).getName()).isEqualTo("blah"); }
@Test public void tracedUsesMethodAsSpanName() throws Exception { // When Sample sample = (Sample) context.getBean("sample"); sample.call(100); // Then List<SpanData> data = handler.waitForExport(1); assertThat(data).isNotNull(); assertThat(data.size()).isEqualTo(1); assertThat(data.get(0).getName()).isEqualTo("call"); }
@Test public void sqlExecute() throws Exception { // When String sql = "select 1"; Sample sample = (Sample) context.getBean("sample"); sample.execute(sql); // Then List<SpanData> data = handler.waitForExport(1); assertThat(data).isNotNull(); assertThat(data.size()).isEqualTo(1); assertThat(data.get(0).getName()).isEqualTo("execute-4705ea0d"); // sql-{hash of sql statement} List<SpanData.TimedEvent<Annotation>> events = data.get(0).getAnnotations().getEvents(); assertThat(events.size()).isEqualTo(1); assertThat(events.get(0).getEvent().getDescription()).isEqualTo(sql); }
@Test public void sqlQuery() throws Exception { // When String sql = "select 2"; Sample sample = (Sample) context.getBean("sample"); sample.executeQuery(sql); // Then List<SpanData> data = handler.waitForExport(1); assertThat(data).isNotNull(); assertThat(data.size()).isEqualTo(1); assertThat(data.get(0).getName()).isEqualTo("executeQuery-4705ea0e"); SpanData.TimedEvents<Annotation> annotations = data.get(0).getAnnotations(); List<SpanData.TimedEvent<Annotation>> events = annotations.getEvents(); assertThat(events.size()).isEqualTo(1); assertThat(events.get(0).getEvent().getDescription()).isEqualTo(sql); }
@Test public void sqlUpdate() throws Exception { // When String sql = "update content set value = 1"; Sample sample = (Sample) context.getBean("sample"); sample.executeUpdate(sql); // Then List<SpanData> data = handler.waitForExport(1); assertThat(data).isNotNull(); assertThat(data.size()).isEqualTo(1); assertThat(data.get(0).getName()).isEqualTo("executeUpdate-acaeb423"); List<SpanData.TimedEvent<Annotation>> events = data.get(0).getAnnotations().getEvents(); assertThat(events.size()).isEqualTo(1); assertThat(events.get(0).getEvent().getDescription()).isEqualTo(sql); } }
@Test public void handlesException() { // When Sample sample = (Sample) context.getBean("sample"); try { sample.boom(); } catch (Exception ignored) { // ok } // Then List<SpanData> spanList = handler.waitForExport(1); assertThat(spanList).isNotNull(); assertThat(spanList.size()).isEqualTo(1); SpanData spanData = spanList.get(0); assertThat(spanData.getName()).isEqualTo("boom"); assertThat(spanData.getStatus()).isEqualTo(Status.UNKNOWN); SpanData.TimedEvents<Annotation> annotations = spanData.getAnnotations(); assertThat(annotations).isNotNull(); List<SpanData.TimedEvent<Annotation>> events = annotations.getEvents(); assertThat(events.size()).isEqualTo(1); assertThat(events.get(0).getEvent().getDescription()).isEqualTo("error"); }
assertThat(spanData.getParentSpanId()).isEqualTo(parentSpanId); assertThat(spanData.getHasRemoteParent()).isFalse(); assertThat(spanData.getName()).isEqualTo(SPAN_NAME); assertThat(spanData.getStartTimestamp()).isEqualTo(startTimestamp); assertThat(spanData.getAttributes().getAttributeMap().isEmpty()).isTrue();
@Test public void startSpanNullParent() { RecordEventsSpanImpl span = (RecordEventsSpanImpl) SpanBuilderImpl.createWithParent(SPAN_NAME, null, spanBuilderOptions) .setRecordEvents(true) .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(); assertThat(spanData.getStartTimestamp()).isEqualTo(testClock.now()); assertThat(spanData.getName()).isEqualTo(SPAN_NAME); }
assertThat(spanData.getParentSpanId()).isEqualTo(parentSpanId); assertThat(spanData.getHasRemoteParent()).isTrue(); assertThat(spanData.getName()).isEqualTo(SPAN_NAME); assertThat(spanData.getStartTimestamp()).isEqualTo(startTimestamp); assertThat(spanData.getAttributes()).isEqualTo(attributes);
assertThat(spanData.getParentSpanId()).isNull(); assertThat(spanData.getHasRemoteParent()).isNull(); assertThat(spanData.getName()).isEqualTo(SPAN_NAME); assertThat(spanData.getStartTimestamp()).isEqualTo(startTimestamp); assertThat(spanData.getAttributes()).isEqualTo(attributes);
assertThat(spanData.getParentSpanId()).isEqualTo(parentSpanId); assertThat(spanData.getHasRemoteParent()).isTrue(); assertThat(spanData.getName()).isEqualTo(SPAN_NAME); assertThat(spanData.getKind()).isEqualTo(Kind.SERVER); assertThat(spanData.getStartTimestamp()).isEqualTo(startTimestamp);
.id(context.getSpanId().toLowerBase16()) .kind(toSpanKind(spanData)) .name(spanData.getName()) .timestamp(toEpochMicros(spanData.getStartTimestamp())) .duration(endTimestamp - startTimestamp)
private Span spanDataToJaegerThriftSpan(final SpanData spanData) { final long startTimeInMicros = timestampToMicros(spanData.getStartTimestamp()); final long endTimeInMicros = timestampToMicros(spanData.getEndTimestamp()); final SpanContext context = spanData.getContext(); copyToBuffer(context.getTraceId()); return new com.uber.jaeger.thriftjava.Span( traceIdLow(), traceIdHigh(), spanIdToLong(context.getSpanId()), spanIdToLong(spanData.getParentSpanId()), spanData.getName(), optionsToFlags(context.getTraceOptions()), startTimeInMicros, endTimeInMicros - startTimeInMicros) .setReferences(linksToReferences(spanData.getLinks().getLinks())) .setTags( attributesToTags( spanData.getAttributes().getAttributeMap(), spanKindToTag(spanData.getKind()))) .setLogs( timedEventsToLogs( spanData.getAnnotations().getEvents(), spanData.getMessageEvents().getEvents())); }
.id(SPAN_ID) .kind(Span.Kind.SERVER) .name(data.getName()) .timestamp(1505855794000000L + 194009601L / 1000) .duration(
.id(SPAN_ID) .kind(Span.Kind.SERVER) .name(data.getName()) .timestamp(1505855794000000L + 194009601L / 1000) .duration(
.id(SPAN_ID) .kind(Span.Kind.CLIENT) .name(data.getName()) .timestamp(1505855794000000L + 194009601L / 1000) .duration(