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;
+ }
+}