From 69877b80fdebf84a7e703d8b9b18e4a047cab1c7 Mon Sep 17 00:00:00 2001 From: wusheng Date: Mon, 20 Feb 2017 22:52:26 +0800 Subject: [PATCH] Give a sample code of the first Mock trace. --- .../mock/trace/TraceSegmentBuilder.java | 10 ++++++ .../trace/TraceSegmentBuilderFactory.java | 35 +++++++++++++++++++ .../builders/SingleTomcat200TraceBuilder.java | 27 ++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/TraceSegmentBuilder.java create mode 100644 skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/TraceSegmentBuilderFactory.java create mode 100644 skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/SingleTomcat200TraceBuilder.java diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/TraceSegmentBuilder.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/TraceSegmentBuilder.java new file mode 100644 index 000000000..57e48fd19 --- /dev/null +++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/TraceSegmentBuilder.java @@ -0,0 +1,10 @@ +package com.a.eye.skywalking.sniffer.mock.trace; + +import com.a.eye.skywalking.trace.TraceSegment; + +/** + * Created by wusheng on 2017/2/20. + */ +public interface TraceSegmentBuilder { + TraceSegment build(); +} diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/TraceSegmentBuilderFactory.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/TraceSegmentBuilderFactory.java new file mode 100644 index 000000000..6714ced0b --- /dev/null +++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/TraceSegmentBuilderFactory.java @@ -0,0 +1,35 @@ +package com.a.eye.skywalking.sniffer.mock.trace; + +import com.a.eye.skywalking.sniffer.mock.trace.builders.SingleTomcat200TraceBuilder; +import com.a.eye.skywalking.trace.TraceSegment; +import java.util.HashMap; +import java.util.Map; + +/** + * The TraceSegmentBuilderFactory contains all {@link TraceSegmentBuilder} implementations. + * All the implementations can build a true {@link TraceSegment} object, and contain all necessary spans, with all tags/events, all refs. + * + * Created by wusheng on 2017/2/20. + */ +public enum TraceSegmentBuilderFactory { + INSTANCE; + + private Map allBuilders; + + TraceSegmentBuilderFactory(){ + allBuilders = new HashMap(); + initialize(); + } + + public TraceSegment singleTomcat200Trace(){ + return allBuilders.get(SingleTomcat200TraceBuilder.INSTANCE).build(); + } + + private void initialize(){ + initBuilder(SingleTomcat200TraceBuilder.INSTANCE); + } + + private void initBuilder(TraceSegmentBuilder builder){ + allBuilders.put(builder.toString(), builder); + } +} diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/SingleTomcat200TraceBuilder.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/SingleTomcat200TraceBuilder.java new file mode 100644 index 000000000..d84eb8d79 --- /dev/null +++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/SingleTomcat200TraceBuilder.java @@ -0,0 +1,27 @@ +package com.a.eye.skywalking.sniffer.mock.trace.builders; + +import com.a.eye.skywalking.api.context.ContextManager; +import com.a.eye.skywalking.sniffer.mock.trace.TraceSegmentBuilder; +import com.a.eye.skywalking.trace.Span; +import com.a.eye.skywalking.trace.TraceSegment; +import com.a.eye.skywalking.trace.tag.Tags; + +/** + * A Trace contains only one span, which represent a tomcat server side span. + * + * Created by wusheng on 2017/2/20. + */ +public enum SingleTomcat200TraceBuilder implements TraceSegmentBuilder { + INSTANCE; + + @Override public TraceSegment build() { + Span webSpan = ContextManager.INSTANCE.createSpan("/web/serviceA"); + { + Tags.COMPONENT.set(webSpan, "tomcat"); + Tags.URL.set(webSpan, "http://10.21.9.35/web/serviceA"); + Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); + Tags.STATUS_CODE.set(webSpan, 200); + } + return null; + } +} -- GitLab