From e5c562c4bb6eed969740eac85aad6b80691e8de4 Mon Sep 17 00:00:00 2001 From: wusheng Date: Tue, 20 Dec 2016 17:59:46 +0800 Subject: [PATCH] add some implements of OT. --- .../toolkit/opentracing/SkyWalkingSpan.java | 11 ++++- .../opentracing/SkyWalkingSpanBuilder.java | 44 ++++++++++++++++--- .../toolkit/opentracing/SkyWalkingTracer.java | 4 ++ 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java index 7d5c72639..f4903c53b 100644 --- a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java +++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java @@ -10,9 +10,18 @@ import java.util.Map; * Created by wusheng on 2016/12/20. */ public class SkyWalkingSpan implements Span, SpanContext { + private String operationName; + + private long startTime; + + private Map tags; + private final Map baggageItems; - SkyWalkingSpan(){ + SkyWalkingSpan(String operationName, long startTime, Map tags){ + this.operationName = operationName; + this.startTime = startTime; + this.tags = tags; baggageItems = new HashMap(); } diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java index f69b19401..15cc19d21 100644 --- a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java +++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java @@ -5,6 +5,8 @@ import io.opentracing.Span; import io.opentracing.SpanContext; import io.opentracing.Tracer; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; /** @@ -17,18 +19,38 @@ import java.util.Map; public class SkyWalkingSpanBuilder implements Tracer.SpanBuilder { private String operationName; + private long startTime = 0L; + + private final Map tags; + + private SpanContext parentContext; + SkyWalkingSpanBuilder(String operationName){ this.operationName = operationName; + this.tags = new HashMap(); } + /** + * In SkyWalkingTracer, SpanContext will not be used. Tracer will build reference by itself. + * + * @param spanContext + * @return + */ @Override public Tracer.SpanBuilder asChildOf(SpanContext spanContext) { - return null; + this.parentContext = spanContext; + return this; } + /** + * In SkyWalkingTracer, Parent Span will not be used. Tracer will build reference by itself. + * @param span + * @return + */ @Override public Tracer.SpanBuilder asChildOf(Span span) { - return null; + asChildOf(span.context()); + return this; } @Override @@ -42,31 +64,43 @@ public class SkyWalkingSpanBuilder implements Tracer.SpanBuilder { @Override public Tracer.SpanBuilder withTag(String key, String value) { + if (key != null && value != null) { + tags.put(key, value); + } return this; } @Override public Tracer.SpanBuilder withTag(String key, boolean value) { + if (key != null) { + tags.put(key, Boolean.toString(value)); + } return this; } @Override public Tracer.SpanBuilder withTag(String key, Number value) { + if (key != null && value != null) { + tags.put(key, value.toString()); + } return this; } @Override - public Tracer.SpanBuilder withStartTimestamp(long microseconds) { + public Tracer.SpanBuilder withStartTimestamp(long startTime) { + this.startTime = startTime; return this; } @Override public Span start() { - return new SkyWalkingSpan(); + return new SkyWalkingSpan(this.operationName, this.startTime, this.tags); } @Override public Iterable> baggageItems() { - return null; + return parentContext == null + ? Collections.emptyMap().entrySet() + : parentContext.baggageItems(); } } diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java index 8b1aa7968..4f91b3a1d 100644 --- a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java +++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java @@ -5,6 +5,10 @@ import io.opentracing.Tracer; import io.opentracing.propagation.Format; /** + * All source code in SkyWalkingTracer acts like an NoopTracer. + * Actually, it is NOT. + * The whole logic will be added after toolkit-activation. + * * Created by wusheng on 2016/12/20. */ public class SkyWalkingTracer implements Tracer{