fix issue
This commit is contained in:
parent
d1f320a0e8
commit
8c5b1e8cb8
|
|
@ -54,11 +54,11 @@ public class DubboInterceptor implements InstanceMethodsAroundInterceptor {
|
|||
Span span = ContextManager.INSTANCE.createSpan(generateOperationName(requestURL, invocation));
|
||||
Tags.URL.set(span, generateRequestURL(requestURL, invocation));
|
||||
Tags.COMPONENT.set(span, DUBBO_COMPONENT);
|
||||
Tags.PEER_HOST.set(span, requestURL.getHost());
|
||||
Tags.PEER_PORT.set(span, requestURL.getPort());
|
||||
Tags.SPAN_LAYER.asRPCFramework(span);
|
||||
|
||||
if (isConsumer) {
|
||||
Tags.PEER_HOST.set(span, requestURL.getHost());
|
||||
Tags.PEER_PORT.set(span, requestURL.getPort());
|
||||
Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT);
|
||||
ContextCarrier contextCarrier = new ContextCarrier();
|
||||
ContextManager.INSTANCE.inject(contextCarrier);
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import org.apache.http.StatusLine;
|
|||
*/
|
||||
public class HttpClientExecuteInterceptor implements InstanceMethodsAroundInterceptor {
|
||||
public static final String HEADER_NAME_OF_CONTEXT_DATA = "SWTraceContext";
|
||||
private static final String COMPONENT_NAME = "Http";
|
||||
private static final String COMPONENT_NAME = "HttpClient";
|
||||
|
||||
@Override
|
||||
public void beforeMethod(EnhancedClassInstanceContext context,
|
||||
|
|
@ -56,7 +56,7 @@ public class HttpClientExecuteInterceptor implements InstanceMethodsAroundInterc
|
|||
* @return request URL
|
||||
*/
|
||||
private String generateURL(HttpHost httpHost, HttpRequest httpRequest) {
|
||||
return httpHost.getSchemeName() + "://" + httpHost.getHostName() + ":" + httpHost.getPort() + httpRequest.getRequestLine().getUri();
|
||||
return httpRequest.getRequestLine().getUri();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,40 +0,0 @@
|
|||
package com.a.eye.skywalking.plugin.motan;
|
||||
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.EnhancedClassInstanceContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodInvokeContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.MethodInterceptResult;
|
||||
|
||||
/**
|
||||
* {@link MotanConsumerFetchRequestURLInterceptor} record {@link com.weibo.api.motan.rpc.URL} to {@link EnhancedClassInstanceContext#context}
|
||||
* for the operation name that create span need.
|
||||
*
|
||||
* @author zhangxin
|
||||
*/
|
||||
public class MotanConsumerFetchRequestURLInterceptor implements InstanceMethodsAroundInterceptor {
|
||||
|
||||
private static final String CONTEXT_NAME_OF_REQUEST_URL = "REQUEST_URL";
|
||||
|
||||
/**
|
||||
* Fetch the request url from the first param of all constructor, and put request
|
||||
* url into {@link EnhancedClassInstanceContext#context}.
|
||||
*
|
||||
* @param context instance context, a class instance only has one {@link EnhancedClassInstanceContext} instance.
|
||||
* @param interceptorContext method context, includes class name, method name, etc.
|
||||
* @param result change this result, if you want to truncate the method.
|
||||
*/
|
||||
@Override
|
||||
public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, MethodInterceptResult result) {
|
||||
context.set(CONTEXT_NAME_OF_REQUEST_URL, interceptorContext.allArguments()[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,8 @@ package com.a.eye.skywalking.plugin.motan;
|
|||
import com.a.eye.skywalking.api.context.ContextCarrier;
|
||||
import com.a.eye.skywalking.api.context.ContextManager;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.EnhancedClassInstanceContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.ConstructorInvokeContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceConstructorInterceptor;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodInvokeContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.MethodInterceptResult;
|
||||
|
|
@ -13,37 +15,41 @@ import com.weibo.api.motan.rpc.Response;
|
|||
import com.weibo.api.motan.rpc.URL;
|
||||
|
||||
/**
|
||||
* {@link MotanConsumerInvokeInterceptor} create span by fetch request url from
|
||||
* {@link EnhancedClassInstanceContext#context} and transport serialized context
|
||||
* data to provider side through {@link Request#setAttachment(String, String)}.
|
||||
* Current trace segment will ref the trace segment from previous level if the serialized context data that fetch
|
||||
* from {@link Request#getAttachments()} is not null.
|
||||
*
|
||||
* {@link MotanConsumerInterceptor} intercept all constructor of {@link com.weibo.api.motan.rpc.AbstractProvider} for record
|
||||
* the request url from consumer side.
|
||||
*
|
||||
* @author zhangxin
|
||||
*/
|
||||
public class MotanConsumerInvokeInterceptor implements InstanceMethodsAroundInterceptor {
|
||||
public class MotanConsumerInterceptor implements InstanceConstructorInterceptor, InstanceMethodsAroundInterceptor {
|
||||
|
||||
/**
|
||||
* Context name of request url in {@link EnhancedClassInstanceContext#context}.
|
||||
* The
|
||||
*/
|
||||
private static final String CONTEXT_NAME_OF_REQUEST_URL = "REQUEST_URL";
|
||||
private static final String KEY_NAME_OF_REQUEST_URL = "REQUEST_URL";
|
||||
|
||||
/**
|
||||
* Attachment key of the serialized context data.
|
||||
* The {@link Request#getAttachments()} key. It maps to the serialized {@link ContextCarrier}.
|
||||
*/
|
||||
private static final String ATTACHMENT_KEY_OF_CONTEXT_DATA = "SWTraceContext";
|
||||
|
||||
/**
|
||||
* Motan component
|
||||
*/
|
||||
private static final String MOTAN_COMPONENT = "Motan";
|
||||
|
||||
@Override
|
||||
public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) {
|
||||
context.set(KEY_NAME_OF_REQUEST_URL, interceptorContext.allArguments()[1]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext,
|
||||
MethodInterceptResult result) {
|
||||
URL url = (URL) context.get(CONTEXT_NAME_OF_REQUEST_URL);
|
||||
|
||||
URL url = (URL) context.get(KEY_NAME_OF_REQUEST_URL);
|
||||
com.weibo.api.motan.rpc.Request request = (com.weibo.api.motan.rpc.Request) interceptorContext.allArguments()[0];
|
||||
if (url != null) {
|
||||
Request request = (Request) interceptorContext.allArguments()[0];
|
||||
|
||||
Span span = ContextManager.INSTANCE.createSpan(generateOperationName(url, request));
|
||||
Tags.PEER_HOST.set(span, url.getHost());
|
||||
Tags.PEER_PORT.set(span, url.getPort());
|
||||
|
|
@ -64,10 +70,9 @@ public class MotanConsumerInvokeInterceptor implements InstanceMethodsAroundInte
|
|||
Response response = (Response) ret;
|
||||
if (response != null && response.getException() != null) {
|
||||
Span span = ContextManager.INSTANCE.activeSpan();
|
||||
span.log(response.getException());
|
||||
Tags.ERROR.set(span, true);
|
||||
span.log(response.getException());
|
||||
}
|
||||
|
||||
ContextManager.INSTANCE.stopSpan();
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -79,6 +84,8 @@ public class MotanConsumerInvokeInterceptor implements InstanceMethodsAroundInte
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generate operation name.
|
||||
*
|
||||
|
|
@ -3,8 +3,6 @@ package com.a.eye.skywalking.plugin.motan;
|
|||
import com.a.eye.skywalking.api.context.ContextCarrier;
|
||||
import com.a.eye.skywalking.api.context.ContextManager;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.EnhancedClassInstanceContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.ConstructorInvokeContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceConstructorInterceptor;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodInvokeContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.MethodInterceptResult;
|
||||
|
|
@ -13,56 +11,43 @@ import com.a.eye.skywalking.trace.Span;
|
|||
import com.a.eye.skywalking.trace.tag.Tags;
|
||||
import com.weibo.api.motan.rpc.Request;
|
||||
import com.weibo.api.motan.rpc.Response;
|
||||
import com.weibo.api.motan.rpc.URL;
|
||||
|
||||
/**
|
||||
* Current trace segment will ref the trace segment from previous level if the serialized context data that fetch
|
||||
* from {@link Request#getAttachments()} is not null.
|
||||
*
|
||||
* {@link MotanProviderInterceptor} intercept all constructor of {@link com.weibo.api.motan.rpc.AbstractProvider} for record
|
||||
* the request url from consumer side.
|
||||
* {@link MotanProviderInterceptor} create span by fetch request url from
|
||||
* {@link EnhancedClassInstanceContext#context} and transport serialized context
|
||||
* data to provider side through {@link Request#setAttachment(String, String)}.
|
||||
*
|
||||
* @author zhangxin
|
||||
*/
|
||||
public class MotanProviderInterceptor implements InstanceConstructorInterceptor, InstanceMethodsAroundInterceptor {
|
||||
public class MotanProviderInterceptor implements InstanceMethodsAroundInterceptor {
|
||||
|
||||
/**
|
||||
* The
|
||||
* Context name of request url in {@link EnhancedClassInstanceContext#context}.
|
||||
*/
|
||||
private static final String KEY_NAME_OF_REQUEST_URL = "REQUEST_URL";
|
||||
private static final String CONTEXT_NAME_OF_REQUEST_URL = "REQUEST_URL";
|
||||
|
||||
/**
|
||||
* The {@link Request#getAttachments()} key. It maps to the serialized {@link ContextCarrier}.
|
||||
* Attachment key of the serialized context data.
|
||||
*/
|
||||
private static final String ATTACHMENT_KEY_OF_CONTEXT_DATA = "SWTraceContext";
|
||||
|
||||
/**
|
||||
* Motan component
|
||||
*/
|
||||
private static final String MOTAN_COMPONENT = "Motan";
|
||||
|
||||
@Override
|
||||
public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) {
|
||||
context.set(KEY_NAME_OF_REQUEST_URL, interceptorContext.allArguments()[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext,
|
||||
MethodInterceptResult result) {
|
||||
URL url = (URL) context.get(KEY_NAME_OF_REQUEST_URL);
|
||||
if (url != null) {
|
||||
com.weibo.api.motan.rpc.Request request = (com.weibo.api.motan.rpc.Request) interceptorContext.allArguments()[0];
|
||||
Span span = ContextManager.INSTANCE.createSpan(generateViewPoint(request));
|
||||
Tags.COMPONENT.set(span, MOTAN_COMPONENT);
|
||||
Tags.URL.set(span, url.getIdentity());
|
||||
Tags.PEER_PORT.set(span, url.getPort());
|
||||
Tags.PEER_HOST.set(span, url.getHost());
|
||||
Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER);
|
||||
Tags.SPAN_LAYER.asRPCFramework(span);
|
||||
Request request = (Request) interceptorContext.allArguments()[0];
|
||||
Span span = ContextManager.INSTANCE.createSpan(generateViewPoint(request));
|
||||
Tags.COMPONENT.set(span, MOTAN_COMPONENT);
|
||||
Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER);
|
||||
Tags.SPAN_LAYER.asRPCFramework(span);
|
||||
|
||||
String serializedContextData = request.getAttachments().get(ATTACHMENT_KEY_OF_CONTEXT_DATA);
|
||||
if (!StringUtil.isEmpty(serializedContextData)) {
|
||||
ContextManager.INSTANCE.extract(new ContextCarrier().deserialize(serializedContextData));
|
||||
}
|
||||
String serializedContextData = request.getAttachments().get(ATTACHMENT_KEY_OF_CONTEXT_DATA);
|
||||
if (!StringUtil.isEmpty(serializedContextData)) {
|
||||
ContextManager.INSTANCE.extract(new ContextCarrier().deserialize(serializedContextData));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -72,9 +57,10 @@ public class MotanProviderInterceptor implements InstanceConstructorInterceptor,
|
|||
Response response = (Response) ret;
|
||||
if (response != null && response.getException() != null) {
|
||||
Span span = ContextManager.INSTANCE.activeSpan();
|
||||
Tags.ERROR.set(span, true);
|
||||
span.log(response.getException());
|
||||
Tags.ERROR.set(span, true);
|
||||
}
|
||||
|
||||
ContextManager.INSTANCE.stopSpan();
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -92,5 +78,4 @@ public class MotanProviderInterceptor implements InstanceConstructorInterceptor,
|
|||
viewPoint.append("(" + request.getParamtersDesc() + ")");
|
||||
return viewPoint.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,7 @@ package com.a.eye.skywalking.plugin.motan.define;
|
|||
import com.a.eye.skywalking.api.plugin.interceptor.ConstructorInterceptPoint;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.InstanceMethodsInterceptPoint;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
|
||||
import com.a.eye.skywalking.plugin.motan.MotanConsumerFetchRequestURLInterceptor;
|
||||
import com.a.eye.skywalking.plugin.motan.MotanConsumerInvokeInterceptor;
|
||||
import com.a.eye.skywalking.plugin.motan.MotanProviderInterceptor;
|
||||
import com.weibo.api.motan.rpc.Request;
|
||||
import com.weibo.api.motan.rpc.URL;
|
||||
|
||||
|
|
@ -15,19 +14,17 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
|
||||
/**
|
||||
* {@link MotanConsumerInstrumentation} presents that skywalking intercept
|
||||
* {@link com.weibo.api.motan.cluster.support.ClusterSpi#call(Request)} by using {@link MotanConsumerInvokeInterceptor} and
|
||||
* intercept {@link com.weibo.api.motan.cluster.support.ClusterSpi#setUrl(URL)} by using
|
||||
* {@link MotanConsumerFetchRequestURLInterceptor} to intercept{@link MotanConsumerFetchRequestURLInterceptor}.
|
||||
* {@link com.weibo.api.motan.cluster.support.ClusterSpi#call(Request)} by using {@link MotanProviderInterceptor}.
|
||||
*
|
||||
* @author zhangxin
|
||||
*/
|
||||
public class MotanConsumerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {
|
||||
|
||||
private static final String ENHANCE_CLASS = "com.weibo.api.motan.cluster.support.ClusterSpi";
|
||||
private static final String ENHANCE_CLASS = "com.weibo.api.motan.transport.ProviderMessageRouter";
|
||||
|
||||
private static final String FETCH_REQUEST_URL_INTERCEPT_CLASS = "com.a.eye.skywalking.plugin.motan.MotanConsumerFetchRequestURLInterceptor";
|
||||
// private static final String FETCH_REQUEST_URL_INTERCEPT_CLASS = "com.a.eye.skywalking.plugin.motan.MotanConsumerFetchRequestURLInterceptor";
|
||||
|
||||
private static final String INVOKE_INTERCEPT_CLASS = "com.a.eye.skywalking.plugin.motan.MotanConsumerInvokeInterceptor";
|
||||
private static final String INVOKE_INTERCEPT_CLASS = "com.a.eye.skywalking.plugin.motan.MotanProviderInterceptor";
|
||||
|
||||
@Override
|
||||
protected String enhanceClassName() {
|
||||
|
|
@ -42,16 +39,6 @@ public class MotanConsumerInstrumentation extends ClassInstanceMethodsEnhancePlu
|
|||
@Override
|
||||
protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() {
|
||||
return new InstanceMethodsInterceptPoint[]{new InstanceMethodsInterceptPoint() {
|
||||
@Override
|
||||
public ElementMatcher<MethodDescription> getMethodsMatcher() {
|
||||
return named("setUrl");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMethodsInterceptor() {
|
||||
return FETCH_REQUEST_URL_INTERCEPT_CLASS;
|
||||
}
|
||||
}, new InstanceMethodsInterceptPoint() {
|
||||
@Override
|
||||
public ElementMatcher<MethodDescription> getMethodsMatcher() {
|
||||
return named("call");
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.a.eye.skywalking.plugin.motan.define;
|
|||
import com.a.eye.skywalking.api.plugin.interceptor.ConstructorInterceptPoint;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.InstanceMethodsInterceptPoint;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
|
||||
import com.a.eye.skywalking.plugin.motan.MotanProviderInterceptor;
|
||||
import com.a.eye.skywalking.plugin.motan.MotanConsumerInterceptor;
|
||||
import com.weibo.api.motan.rpc.Request;
|
||||
|
||||
import net.bytebuddy.description.method.MethodDescription;
|
||||
|
|
@ -14,7 +14,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
|
||||
/**
|
||||
* {@link MotanProviderInstrumentation} presents that skywalking will use
|
||||
* {@link MotanProviderInterceptor} to intercept
|
||||
* {@link MotanConsumerInterceptor} to intercept
|
||||
* all constructor of {@link com.weibo.api.motan.rpc.AbstractProvider} and
|
||||
* {@link com.weibo.api.motan.rpc.AbstractProvider#call(Request)}.
|
||||
*
|
||||
|
|
@ -25,15 +25,15 @@ public class MotanProviderInstrumentation extends ClassInstanceMethodsEnhancePlu
|
|||
/**
|
||||
* Enhance class.
|
||||
*/
|
||||
private static final String ENHANCE_CLASS = "com.weibo.api.motan.rpc.AbstractProvider";
|
||||
private static final String ENHANCE_CLASS = "com.weibo.api.motan.rpc.AbstractReferer";
|
||||
/**
|
||||
* Class that intercept all constructor of ${@link com.weibo.api.motan.rpc.AbstractProvider}.
|
||||
*/
|
||||
private static final String CONSTRUCTOR_INTERCEPT_CLASS = "com.a.eye.skywalking.plugin.motan.MotanProviderInterceptor";
|
||||
private static final String CONSTRUCTOR_INTERCEPT_CLASS = "com.a.eye.skywalking.plugin.motan.MotanConsumerInterceptor";
|
||||
/**
|
||||
* Class that intercept {@link com.weibo.api.motan.rpc.AbstractProvider#call(Request)}.
|
||||
*/
|
||||
private static final String PROVIDER_INVOKE_INTERCEPT_CLASS = "com.a.eye.skywalking.plugin.motan.MotanProviderInterceptor";
|
||||
private static final String PROVIDER_INVOKE_INTERCEPT_CLASS = "com.a.eye.skywalking.plugin.motan.MotanConsumerInterceptor";
|
||||
|
||||
@Override
|
||||
protected String enhanceClassName() {
|
||||
|
|
|
|||
|
|
@ -1,54 +0,0 @@
|
|||
package com.a.eye.skywalking.plugin.motan;
|
||||
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.EnhancedClassInstanceContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodInvokeContext;
|
||||
import com.weibo.api.motan.rpc.URL;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Matchers;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class MotanConsumerFetchRequestURLInterceptorTest {
|
||||
|
||||
private MotanConsumerFetchRequestURLInterceptor requestURLInterceptor;
|
||||
|
||||
@Mock
|
||||
private EnhancedClassInstanceContext instanceContext;
|
||||
@Mock
|
||||
private InstanceMethodInvokeContext interceptorContext;
|
||||
|
||||
private URL url;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
requestURLInterceptor = new MotanConsumerFetchRequestURLInterceptor();
|
||||
url = URL.valueOf("motan://127.0.0.0.1:34000/com.a.eye.skywalking.test.TestService");
|
||||
|
||||
when(interceptorContext.allArguments()).thenReturn(new Object[]{url});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFetchRequestURL() {
|
||||
requestURLInterceptor.beforeMethod(instanceContext, interceptorContext, null);
|
||||
requestURLInterceptor.afterMethod(instanceContext, interceptorContext, null);
|
||||
|
||||
verify(instanceContext, times(1)).set(Matchers.any(), Matchers.any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFetchRequestURLWithException(){
|
||||
requestURLInterceptor.beforeMethod(instanceContext, interceptorContext, null);
|
||||
requestURLInterceptor.handleMethodException(new RuntimeException(), instanceContext, interceptorContext);
|
||||
requestURLInterceptor.afterMethod(instanceContext, interceptorContext, null);
|
||||
|
||||
verify(instanceContext, times(1)).set(Matchers.any(), Matchers.any());
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.a.eye.skywalking.plugin.motan;
|
|||
import com.a.eye.skywalking.api.context.TracerContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.EnhancedClassInstanceContext;
|
||||
import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodInvokeContext;
|
||||
import com.a.eye.skywalking.plugin.motan.define.MotanConsumerInstrumentation;
|
||||
import com.a.eye.skywalking.sniffer.mock.context.MockTracerContextListener;
|
||||
import com.a.eye.skywalking.sniffer.mock.context.SegmentAssert;
|
||||
import com.a.eye.skywalking.trace.LogData;
|
||||
|
|
@ -32,11 +33,11 @@ import static org.mockito.Mockito.verify;
|
|||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class MotanConsumerInvokeInterceptorTest {
|
||||
public class MotanConsumerInterceptorTest {
|
||||
|
||||
private MockTracerContextListener contextListener;
|
||||
|
||||
private MotanConsumerInvokeInterceptor invokeInterceptor;
|
||||
private MotanConsumerInterceptor invokeInterceptor;
|
||||
@Mock
|
||||
private EnhancedClassInstanceContext instanceContext;
|
||||
@Mock
|
||||
|
|
@ -51,7 +52,7 @@ public class MotanConsumerInvokeInterceptorTest {
|
|||
@Before
|
||||
public void setUp() {
|
||||
contextListener = new MockTracerContextListener();
|
||||
invokeInterceptor = new MotanConsumerInvokeInterceptor();
|
||||
invokeInterceptor = new MotanConsumerInterceptor();
|
||||
url = URL.valueOf("motan://127.0.0.1:34000/com.a.eye.skywalking.test.TestService");
|
||||
|
||||
TracerContext.ListenerManager.add(contextListener);
|
||||
|
|
@ -71,12 +71,6 @@ public class MotanProviderInterceptorTest {
|
|||
when(constructorInvokeContext.allArguments()).thenReturn(new Object[]{url});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFetchRequestURL() {
|
||||
invokeInterceptor.onConstruct(instanceContext, constructorInvokeContext);
|
||||
verify(instanceContext, times(1)).set(Matchers.any(), Matchers.any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvokerWithoutRefSegment() {
|
||||
invokeInterceptor.beforeMethod(instanceContext, interceptorContext, null);
|
||||
|
|
@ -170,10 +164,7 @@ public class MotanProviderInterceptorTest {
|
|||
assertThat(span.getOperationName(), is("com.a.eye.skywalking.test.TestService.test(java.lang.String, java.lang.Object)"));
|
||||
assertThat(Tags.COMPONENT.get(span), is("Motan"));
|
||||
assertThat(Tags.SPAN_KIND.get(span), is(Tags.SPAN_KIND_SERVER));
|
||||
assertThat(Tags.PEER_HOST.get(span), is("127.0.0.1"));
|
||||
assertThat(Tags.PEER_PORT.get(span), is(34000));
|
||||
assertTrue(Tags.SPAN_LAYER.isRPCFramework(span));
|
||||
assertThat(Tags.URL.get(span), is("motan://127.0.0.1:34000/default_rpc/com.a.eye.skywalking.test.TestService/1.0/service"));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue