Add Tomcat span, and singleTrace mock.
This commit is contained in:
parent
69877b80fd
commit
96f6c5fad9
|
|
@ -171,7 +171,7 @@ public final class TracerContext {
|
|||
/**
|
||||
* Clear the given {@link TracerContextListener}
|
||||
*/
|
||||
static synchronized void remove(TracerContextListener listener){
|
||||
public static synchronized void remove(TracerContextListener listener){
|
||||
listeners.remove(listener);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,4 +48,14 @@ public class MockTracerContextListener implements TracerContextListener {
|
|||
public void clear(){
|
||||
finishedTraceSegments.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get {@link TraceSegment} of the given index.
|
||||
* @param index
|
||||
* @return
|
||||
*/
|
||||
public TraceSegment getFinished(int index){
|
||||
assertSize(index + 1);
|
||||
return finishedTraceSegments.get(index);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
package com.a.eye.skywalking.sniffer.mock.trace;
|
||||
|
||||
import com.a.eye.skywalking.sniffer.mock.context.MockTracerContextListener;
|
||||
import com.a.eye.skywalking.trace.TraceSegment;
|
||||
|
||||
/**
|
||||
* Created by wusheng on 2017/2/20.
|
||||
*/
|
||||
public interface TraceSegmentBuilder {
|
||||
TraceSegment build();
|
||||
TraceSegment build(MockTracerContextListener listener);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package com.a.eye.skywalking.sniffer.mock.trace;
|
||||
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.builders.SingleTomcat200TraceBuilder;
|
||||
import com.a.eye.skywalking.api.context.TracerContext;
|
||||
import com.a.eye.skywalking.sniffer.mock.context.MockTracerContextListener;
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.builders.trace.SingleTomcat200TraceBuilder;
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.builders.trace.SingleTomcat404TraceBuilder;
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.builders.trace.SingleTomcat500TraceBuilder;
|
||||
import com.a.eye.skywalking.trace.TraceSegment;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* The <code>TraceSegmentBuilderFactory</code> contains all {@link TraceSegmentBuilder} implementations.
|
||||
|
|
@ -14,22 +16,41 @@ import java.util.Map;
|
|||
public enum TraceSegmentBuilderFactory {
|
||||
INSTANCE;
|
||||
|
||||
private Map<String, TraceSegmentBuilder> allBuilders;
|
||||
|
||||
TraceSegmentBuilderFactory(){
|
||||
allBuilders = new HashMap<String, TraceSegmentBuilder>();
|
||||
initialize();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link SingleTomcat200TraceBuilder}
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public TraceSegment singleTomcat200Trace(){
|
||||
return allBuilders.get(SingleTomcat200TraceBuilder.INSTANCE).build();
|
||||
return this.build(SingleTomcat200TraceBuilder.INSTANCE);
|
||||
}
|
||||
|
||||
private void initialize(){
|
||||
initBuilder(SingleTomcat200TraceBuilder.INSTANCE);
|
||||
/**
|
||||
* @see {@link SingleTomcat404TraceBuilder}
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public TraceSegment singleTomcat404Trace(){
|
||||
return this.build(SingleTomcat404TraceBuilder.INSTANCE);
|
||||
}
|
||||
|
||||
private void initBuilder(TraceSegmentBuilder builder){
|
||||
allBuilders.put(builder.toString(), builder);
|
||||
/**
|
||||
* @see {@link SingleTomcat500TraceBuilder}
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public TraceSegment singleTomcat500Trace(){
|
||||
return this.build(SingleTomcat500TraceBuilder.INSTANCE);
|
||||
}
|
||||
|
||||
private TraceSegment build(TraceSegmentBuilder builder){
|
||||
MockTracerContextListener listener = new MockTracerContextListener();
|
||||
try{
|
||||
TracerContext.ListenerManager.add(listener);
|
||||
return builder.build(listener);
|
||||
}finally{
|
||||
TracerContext.ListenerManager.remove(listener);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package com.a.eye.skywalking.sniffer.mock.trace.builders.span;
|
||||
|
||||
import com.a.eye.skywalking.api.context.ContextManager;
|
||||
import com.a.eye.skywalking.trace.Span;
|
||||
import com.a.eye.skywalking.trace.tag.Tags;
|
||||
|
||||
/**
|
||||
* The <code>TomcatSpanGenerator</code> generate all possible spans, by tracing Tomcat.
|
||||
*
|
||||
* Created by wusheng on 2017/2/20.
|
||||
*/
|
||||
public enum TomcatSpanGenerator {
|
||||
INSTANCE;
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.a.eye.skywalking.sniffer.mock.trace.builders.trace;
|
||||
|
||||
import com.a.eye.skywalking.sniffer.mock.context.MockTracerContextListener;
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.TraceSegmentBuilder;
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.builders.span.TomcatSpanGenerator;
|
||||
import com.a.eye.skywalking.trace.TraceSegment;
|
||||
|
||||
/**
|
||||
* 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(MockTracerContextListener listener) {
|
||||
TomcatSpanGenerator.INSTANCE.on200();
|
||||
return listener.getFinished(0);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.a.eye.skywalking.sniffer.mock.trace.builders.trace;
|
||||
|
||||
import com.a.eye.skywalking.sniffer.mock.context.MockTracerContextListener;
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.TraceSegmentBuilder;
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.builders.span.TomcatSpanGenerator;
|
||||
import com.a.eye.skywalking.trace.TraceSegment;
|
||||
|
||||
/**
|
||||
* A Trace contains only one span, which represent a tomcat server side span.
|
||||
*
|
||||
* Created by wusheng on 2017/2/20.
|
||||
*/
|
||||
public enum SingleTomcat404TraceBuilder implements TraceSegmentBuilder {
|
||||
INSTANCE;
|
||||
|
||||
@Override public TraceSegment build(MockTracerContextListener listener) {
|
||||
TomcatSpanGenerator.INSTANCE.on404();
|
||||
return listener.getFinished(0);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.a.eye.skywalking.sniffer.mock.trace.builders.trace;
|
||||
|
||||
import com.a.eye.skywalking.sniffer.mock.context.MockTracerContextListener;
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.TraceSegmentBuilder;
|
||||
import com.a.eye.skywalking.sniffer.mock.trace.builders.span.TomcatSpanGenerator;
|
||||
import com.a.eye.skywalking.trace.TraceSegment;
|
||||
|
||||
/**
|
||||
* A Trace contains only one span, which represent a tomcat server side span.
|
||||
*
|
||||
* Created by wusheng on 2017/2/20.
|
||||
*/
|
||||
public enum SingleTomcat500TraceBuilder implements TraceSegmentBuilder {
|
||||
INSTANCE;
|
||||
|
||||
@Override public TraceSegment build(MockTracerContextListener listener) {
|
||||
TomcatSpanGenerator.INSTANCE.on500();
|
||||
return listener.getFinished(0);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue