TraceSegmentTestCase.java 3.7 KB
Newer Older
P
pengys5 已提交
1
package org.skywalking.apm.trace;
2

3 4
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
5 6
import org.junit.Assert;
import org.junit.Test;
P
pengys5 已提交
7
import org.skywalking.apm.trace.tag.Tags;
8 9 10 11 12 13

/**
 * Created by wusheng on 2017/2/18.
 */
public class TraceSegmentTestCase {
    @Test
wu-sheng's avatar
wu-sheng 已提交
14
    public void testConstructor() {
15
        TraceSegment segment = new TraceSegment("billing_app");
16

17
        Assert.assertTrue(segment.getTraceSegmentId().startsWith("Segment"));
18
        Assert.assertTrue(segment.getStartTime() > 0);
19
        Assert.assertEquals("billing_app", segment.getApplicationCode());
20 21 22
    }

    @Test
wu-sheng's avatar
wu-sheng 已提交
23
    public void testRef() {
24
        TraceSegment segment = new TraceSegment("billing_app");
25 26 27 28

        TraceSegmentRef ref1 = new TraceSegmentRef();
        ref1.setTraceSegmentId("parent_trace_0");
        ref1.setSpanId(1);
29
        segment.ref(ref1);
30 31 32 33

        TraceSegmentRef ref2 = new TraceSegmentRef();
        ref2.setTraceSegmentId("parent_trace_1");
        ref2.setSpanId(5);
34
        segment.ref(ref2);
35 36

        TraceSegmentRef ref3 = new TraceSegmentRef();
37
        ref3.setTraceSegmentId("parent_trace_3");
38
        ref3.setSpanId(5);
39
        segment.ref(ref3);
40

41 42 43
        Assert.assertEquals(ref1, segment.getRefs().get(0));
        Assert.assertEquals(ref2, segment.getRefs().get(1));
        Assert.assertEquals(ref3, segment.getRefs().get(2));
44

45 46
        Assert.assertEquals("parent_trace_0", segment.getRefs().get(0).getTraceSegmentId());
        Assert.assertEquals(1, segment.getRefs().get(0).getSpanId());
47 48 49
    }

    @Test
wu-sheng's avatar
wu-sheng 已提交
50
    public void testArchiveSpan() {
51
        TraceSegment segment = new TraceSegment("billing_app");
52 53 54 55 56 57 58 59 60 61 62
        Span span1 = new Span(1, "/serviceA");
        segment.archive(span1);

        Span span2 = new Span(2, "/db/sql");
        segment.archive(span2);

        Assert.assertEquals(span1, segment.getSpans().get(0));
        Assert.assertEquals(span2, segment.getSpans().get(1));
    }

    @Test
wu-sheng's avatar
wu-sheng 已提交
63
    public void testFinish() {
64
        TraceSegment segment = new TraceSegment("billing_app");
65 66 67 68 69

        Assert.assertTrue(segment.getEndTime() == 0);
        segment.finish();
        Assert.assertTrue(segment.getEndTime() > 0);
    }
wu-sheng's avatar
wu-sheng 已提交
70 71 72

    @Test
    public void testSerialize() {
73
        TraceSegment segment = new TraceSegment("billing_app");
wu-sheng's avatar
wu-sheng 已提交
74 75 76 77

        TraceSegmentRef ref1 = new TraceSegmentRef();
        ref1.setTraceSegmentId("parent_trace_0");
        ref1.setSpanId(1);
78 79
        ref1.setApplicationCode("REMOTE_APP");
        ref1.setPeerHost("10.2.3.16:8080");
80
        segment.ref(ref1);
wu-sheng's avatar
wu-sheng 已提交
81 82 83 84

        TraceSegmentRef ref2 = new TraceSegmentRef();
        ref2.setTraceSegmentId("parent_trace_1");
        ref2.setSpanId(5);
85 86
        ref2.setApplicationCode("REMOTE_APP");
        ref2.setPeerHost("10.2.3.16:8080");
87
        segment.ref(ref2);
wu-sheng's avatar
wu-sheng 已提交
88 89

        TraceSegmentRef ref3 = new TraceSegmentRef();
90
        ref3.setTraceSegmentId("parent_trace_2");
wu-sheng's avatar
wu-sheng 已提交
91
        ref3.setSpanId(5);
92 93
        ref3.setApplicationCode("REMOTE_APP");
        ref3.setPeerHost("10.2.3.16:8080");
94
        segment.ref(ref3);
wu-sheng's avatar
wu-sheng 已提交
95 96 97 98 99 100

        Span span1 = new Span(1, "/serviceA");
        Tags.SPAN_LAYER.asHttp(span1);
        segment.archive(span1);

        Span span2 = new Span(2, span1, "/db/sql");
Z
zhangxin 已提交
101
        Tags.SPAN_LAYER.asDB(span2);
wu-sheng's avatar
wu-sheng 已提交
102 103 104
        span2.log(new NullPointerException());
        segment.archive(span2);

105 106 107 108
        Gson gson = new GsonBuilder()
            .excludeFieldsWithoutExposeAnnotation()
            .create();

109 110 111
        SegmentsMessage message = new SegmentsMessage();
        message.append(segment);

112 113
        String jsonString = message.serialize(gson);
        int length = Integer.parseInt(jsonString.substring(0, 4));
114

115
        String segmentJson = jsonString.substring(5);
wu-sheng's avatar
wu-sheng 已提交
116

117 118
        Assert.assertEquals(length, segmentJson.length());

119
        System.out.println(segmentJson);
wu-sheng's avatar
wu-sheng 已提交
120
    }
121
}