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

3
import java.lang.reflect.Field;
4 5
import org.junit.Assert;
import org.junit.Test;
6 7
import org.skywalking.apm.trace.tag.BooleanTagReader;
import org.skywalking.apm.trace.tag.StringTagReader;
P
pengys5 已提交
8 9 10
import org.skywalking.apm.trace.tag.Tags;

import java.util.List;
11 12 13 14 15 16 17 18 19

/**
 * Created by wusheng on 2017/2/18.
 */
public class SpanTestCase {
    @Test
    public void testConstructors() {
        Span span1 = new Span(0, "serviceA");
        Span span2 = new Span(2, span1, "serviceA");
wu-sheng's avatar
wu-sheng 已提交
20 21
        span2.setOperationName("serviceA-2");
        Assert.assertEquals("serviceA-2", span2.getOperationName());
22 23 24 25 26 27 28 29 30

        Assert.assertEquals(-1, span1.getParentSpanId());
        Assert.assertEquals(0, span2.getParentSpanId());
        Assert.assertTrue(span1.getStartTime() > 0);
        Assert.assertTrue(span2.getStartTime() > 0);
    }

    @Test
    public void testFinish() {
31
        TraceSegment owner = new TraceSegment("billing_app");
32 33 34 35 36 37 38 39 40 41 42 43 44

        Span span1 = new Span(0, "serviceA");

        Assert.assertTrue(span1.getEndTime() == 0);

        span1.finish(owner);
        Assert.assertEquals(span1, owner.getSpans().get(0));
        Assert.assertTrue(span1.getEndTime() > 0);
    }

    @Test
    public void testSetTag() {
        Span span1 = new Span(0, "serviceA");
wu-sheng's avatar
wu-sheng 已提交
45
        Tags.SPAN_LAYER.asHttp(span1);
46
        Tags.COMPONENT.set(span1, "Spring");
wu-sheng's avatar
wu-sheng 已提交
47
        span1.setPeer_host("127.0.0.1");
48
        Tags.ERROR.set(span1, true);
49 50 51
        Tags.STATUS_CODE.set(span1, 302);
        Tags.URL.set(span1, "http://127.0.0.1/serviceA");
        Tags.DB_STATEMENT.set(span1, "select * from users");
52

53
        Assert.assertEquals("http", StringTagReader.get(span1, Tags.SPAN_LAYER.SPAN_LAYER_TAG));
wu-sheng's avatar
wu-sheng 已提交
54
        Assert.assertEquals("127.0.0.1", span1.getPeerHost());
55
        Assert.assertTrue(BooleanTagReader.get(span1, Tags.ERROR));
56 57
    }

58
    @Test
59
    public void testLogException() throws NoSuchFieldException, IllegalAccessException {
60 61 62
        Span span1 = new Span(0, "serviceA");
        Exception exp = new Exception("exception msg");
        span1.log(exp);
63 64 65 66

        Field logsField = Span.class.getDeclaredField("logs");
        logsField.setAccessible(true);
        List<LogData> logs = (List<LogData>)logsField.get(span1);
67 68 69 70 71

        Assert.assertEquals("java.lang.Exception", logs.get(0).getFields().get("error.kind"));
        Assert.assertEquals("exception msg", logs.get(0).getFields().get("message"));
        Assert.assertNotNull(logs.get(0).getFields().get("stack"));
    }
72
}