diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java index f04984fbb..076b6d46e 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java @@ -13,7 +13,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.skywalking.apm.agent.core.context.trace.LogDataEntity; import org.skywalking.apm.agent.core.context.trace.SpanLayer; @@ -91,7 +91,7 @@ public class MotanProviderInterceptorTest { @Test public void testInvokerWithRefSegment() throws Throwable { HashMap attachments = new HashMap(); - attachments.put(Config.Plugin.Propagation.HEADER_NAME, "#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + attachments.put(SW3CarrierItem.HEADER_NAME, "1.123.456|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); when(request.getAttachments()).thenReturn(attachments); invokeInterceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, null); @@ -135,7 +135,7 @@ public class MotanProviderInterceptorTest { } private void assertRefSegment(TraceSegmentRef primaryRef) { - assertThat(SegmentRefHelper.getTraceSegmentId(primaryRef).toString(), is("1.1.15006458883500001")); + assertThat(SegmentRefHelper.getTraceSegmentId(primaryRef).toString(), is("1.123.456")); assertThat(SegmentRefHelper.getSpanId(primaryRef), is(3)); assertThat(SegmentRefHelper.getEntryApplicationInstanceId(primaryRef), is(1)); assertThat(SegmentRefHelper.getPeerHost(primaryRef), is("192.168.1.8:18002")); diff --git a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java index f52879d6a..b26a0fc48 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java @@ -10,7 +10,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.skywalking.apm.agent.core.context.trace.LogDataEntity; import org.skywalking.apm.agent.core.context.trace.SpanLayer; @@ -90,7 +90,7 @@ public class ResinV3InterceptorTest { @Test public void testWithSerializedContextData() throws Throwable { - when(request.getHeader(Config.Plugin.Propagation.HEADER_NAME)).thenReturn("#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(request.getHeader(SW3CarrierItem.HEADER_NAME)).thenReturn("1.333.2345|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); interceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); interceptor.afterMethod(enhancedInstance, null, arguments, argumentType, null); @@ -122,7 +122,7 @@ public class ResinV3InterceptorTest { private void assertTraceSegmentRef(TraceSegmentRef ref) { assertThat(SegmentRefHelper.getSpanId(ref), is(3)); assertThat(SegmentRefHelper.getEntryApplicationInstanceId(ref), is(1)); - assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.1.15006458883500001")); + assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.333.2345")); } private void assertHttpSpan(AbstractTracingSpan span) { diff --git a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java index e46e4365d..233b69e84 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java @@ -10,7 +10,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.skywalking.apm.agent.core.context.trace.LogDataEntity; import org.skywalking.apm.agent.core.context.trace.SpanLayer; @@ -92,7 +92,7 @@ public class ResinV4InterceptorTest { @Test public void testWithSerializedContextData() throws Throwable { - when(request.getHeader(Config.Plugin.Propagation.HEADER_NAME)).thenReturn("#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(request.getHeader(SW3CarrierItem.HEADER_NAME)).thenReturn("1.444.555|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); interceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); interceptor.afterMethod(enhancedInstance, null, arguments, argumentType, null); @@ -124,7 +124,7 @@ public class ResinV4InterceptorTest { private void assertTraceSegmentRef(TraceSegmentRef ref) { assertThat(SegmentRefHelper.getEntryApplicationInstanceId(ref), is(1)); assertThat(SegmentRefHelper.getSpanId(ref), is(3)); - assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.1.15006458883500001")); + assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.444.555")); } private void assertHttpSpan(AbstractTracingSpan span) { diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java index 65df8591d..d2a52d1cd 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java @@ -7,6 +7,7 @@ import java.util.Iterator; import java.util.Map; import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; +import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; @@ -38,8 +39,8 @@ public class SkywalkingTracerExtractInterceptor implements InstanceMethodsAround break; } } - } + ContextManager.extract(contextCarrier); } return new TextMapContext(); } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java index 27df5bc10..475674603 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java @@ -1,17 +1,23 @@ package org.skywalking.apm.toolkit.activation.opentracing; import io.opentracing.Tracer; +import io.opentracing.propagation.Format; +import io.opentracing.propagation.TextMap; import io.opentracing.tag.Tags; import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; -import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextSnapshot; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.skywalking.apm.agent.core.context.ids.ID; import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; @@ -32,14 +38,15 @@ import org.skywalking.apm.toolkit.activation.opentracing.tracer.SkywalkingTracer import org.skywalking.apm.toolkit.opentracing.SkywalkingContinuation; import org.skywalking.apm.toolkit.opentracing.SkywalkingSpan; import org.skywalking.apm.toolkit.opentracing.SkywalkingSpanBuilder; +import org.skywalking.apm.toolkit.opentracing.TextMapContext; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertEntryApplicationInstanceId; import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertPeerHost; import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertSegmentId; -import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertEntryApplicationInstanceId; import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertSpanId; import static org.skywalking.apm.agent.test.tools.SpanAssert.assertComponent; import static org.skywalking.apm.agent.test.tools.SpanAssert.assertLogSize; @@ -167,14 +174,25 @@ public class SkywalkingSpanActivationTest { .withTag(Tags.PEER_HOST_IPV4.getKey(), "127.0.0.1").withTag(Tags.PEER_PORT.getKey(), 8080); startSpan(); - String extractValue = (String)injectInterceptor.afterMethod(enhancedInstance, null, - null, null, null); + final Map values = new HashMap(); + TextMap carrier = new TextMap() { + @Override public Iterator> iterator() { + return null; + } - ContextCarrier contextCarrier = new ContextCarrier().deserialize(extractValue); - assertTrue(contextCarrier.isValid()); - assertThat(contextCarrier.getPeerHost(), is("#127.0.0.1:8080")); - assertThat(contextCarrier.getSpanId(), is(0)); - assertThat(contextCarrier.getEntryOperationName(), is("#testOperationName")); + @Override public void put(String key, String value) { + values.put(key, value); + } + + }; + + injectInterceptor.afterMethod(enhancedInstance, null, + new Object[] {new TextMapContext(), Format.Builtin.TEXT_MAP, carrier}, null, null); + + String[] parts = values.get(SW3CarrierItem.HEADER_NAME).split("\\|", 8); + Assert.assertEquals("0", parts[1]); + Assert.assertEquals("#127.0.0.1:8080", parts[4]); + Assert.assertTrue(new ID(parts[7]).isValid()); stopSpan(); } @@ -183,15 +201,29 @@ public class SkywalkingSpanActivationTest { spanBuilder.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT) .withTag(Tags.PEER_HOST_IPV4.getKey(), "127.0.0.1").withTag(Tags.PEER_PORT.getKey(), 8080); startSpan(); + final Map values = new HashMap(); + TextMap carrier = new TextMap() { + @Override public Iterator> iterator() { + return values.entrySet().iterator(); + } + + @Override public void put(String key, String value) { + values.put(key, value); + } + + }; + + values.put(SW3CarrierItem.HEADER_NAME, "1.343.222|3|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|434.12.12123"); + extractInterceptor.afterMethod(enhancedInstance, null, - new Object[] {"#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"}, new Class[] {String.class}, null); + new Object[] {Format.Builtin.TEXT_MAP, carrier}, new Class[] {}, null); stopSpan(); TraceSegment tracingSegment = assertTraceSemgnets(); List spans = SegmentHelper.getSpans(tracingSegment); assertThat(tracingSegment.getRefs().size(), is(1)); TraceSegmentRef ref = tracingSegment.getRefs().get(0); - assertSegmentId(ref, "1.1.15006458883500001"); + assertSegmentId(ref, "1.343.222"); assertSpanId(ref, 3); assertEntryApplicationInstanceId(ref, 1); assertPeerHost(ref, "127.0.0.1:8080"); @@ -204,8 +236,23 @@ public class SkywalkingSpanActivationTest { spanBuilder.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT) .withTag(Tags.PEER_HOST_IPV4.getKey(), "127.0.0.1").withTag(Tags.PEER_PORT.getKey(), 8080); startSpan(); + + final Map values = new HashMap(); + TextMap carrier = new TextMap() { + @Override public Iterator> iterator() { + return values.entrySet().iterator(); + } + + @Override public void put(String key, String value) { + values.put(key, value); + } + + }; + + values.put(SW3CarrierItem.HEADER_NAME, "aaaaaaaa|3|#192.168.1.8:18002|#/portal/|#/testEntrySpan|1.234.444"); + extractInterceptor.afterMethod(enhancedInstance, null, - new Object[] {"#AQA*#AQA*4WcWe0tQNQA*|3|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"}, new Class[] {String.class}, null); + new Object[] {Format.Builtin.TEXT_MAP, carrier}, new Class[] {}, null); stopSpan(); TraceSegment tracingSegment = assertTraceSemgnets();