Commit 082bcbc2 authored by 吴晟's avatar 吴晟
Browse files

Add two trace segment mock API. 1.Tomcat-> Dubbo 2.Dubbo -> MySQL

parent 52883b8f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>skywalking-sniffer-mock</artifactId>
    <description>This is a sniffer mock module, test for test-dependency, only.</description>
    <description>This is a sniffer mock module. Simulate a sniffer, assemble one or more trace segments. Test-dependency, only.</description>

    <dependencies>
        <dependency>
+16 −3
Original line number Diff line number Diff line
@@ -2,9 +2,11 @@ package com.a.eye.skywalking.sniffer.mock.trace;

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.DubboServerMysqlTraceBuilder;
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.sniffer.mock.trace.builders.trace.TomcatDubboClientTraceBuilder;
import com.a.eye.skywalking.trace.TraceSegment;

/**
@@ -19,7 +21,6 @@ public enum TraceSegmentBuilderFactory {
    /**
     * @see {@link SingleTomcat200TraceBuilder}
     *
     * @return
     */
    public TraceSegment singleTomcat200Trace(){
       return this.build(SingleTomcat200TraceBuilder.INSTANCE);
@@ -28,7 +29,6 @@ public enum TraceSegmentBuilderFactory {
    /**
     * @see {@link SingleTomcat404TraceBuilder}
     *
     * @return
     */
    public TraceSegment singleTomcat404Trace(){
        return this.build(SingleTomcat404TraceBuilder.INSTANCE);
@@ -37,12 +37,25 @@ public enum TraceSegmentBuilderFactory {
    /**
     * @see {@link SingleTomcat500TraceBuilder}
     *
     * @return
     */
    public TraceSegment singleTomcat500Trace(){
        return this.build(SingleTomcat500TraceBuilder.INSTANCE);
    }

    /**
     * @see {@link TomcatDubboClientTraceBuilder}
     */
    public TraceSegment traceOf_Tomcat_DubboClient(){
        return this.build(TomcatDubboClientTraceBuilder.INSTANCE);
    }

    /**
     * @see {@link DubboServerMysqlTraceBuilder}
     */
    public TraceSegment traceOf_DubboServer_MySQL() {
        return this.build(DubboServerMysqlTraceBuilder.INSTANCE);
    }

    private TraceSegment build(TraceSegmentBuilder builder){
        MockTracerContextListener listener = new MockTracerContextListener();
        try{
+44 −0
Original line number Diff line number Diff line
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>DubboSpanGenerator</code> generates all possible spans, by tracing Dubbo rpc.
 * Including client/server side span.
 *
 * @author wusheng
 */
public class DubboSpanGenerator {
    public static class Client extends SpanGeneration{
        @Override protected void before() {
            Span span = ContextManager.INSTANCE.createSpan("/default_rpc/com.a.eye.skywalking.test.persistence.PersistenceService.query");
            Tags.COMPONENT.set(span, "Dubbo");
            Tags.URL.set(span, "rest://192.168.1.8:20880/default_rpc/com.a.eye.skywalking.test.persistence.PersistenceService.query(String)");
            Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER);
            Tags.PEER_HOST.set(span, "192.168.1.8");
            Tags.PEER_PORT.set(span, 20880);
            Tags.SPAN_LAYER.asHttp(span);
        }

        @Override protected void after() {
            ContextManager.INSTANCE.stopSpan();
        }
    }

    public static class Server extends SpanGeneration{
        @Override protected void before() {
            Span span = ContextManager.INSTANCE.createSpan("/default_rpc/com.a.eye.skywalking.test.persistence.PersistenceService.query");
            Tags.COMPONENT.set(span, "Dubbo");
            Tags.URL.set(span, "rest://192.168.1.8:20880/default_rpc/com.a.eye.skywalking.test.persistence.PersistenceService.query(String)");
            Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT);
            Tags.PEER_HOST.set(span, "10.21.9.35");
            Tags.SPAN_LAYER.asHttp(span);
        }

        @Override protected void after() {
            ContextManager.INSTANCE.stopSpan();
        }
    }
}
+30 −0
Original line number Diff line number Diff line
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>MySQLGenerator</code> generates all possible spans, by tracing mysql client access.
 *
 * @author wusheng
 */
public class MySQLGenerator {
    public static class Query extends SpanGeneration {
        @Override protected void before() {
            Span span = ContextManager.INSTANCE.createSpan("mysql/jdbi/statement/executeQuery");
            Tags.COMPONENT.set(span, "Mysql");
            Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT);
            Tags.PEER_HOST.set(span, "10.5.34.18");
            Tags.PEER_PORT.set(span, 30088);
            Tags.DB_INSTANCE.set(span, "mysql-instance");
            Tags.DB_STATEMENT.set(span, "select * from users where user_id = 1");
            Tags.DB_TYPE.set(span, "sql");
            Tags.SPAN_LAYER.asDB(span);
        }

        @Override protected void after() {
            ContextManager.INSTANCE.stopSpan();
        }
    }
}
+10 −6
Original line number Diff line number Diff line
package com.a.eye.skywalking.sniffer.mock.trace.builders.span;

/**
 * Created by wusheng on 2017/2/28.
 * The <code>SpanGeneration</code> implementations can generate several kinds of spans.
 *
 * @author wusheng
 */
public abstract class SpanGeneration {
    private SpanGeneration next;
    private SpanGeneration[] next;

    public SpanGeneration build(SpanGeneration next){
        this.next = next;
        this.next = new SpanGeneration[]{next};
        return next;
    }

    public SpanGeneration build(){
        return this;
    public void build(SpanGeneration... next){
        this.next = next;
    }

    protected abstract void before();
@@ -22,7 +24,9 @@ public abstract class SpanGeneration {
    public void generate(){
        this.before();
        if(next != null){
            next.generate();
            for (SpanGeneration generation : next) {
                generation.generate();
            }
        }
        this.after();
    }
Loading