diff --git a/src/main/java/com/datadoghq/trace/impl/DDSpan.java b/src/main/java/com/datadoghq/trace/impl/DDSpan.java index ee42f24dbe..99d770415b 100644 --- a/src/main/java/com/datadoghq/trace/impl/DDSpan.java +++ b/src/main/java/com/datadoghq/trace/impl/DDSpan.java @@ -1,14 +1,12 @@ package com.datadoghq.trace.impl; +import com.fasterxml.jackson.annotation.JsonGetter; +import io.opentracing.Span; import io.opentracing.SpanContext; import java.util.Map; import java.util.Optional; -import com.fasterxml.jackson.annotation.JsonGetter; - -import io.opentracing.Span; - public class DDSpan implements io.opentracing.Span { @@ -124,7 +122,7 @@ public class DDSpan implements io.opentracing.Span { @JsonGetter(value = "start") public long getStartTime() { - return startTime * 1000000; + return startTime; } @JsonGetter(value = "duration") diff --git a/src/main/java/com/datadoghq/trace/impl/DDSpanContext.java b/src/main/java/com/datadoghq/trace/impl/DDSpanContext.java index 820677a5ef..f8c5186cd8 100644 --- a/src/main/java/com/datadoghq/trace/impl/DDSpanContext.java +++ b/src/main/java/com/datadoghq/trace/impl/DDSpanContext.java @@ -47,14 +47,11 @@ public class DDSpanContext implements io.opentracing.SpanContext { this.spanId = spanId; this.parentId = parentId; Optional> baggage = Optional.ofNullable(baggageItems); - this.serviceName = serviceName; this.resourceName = resourceName; - this.baggageItems = baggage.orElse(new HashMap<>()); this.errorFlag = errorFlag; this.metrics = metrics; - this.spanType = spanType; this.sampled = sampled; } diff --git a/src/main/java/com/datadoghq/trace/impl/Tracer.java b/src/main/java/com/datadoghq/trace/impl/Tracer.java index 11c7357e28..b8b1ba0072 100644 --- a/src/main/java/com/datadoghq/trace/impl/Tracer.java +++ b/src/main/java/com/datadoghq/trace/impl/Tracer.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; -import io.opentracing.References; import io.opentracing.Span; import io.opentracing.SpanContext; import io.opentracing.propagation.Format; @@ -17,19 +16,19 @@ public class Tracer implements io.opentracing.Tracer { return new SpanBuilder(operationName); } - public void inject(SpanContext spanContext, Format format, C c) { + throw new UnsupportedOperationException(); } public SpanContext extract(Format format, C c) { - return null; + throw new UnsupportedOperationException(); } public class SpanBuilder implements io.opentracing.Tracer.SpanBuilder { private final String operationName; - private Map tags = new HashMap(); + private Map tags = new HashMap<>(); private Long timestamp; private SpanContext parent; private String serviceName; @@ -51,14 +50,7 @@ public class Tracer implements io.opentracing.Tracer { } public Tracer.SpanBuilder addReference(String referenceType, SpanContext spanContext) { - - if (References.CHILD_OF.equals(referenceType) || References.FOLLOWS_FROM.equals(referenceType)) { - // @todo: implements the notion of referenceType, currently only link a span to a parent one - return asChildOf(spanContext); - } else { - // do nothing - return this; - } + throw new UnsupportedOperationException(); } public Tracer.SpanBuilder withTag(String tag, Number number) { @@ -88,7 +80,6 @@ public class Tracer implements io.opentracing.Tracer { return this; } - public Tracer.SpanBuilder withResourceName(String resourceName) { this.resourceName = resourceName; return this; @@ -105,7 +96,6 @@ public class Tracer implements io.opentracing.Tracer { } - public Span start() { // build the context @@ -135,7 +125,7 @@ public class Tracer implements io.opentracing.Tracer { p.getBaggageItems(), errorFlag, null, - null, + this.spanType, true ); } else { @@ -148,7 +138,7 @@ public class Tracer implements io.opentracing.Tracer { null, errorFlag, null, - null, + this.spanType, true); } diff --git a/src/test/java/com/datadoghq/trace/impl/DDSpanBuilderTest.java b/src/test/java/com/datadoghq/trace/impl/DDSpanBuilderTest.java index 5d37192dc4..bf2a456c7c 100644 --- a/src/test/java/com/datadoghq/trace/impl/DDSpanBuilderTest.java +++ b/src/test/java/com/datadoghq/trace/impl/DDSpanBuilderTest.java @@ -36,7 +36,7 @@ public class DDSpanBuilderTest { } @Test - public void shouldBuildTaggedSpan() { + public void shouldBuildMoreComplexSpan() { final String expectedName = "fakeName"; final Map tags = new HashMap() { @@ -66,13 +66,32 @@ public class DDSpanBuilderTest { assertThat(span.getTags()).isNotNull(); assertThat(span.getTags()).isEmpty(); + // with all custom fields provided + final String expectedResource = "fakeResource"; + final String expectedService = "fakeService"; + final String expectedType = "fakeType"; + + span = (DDSpan) tracer + .buildSpan(expectedName) + .withResourceName(expectedResource) + .withServiceName(expectedService) + .withErrorFlag() + .withSpanType(expectedType) + .start(); + + DDSpanContext actualContext = (DDSpanContext) span.context(); + + assertThat(actualContext.getResourceName()).isEqualTo(expectedResource); + assertThat(actualContext.getErrorFlag()).isTrue(); + assertThat(actualContext.getServiceName()).isEqualTo(expectedService); + assertThat(actualContext.getSpanType()).isEqualTo(expectedType); } @Test public void shouldBuildSpanTimestampInNano() { - final long expectedTimestamp = 487517802L; + final long expectedTimestamp = 4875178020000L; final String expectedName = "fakeName"; DDSpan span = (DDSpan) tracer @@ -117,51 +136,8 @@ public class DDSpanBuilderTest { assertThat(actualContext.getParentId()).isEqualTo(expectedParentId); - } - @Test - public void shouldLinkViaReferenceType() { - - - final long spanId = 223L; - final long expectedParentId = spanId; - - DDSpanContext mockedContext = mock(DDSpanContext.class); - when(mockedContext.getSpanId()).thenReturn(spanId); - - final String expectedName = "fakeName"; - - - // case 1, using a CHILD_OF ref - DDSpan span = (DDSpan) tracer - .buildSpan(expectedName) - .addReference(References.CHILD_OF, mockedContext) - .start(); - - DDSpanContext actualContext = (DDSpanContext) span.context(); - assertThat(actualContext.getParentId()).isEqualTo(expectedParentId); - - - // case 2, using a FOLLOW_FROM ref - span = (DDSpan) tracer - .buildSpan(expectedName) - .addReference(References.FOLLOWS_FROM, mockedContext) - .start(); - - actualContext = (DDSpanContext) span.context(); - assertThat(actualContext.getParentId()).isEqualTo(expectedParentId); - - // case 2, using a WFT ref, should not be linked to the previous - span = (DDSpan) tracer - .buildSpan(expectedName) - .addReference("WTF", mockedContext) - .start(); - - actualContext = (DDSpanContext) span.context(); - assertThat(actualContext.getParentId()).isEqualTo(0L); - - } @Test public void shouldInheritOfTheDDParentAttributes() {