From 7e38848abb7d789e396446680dab5c5fb77f9d24 Mon Sep 17 00:00:00 2001 From: renaudboutet Date: Wed, 26 Apr 2017 15:29:58 +0200 Subject: [PATCH] Changed id generations + fixed serialization --- .../com/datadoghq/trace/SpanSerializer.java | 4 +- .../java/com/datadoghq/trace/impl/DDSpan.java | 12 ++--- .../datadoghq/trace/impl/DDSpanContext.java | 3 -- .../trace/impl/DDSpanSerializer.java | 18 +------ .../java/com/datadoghq/trace/impl/Tracer.java | 2 +- .../datadoghq/trace/writer/impl/DDApi.java | 54 ++++++++++++------- 6 files changed, 45 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/datadoghq/trace/SpanSerializer.java b/src/main/java/com/datadoghq/trace/SpanSerializer.java index dc53169a82..7ecaa7e5c9 100644 --- a/src/main/java/com/datadoghq/trace/SpanSerializer.java +++ b/src/main/java/com/datadoghq/trace/SpanSerializer.java @@ -1,14 +1,12 @@ package com.datadoghq.trace; -import java.util.List; - import io.opentracing.Span; public interface SpanSerializer { public String serialize(Span t) throws Exception; - public String serialize(List t) throws Exception; + public String serialize(Object spans) throws Exception; public Span deserialize(String str) throws Exception; diff --git a/src/main/java/com/datadoghq/trace/impl/DDSpan.java b/src/main/java/com/datadoghq/trace/impl/DDSpan.java index b5c6bcc14e..a77e13d28b 100644 --- a/src/main/java/com/datadoghq/trace/impl/DDSpan.java +++ b/src/main/java/com/datadoghq/trace/impl/DDSpan.java @@ -11,12 +11,12 @@ import io.opentracing.SpanContext; public class DDSpan implements io.opentracing.Span { - private final Tracer tracer; - private final String operationName; - private Map tags; - private long startTime; - private long durationNano; - private final DDSpanContext context; + protected final Tracer tracer; + protected final String operationName; + protected Map tags; + protected long startTime; + protected long durationNano; + protected final DDSpanContext context; DDSpan( Tracer tracer, diff --git a/src/main/java/com/datadoghq/trace/impl/DDSpanContext.java b/src/main/java/com/datadoghq/trace/impl/DDSpanContext.java index 6952d47566..820677a5ef 100644 --- a/src/main/java/com/datadoghq/trace/impl/DDSpanContext.java +++ b/src/main/java/com/datadoghq/trace/impl/DDSpanContext.java @@ -1,9 +1,6 @@ package com.datadoghq.trace.impl; -import io.opentracing.Span; - -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Optional; diff --git a/src/main/java/com/datadoghq/trace/impl/DDSpanSerializer.java b/src/main/java/com/datadoghq/trace/impl/DDSpanSerializer.java index 542f23b777..0eae68ac6f 100644 --- a/src/main/java/com/datadoghq/trace/impl/DDSpanSerializer.java +++ b/src/main/java/com/datadoghq/trace/impl/DDSpanSerializer.java @@ -1,7 +1,5 @@ package com.datadoghq.trace.impl; -import java.util.List; - import com.datadoghq.trace.SpanSerializer; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -16,25 +14,11 @@ public class DDSpanSerializer implements SpanSerializer { return objectMapper.writeValueAsString(span); } - public String serialize(List spans) throws JsonProcessingException { + public String serialize(Object spans) throws JsonProcessingException { return objectMapper.writeValueAsString(spans); } public io.opentracing.Span deserialize(String str) throws Exception { throw new Exception("Deserialisation of spans is not implemented yet"); } - - public static void main(String[] args) throws Exception{ - - Tracer tracer = new Tracer(); - Span span = tracer.buildSpan("Hello!") - .withTag("port", 1234) - .withTag("bool", true) - .withTag("hello", "world") - .start(); - DDSpanSerializer ddSpanSerializer = new DDSpanSerializer(); - - System.out.println(ddSpanSerializer.serialize(span)); - - } } diff --git a/src/main/java/com/datadoghq/trace/impl/Tracer.java b/src/main/java/com/datadoghq/trace/impl/Tracer.java index f14c8848de..85aa97b4f3 100644 --- a/src/main/java/com/datadoghq/trace/impl/Tracer.java +++ b/src/main/java/com/datadoghq/trace/impl/Tracer.java @@ -134,6 +134,6 @@ public class Tracer implements io.opentracing.Tracer { } long generateNewId() { - return UUID.randomUUID().getMostSignificantBits(); + return System.nanoTime(); } } diff --git a/src/main/java/com/datadoghq/trace/writer/impl/DDApi.java b/src/main/java/com/datadoghq/trace/writer/impl/DDApi.java index 08fa910599..d72274e165 100644 --- a/src/main/java/com/datadoghq/trace/writer/impl/DDApi.java +++ b/src/main/java/com/datadoghq/trace/writer/impl/DDApi.java @@ -7,8 +7,11 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.Optional; +import com.datadoghq.trace.SpanSerializer; import com.datadoghq.trace.impl.DDSpanSerializer; +import com.datadoghq.trace.impl.DDTags; import com.datadoghq.trace.impl.Tracer; import io.opentracing.Span; @@ -22,16 +25,22 @@ public class DDApi { protected final int port; protected final String tracesEndpoint; protected final String servicesEndpoint; + protected final SpanSerializer spanSerializer; public DDApi(String host, int port) { + this(host,port,null); + } + + public DDApi(String host, int port,Optional serializer) { super(); this.host = host; this.port = port; this.tracesEndpoint = "http://"+host+":"+port+TRACES_ENDPOINT; this.servicesEndpoint = "http://"+host+":"+port+TRACES_SERVICES; + this.spanSerializer = serializer.orElse(new DDSpanSerializer()); } - public void sendSpans(List spans){ + public void sendTraces(List> traces){ } @@ -48,7 +57,7 @@ public class DDApi { httpCon.setRequestMethod("PUT"); httpCon.setRequestProperty("Content-Type", "application/json"); OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream()); - out.write("Resource content"); + out.write(content); out.close(); return httpCon.getResponseCode(); } catch (MalformedURLException e) { @@ -64,26 +73,35 @@ public class DDApi { public static void main(String[] args) throws Exception{ - Tracer tracer = new Tracer(); List array = new ArrayList(); - Span span = tracer.buildSpan("Hello!") -// .withTag("port", 1234) -// .withTag("bool", true) - .withTag("hello", "world") - .start(); - array.add(span); - - Span span2 = tracer.buildSpan("Hello2!") -// .withTag("port", 1234) -// .withTag("bool", true) - .withTag("hello", "world") - .start(); - array.add(span2); + Tracer tracer = new Tracer(); + + Span parent = tracer + .buildSpan("hello-world") + .withTag(DDTags.SERVICE.getKey(), "service-name") + .start(); + array.add(parent); + + parent.setBaggageItem("a-baggage", "value"); + + Thread.sleep(1000); + + Span child = tracer + .buildSpan("hello-world") + .asChildOf(parent) + .start(); + array.add(child); + + Thread.sleep(1000); + + child.finish(); + + Thread.sleep(1000); + + parent.finish(); DDSpanSerializer ddSpanSerializer = new DDSpanSerializer(); - - String str = ddSpanSerializer.serialize(array); str = "["+str+"]";