package org.skywalking.apm.agent.core.context; import org.junit.Assert; import org.junit.Test; import org.skywalking.apm.trace.TraceId.DistributedTraceId; import org.skywalking.apm.trace.TraceId.PropagatedTraceId; import java.util.LinkedList; import java.util.List; /** * Created by wusheng on 2017/2/19. */ public class ContextCarrierTestCase { @Test public void testSerialize() { ContextCarrier carrier = new ContextCarrier(); carrier.setTraceSegmentId("trace_id_A"); carrier.setSpanId(100); carrier.setApplicationCode("REMOTE_APP"); carrier.setPeerHost("10.2.3.16:8080"); carrier.setSampled(true); List<DistributedTraceId> ids = new LinkedList<DistributedTraceId>(); ids.add(new PropagatedTraceId("Trace.global.id.123")); carrier.setDistributedTraceIds(ids); Assert.assertEquals("trace_id_A|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123|1", carrier.serialize()); } @Test public void testDeserialize() { ContextCarrier carrier = new ContextCarrier(); carrier.deserialize("trace_id_A|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123,Trace.global.id.222|1"); Assert.assertEquals("trace_id_A", carrier.getTraceSegmentId()); Assert.assertEquals(100, carrier.getSpanId()); Assert.assertEquals("REMOTE_APP", carrier.getApplicationCode()); Assert.assertEquals("10.2.3.16:8080", carrier.getPeerHost()); Assert.assertEquals("Trace.global.id.123", carrier.getDistributedTraceIds().get(0).get()); Assert.assertEquals("Trace.global.id.222", carrier.getDistributedTraceIds().get(1).get()); Assert.assertEquals(true, carrier.isSampled()); } @Test public void testIllegalDeserialize() { ContextCarrier carrier = new ContextCarrier(); carrier.deserialize("abcde"); Assert.assertFalse(carrier.isValid()); carrier = new ContextCarrier(); carrier.deserialize("trace_id|-100"); Assert.assertFalse(carrier.isValid()); carrier = new ContextCarrier(); carrier.deserialize("trace_id|illegal-spanid"); Assert.assertFalse(carrier.isValid()); carrier = new ContextCarrier(); carrier.deserialize("trace_id|100|other-illegal"); Assert.assertFalse(carrier.isValid()); carrier = new ContextCarrier(); carrier.deserialize("trace_id|100|REMOTE_APP|10.2.3.16:8080"); Assert.assertFalse(carrier.isValid()); carrier = new ContextCarrier(); carrier.deserialize("trace_id|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123,Trace.global.id.222"); Assert.assertFalse(carrier.isValid()); carrier = new ContextCarrier(); carrier.deserialize("trace_id|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123,Trace.global.id.222|0"); Assert.assertTrue(carrier.isValid()); } }