From 9dc2fcbcbe75e592e89b8b28cf4cab795f085996 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Wed, 20 Sep 2017 19:00:51 +0800 Subject: [PATCH] support new api of context carrier --- .../network/trace/component/ComponentsDefine.java | 2 +- .../apm/plugin/struts2/Struts2Interceptor.java | 12 +++++++++--- .../apm/plugin/struts2/Struts2InterceptorTest.java | 5 +++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java index b6e4d8e9f..80affad29 100644 --- a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java +++ b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java @@ -33,7 +33,7 @@ public class ComponentsDefine { public static final OfficialComponent SPRING_REST_TEMPLATE = new OfficialComponent(13, "SpringRestTemplate"); - public static final OfficialComponent SPRING_MVC_ANNOTATION = new OfficialComponent(14, "SpringMVCAnnotation"); + public static final OfficialComponent SPRING_MVC_ANNOTATION = new OfficialComponent(14, "SpringMVC"); public static final OfficialComponent STRUTS2 = new OfficialComponent(14, "Struts2"); diff --git a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/main/java/org/skywalking/apm/plugin/struts2/Struts2Interceptor.java b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/main/java/org/skywalking/apm/plugin/struts2/Struts2Interceptor.java index 189a587ef..ffa257f18 100644 --- a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/main/java/org/skywalking/apm/plugin/struts2/Struts2Interceptor.java +++ b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/main/java/org/skywalking/apm/plugin/struts2/Struts2Interceptor.java @@ -4,7 +4,7 @@ import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; -import org.skywalking.apm.agent.core.conf.Config; +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.context.tag.Tags; @@ -20,8 +20,14 @@ public class Struts2Interceptor implements InstanceMethodsAroundInterceptor { public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { HttpServletRequest request = ServletActionContext.getRequest(); - String tracingHeaderValue = request.getHeader(Config.Plugin.Propagation.HEADER_NAME); - ContextCarrier contextCarrier = new ContextCarrier().deserialize(tracingHeaderValue); + ContextCarrier contextCarrier = new ContextCarrier(); + + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); + next.setHeadValue(request.getHeader(next.getHeadKey())); + } + AbstractSpan span = ContextManager.createEntrySpan(request.getRequestURI(), contextCarrier); Tags.URL.set(span, request.getRequestURL().toString()); Tags.HTTP.METHOD.set(span, request.getMethod()); diff --git a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/test/java/org/skywalking/apm/plugin/struts2/Struts2InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/test/java/org/skywalking/apm/plugin/struts2/Struts2InterceptorTest.java index 1d3f57d66..5d018534f 100644 --- a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/test/java/org/skywalking/apm/plugin/struts2/Struts2InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/test/java/org/skywalking/apm/plugin/struts2/Struts2InterceptorTest.java @@ -16,6 +16,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest; 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; @@ -106,7 +107,7 @@ public class Struts2InterceptorTest { @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.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); struts2Interceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); struts2Interceptor.afterMethod(enhancedInstance, null, arguments, argumentType, null); @@ -138,7 +139,7 @@ public class Struts2InterceptorTest { 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.234.111")); } private void assertHttpSpan(AbstractTracingSpan span) {