From 6deb4bb8379645a08c3caa5e39d4043337268aa4 Mon Sep 17 00:00:00 2001 From: wusheng Date: Tue, 28 Feb 2017 15:30:19 +0800 Subject: [PATCH] Alter the TraceSegement build mechanism in sniffer-mock module. --- .../trace/builders/span/SpanGeneration.java | 29 +++++++ .../builders/span/TomcatSpanGenerator.java | 84 +++++++++++-------- .../trace/SingleTomcat200TraceBuilder.java | 2 +- .../trace/SingleTomcat404TraceBuilder.java | 2 +- .../trace/SingleTomcat500TraceBuilder.java | 2 +- 5 files changed, 80 insertions(+), 39 deletions(-) create mode 100644 skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/span/SpanGeneration.java diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/span/SpanGeneration.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/span/SpanGeneration.java new file mode 100644 index 000000000..099c7469b --- /dev/null +++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/span/SpanGeneration.java @@ -0,0 +1,29 @@ +package com.a.eye.skywalking.sniffer.mock.trace.builders.span; + +/** + * Created by wusheng on 2017/2/28. + */ +public abstract class SpanGeneration { + private SpanGeneration next; + + public SpanGeneration build(SpanGeneration next){ + this.next = next; + return next; + } + + public SpanGeneration build(){ + return this; + } + + protected abstract void before(); + + protected abstract void after(); + + public void generate(){ + this.before(); + if(next != null){ + next.generate(); + } + this.after(); + } +} diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java index c9096cf26..78b69ed56 100644 --- a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java +++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java @@ -9,45 +9,57 @@ import com.a.eye.skywalking.trace.tag.Tags; * * Created by wusheng on 2017/2/20. */ -public enum TomcatSpanGenerator { - INSTANCE; +public class TomcatSpanGenerator{ + public static class ON200 extends SpanGeneration{ + public static final ON200 INSTANCE = new ON200(); - /** - * When tomcat response 200. - */ - public void on200(){ - 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); - ContextManager.INSTANCE.stopSpan(webSpan); + @Override protected void before() { + 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); + } + + @Override protected void after() { + Span webSpan = ContextManager.INSTANCE.activeSpan(); + Tags.STATUS_CODE.set(webSpan, 200); + ContextManager.INSTANCE.stopSpan(); + } } - /** - * When tomcat response 404. - */ - public void on404(){ - Span webSpan = ContextManager.INSTANCE.createSpan("/web/service/unknown"); - Tags.COMPONENT.set(webSpan, "tomcat"); - Tags.URL.set(webSpan, "http://10.21.9.35/web/unknown"); - Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); - Tags.STATUS_CODE.set(webSpan, 404); - Tags.ERROR.set(webSpan,true); - ContextManager.INSTANCE.stopSpan(webSpan); - } + public static class ON404 extends SpanGeneration{ + public static final ON404 INSTANCE = new ON404(); - /** - * When tomcat response 500. - */ - public void on500(){ - Span webSpan = ContextManager.INSTANCE.createSpan("/web/error/service"); - Tags.COMPONENT.set(webSpan, "tomcat"); - Tags.URL.set(webSpan, "http://10.21.9.35/web/error/service"); - Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); - Tags.STATUS_CODE.set(webSpan, 500); - Tags.ERROR.set(webSpan,true); - webSpan.log(new NumberFormatException("Can't convert 'abc' to int.")); - ContextManager.INSTANCE.stopSpan(webSpan); + @Override protected void before() { + Span webSpan = ContextManager.INSTANCE.createSpan("/web/service/unknown"); + Tags.COMPONENT.set(webSpan, "tomcat"); + Tags.URL.set(webSpan, "http://10.21.9.35/web/unknown"); + Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); + } + + @Override protected void after() { + Span webSpan = ContextManager.INSTANCE.activeSpan(); + Tags.STATUS_CODE.set(webSpan, 404); + Tags.ERROR.set(webSpan,true); + ContextManager.INSTANCE.stopSpan(); + } + } + public static class ON500 extends SpanGeneration{ + public static final ON500 INSTANCE = new ON500(); + + @Override protected void before() { + Span webSpan = ContextManager.INSTANCE.createSpan("/web/error/service"); + Tags.COMPONENT.set(webSpan, "tomcat"); + Tags.URL.set(webSpan, "http://10.21.9.35/web/error/service"); + Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); + } + + @Override protected void after() { + Span webSpan = ContextManager.INSTANCE.activeSpan(); + Tags.STATUS_CODE.set(webSpan, 500); + Tags.ERROR.set(webSpan,true); + webSpan.log(new NumberFormatException("Can't convert 'abc' to int.")); + ContextManager.INSTANCE.stopSpan(); + } } } diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat200TraceBuilder.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat200TraceBuilder.java index 5812b24de..5b827f701 100644 --- a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat200TraceBuilder.java +++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat200TraceBuilder.java @@ -14,7 +14,7 @@ public enum SingleTomcat200TraceBuilder implements TraceSegmentBuilder { INSTANCE; @Override public TraceSegment build(MockTracerContextListener listener) { - TomcatSpanGenerator.INSTANCE.on200(); + TomcatSpanGenerator.ON200.INSTANCE.build().generate(); return listener.getFinished(0); } } diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat404TraceBuilder.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat404TraceBuilder.java index 7ec32e46e..6000fb1b6 100644 --- a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat404TraceBuilder.java +++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat404TraceBuilder.java @@ -14,7 +14,7 @@ public enum SingleTomcat404TraceBuilder implements TraceSegmentBuilder { INSTANCE; @Override public TraceSegment build(MockTracerContextListener listener) { - TomcatSpanGenerator.INSTANCE.on404(); + TomcatSpanGenerator.ON404.INSTANCE.build().generate(); return listener.getFinished(0); } } diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat500TraceBuilder.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat500TraceBuilder.java index 150c4ab6e..5251f45f9 100644 --- a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat500TraceBuilder.java +++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/trace/builders/trace/SingleTomcat500TraceBuilder.java @@ -14,7 +14,7 @@ public enum SingleTomcat500TraceBuilder implements TraceSegmentBuilder { INSTANCE; @Override public TraceSegment build(MockTracerContextListener listener) { - TomcatSpanGenerator.INSTANCE.on500(); + TomcatSpanGenerator.ON500.INSTANCE.build().generate(); return listener.getFinished(0); } }