SpanTestCase.java 2.7 KB
Newer Older
1
package org.skywalking.apm.agent.core.context.trace;
2

3
import java.util.List;
4 5
import org.junit.Assert;
import org.junit.Test;
6 7 8
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
9
import org.skywalking.apm.agent.core.context.tag.Tags;
10 11 12 13
import org.skywalking.apm.agent.core.context.util.KeyValuePair;
import org.skywalking.apm.agent.core.context.util.KeyValuePairReader;
import org.skywalking.apm.agent.core.context.util.TraceSegmentHelper;
import org.skywalking.apm.agent.core.dictionary.ApplicationDictionary;
14

15 16
@RunWith(PowerMockRunner.class)
@PrepareForTest(ApplicationDictionary.class)
17
public class SpanTestCase {
18

19 20
    @Test
    public void testConstructors() {
21 22
        AbstractTracingSpan span1 = new LocalSpan(0, -1, "serviceA");
        AbstractTracingSpan span2 = new LocalSpan(1, 0, "serviceA");
wu-sheng's avatar
wu-sheng 已提交
23
        span2.setOperationName("serviceA-2");
24 25
        span1.start();
        span2.start();
wu-sheng's avatar
wu-sheng 已提交
26
        Assert.assertEquals("serviceA-2", span2.getOperationName());
27

28 29 30 31
        Assert.assertEquals(-1, span1.parentSpanId);
        Assert.assertEquals(0, span2.parentSpanId);
        Assert.assertTrue(span1.startTime > 0);
        Assert.assertTrue(span2.startTime > 0);
32 33 34 35
    }

    @Test
    public void testFinish() {
36
        TraceSegment owner = new TraceSegment();
37

38
        AbstractTracingSpan span1 = new LocalSpan(0, -1, "serviceA");
39

40
        Assert.assertTrue(span1.endTime == 0);
41 42

        span1.finish(owner);
43 44
        Assert.assertEquals(span1, TraceSegmentHelper.getSpans(owner).get(0));
        Assert.assertTrue(span1.endTime > 0);
45 46 47 48
    }

    @Test
    public void testSetTag() {
49 50 51 52 53
        AbstractTracingSpan span1 = new LocalSpan(0, -1, "serviceA");
        SpanLayer.asHttp(span1);
        span1.setComponent("Spring");
        span1.errorOccurred();
        Tags.STATUS_CODE.set(span1, "505");
54 55
        Tags.URL.set(span1, "http://127.0.0.1/serviceA");
        Tags.DB_STATEMENT.set(span1, "select * from users");
56

57 58
        Assert.assertEquals(SpanLayer.HTTP, span1.layer);
        Assert.assertTrue(span1.errorOccurred);
59 60
    }

61
    @Test
62
    public void testLogException() throws NoSuchFieldException, IllegalAccessException {
63
        AbstractTracingSpan span1 = new LocalSpan(0, -1, "serviceA");
64 65
        Exception exp = new Exception("exception msg");
        span1.log(exp);
66

67 68
        LogDataEntity logs = span1.logs.get(0);
        List<KeyValuePair> keyValuePairs = logs.getLogs();
69

70 71 72
        Assert.assertEquals("java.lang.Exception", KeyValuePairReader.get(keyValuePairs, "error.kind"));
        Assert.assertEquals("exception msg", KeyValuePairReader.get(keyValuePairs, "message"));
        Assert.assertNotNull(KeyValuePairReader.get(keyValuePairs, "stack"));
73
    }
74
}