diff --git a/dd-trace/pom.xml b/dd-trace/pom.xml index d518f6c784..38dc586304 100644 --- a/dd-trace/pom.xml +++ b/dd-trace/pom.xml @@ -14,10 +14,6 @@ Datadog core library https://github.com/datadog/dd-trace-java - - 1.6 - - diff --git a/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java b/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java index dbe5307f9a..dd6bde94f2 100644 --- a/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java +++ b/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java @@ -3,6 +3,7 @@ package com.datadoghq.trace; import com.datadoghq.trace.integration.DDSpanContextDecorator; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.google.common.collect.Maps; import io.opentracing.tag.Tags; import java.util.*; @@ -21,6 +22,8 @@ public class DDSpanContext implements io.opentracing.SpanContext { private final long traceId; private final long spanId; private final long parentId; + private final String threadName = Thread.currentThread().getName(); + private final long threadId = Thread.currentThread().getId(); private Map baggageItems; // DD attributes @@ -126,7 +129,7 @@ public class DDSpanContext implements io.opentracing.SpanContext { public boolean getErrorFlag() { return errorFlag; } - + public void setErrorFlag(boolean errorFlag) { this.errorFlag = errorFlag; } @@ -193,6 +196,11 @@ public class DDSpanContext implements io.opentracing.SpanContext { } public synchronized Map getTags() { + if(tags.isEmpty()) { + tags = Maps.newHashMapWithExpectedSize(2); + } + tags.put(DDTags.THREAD_NAME, threadName); + tags.put(DDTags.THREAD_ID, threadId); return Collections.unmodifiableMap(tags); } diff --git a/dd-trace/src/main/java/com/datadoghq/trace/DDTags.java b/dd-trace/src/main/java/com/datadoghq/trace/DDTags.java index 5b49c4dd56..1b8920c4fb 100644 --- a/dd-trace/src/main/java/com/datadoghq/trace/DDTags.java +++ b/dd-trace/src/main/java/com/datadoghq/trace/DDTags.java @@ -4,4 +4,6 @@ public class DDTags { public static final String SPAN_TYPE = "span-type"; public static final String SERVICE_NAME = "service-name"; public static final String RESOURCE_NAME = "resource-name"; + public static final String THREAD_NAME = "thread-name"; + public static final String THREAD_ID = "thread-id"; } diff --git a/dd-trace/src/test/java/com/datadoghq/trace/DDSpanBuilderTest.java b/dd-trace/src/test/java/com/datadoghq/trace/DDSpanBuilderTest.java index 642b16aad6..6e6d6dabd8 100644 --- a/dd-trace/src/test/java/com/datadoghq/trace/DDSpanBuilderTest.java +++ b/dd-trace/src/test/java/com/datadoghq/trace/DDSpanBuilderTest.java @@ -66,7 +66,7 @@ public class DDSpanBuilderTest { .start(); assertThat(span.getTags()).isNotNull(); - assertThat(span.getTags()).isEmpty(); + assertThat(span.getTags().size()).isEqualTo(2); // with all custom fields provided final String expectedResource = "fakeResource"; @@ -88,7 +88,8 @@ public class DDSpanBuilderTest { assertThat(actualContext.getErrorFlag()).isTrue(); assertThat(actualContext.getServiceName()).isEqualTo(expectedService); assertThat(actualContext.getSpanType()).isEqualTo(expectedType); - + assertThat(actualContext.getTags().get(DDTags.THREAD_NAME)).isEqualTo(Thread.currentThread().getName()); + assertThat(actualContext.getTags().get(DDTags.THREAD_ID)).isEqualTo(Thread.currentThread().getId()); } diff --git a/dd-trace/src/test/java/com/datadoghq/trace/DDSpanSerializationTest.java b/dd-trace/src/test/java/com/datadoghq/trace/DDSpanSerializationTest.java index ff7cbc5dc0..cb55e78403 100644 --- a/dd-trace/src/test/java/com/datadoghq/trace/DDSpanSerializationTest.java +++ b/dd-trace/src/test/java/com/datadoghq/trace/DDSpanSerializationTest.java @@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.HashMap; import java.util.Map; +import com.google.common.collect.Maps; import org.junit.Before; import org.junit.Test; @@ -16,15 +17,28 @@ public class DDSpanSerializationTest { ObjectMapper serializer; DDSpan span; DDActiveSpan activeSpan; + Map expected = Maps.newHashMap(); @Before public void setUp() throws Exception { - Map baggage = new HashMap(); + Map baggage = new HashMap<>(); baggage.put("a-baggage", "value"); - Map tags = new HashMap(); + Map tags = new HashMap<>(); baggage.put("k1", "v1"); + expected.put("meta", baggage); + expected.put("service", "service"); + expected.put("error", 0); + expected.put("type", "type"); + expected.put("name", "operation"); + expected.put("duration", 33000); + expected.put("resource", "operation"); + expected.put("start", 100000); + expected.put("span_id", 2l); + expected.put("parent_id", 0l); + expected.put("trace_id", 1l); + DDSpanContext context = new DDSpanContext( 1L, @@ -33,13 +47,16 @@ public class DDSpanSerializationTest { "service", "operation", null, - baggage, + new HashMap(baggage), false, "type", tags, null, null); + baggage.put("thread-name", Thread.currentThread().getName()); + baggage.put("thread-id", String.valueOf(Thread.currentThread().getId())); + span = new DDSpan( 100L, context); @@ -52,22 +69,7 @@ public class DDSpanSerializationTest { @Test public void test() throws Exception { - - - String expected = "{\"meta\":{\"a-baggage\":\"value\",\"k1\":\"v1\"},\"service\":\"service\",\"error\":0,\"type\":\"type\",\"name\":\"operation\",\"duration\":33000,\"resource\":\"operation\",\"start\":100000,\"span_id\":2,\"parent_id\":0,\"trace_id\":1}"; - // FIXME At the moment, just compare the string sizes - try { - assertThat(serializer.writeValueAsString(span).length()).isEqualTo(expected.length()); - - } catch (AssertionError e) { - assertThat(serializer.writeValueAsString(span)).isEqualTo(expected); - } - -// try { -// assertThat(serializer.writeValueAsString(activeSpan).length()).isEqualTo(expected.length()); -// } catch (AssertionError e) { -// assertThat(serializer.writeValueAsString(activeSpan)).isEqualTo(expected); -// } + assertThat(serializer.readTree(serializer.writeValueAsString(span))) + .isEqualTo(serializer.readTree(serializer.writeValueAsString(expected))); } - }