diff --git a/pom.xml b/pom.xml
index be47a4c73..4c44274e3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -104,6 +104,11 @@
4.8.2
test
+
+ org.mockito
+ mockito-all
+ 1.9.0
+
diff --git a/src/main/java/com/profiler/modifier/tomcat/InvokeMethodInterceptor.java b/src/main/java/com/profiler/modifier/tomcat/InvokeMethodInterceptor.java
index 1bb13dbab..685cf1834 100644
--- a/src/main/java/com/profiler/modifier/tomcat/InvokeMethodInterceptor.java
+++ b/src/main/java/com/profiler/modifier/tomcat/InvokeMethodInterceptor.java
@@ -8,6 +8,7 @@ import com.profiler.context.Annotation;
import com.profiler.context.Header;
import com.profiler.context.Trace;
import com.profiler.context.TraceID;
+import com.profiler.context.tracer.DefaultTracer;
import com.profiler.interceptor.StaticAroundInterceptor;
import com.profiler.trace.RequestTracer;
@@ -22,31 +23,36 @@ public class InvokeMethodInterceptor implements StaticAroundInterceptor {
String traceID = request.getHeader(Header.HTTP_TRACE_ID.toString());
String parentSpanID = request.getHeader(Header.HTTP_PARENT_SPAN_ID.toString());
- String spanID = request.getHeader(Header.HTTP_PARENT_SPAN_ID.toString());
+ String spanID = request.getHeader(Header.HTTP_SPAN_ID.toString());
Boolean sampled = Boolean.valueOf(request.getHeader(Header.HTTP_SAMPLED.toString()));
Integer flags = Integer.valueOf(request.getHeader(Header.HTTP_FLAGS.toString()));
String parameters = getParameter(request);
// record
- // TODO: traceid 유무 확인.
- Trace.setTraceId(new TraceID(traceID, parentSpanID, spanID, sampled, flags));
- Trace.recordRpcName("service_name", requestURL);
+ if (traceID != null) {
+ Trace.setTraceId(new TraceID(traceID, parentSpanID, spanID, sampled, flags));
+ } else {
+ Trace.setTraceId(TraceID.newTraceId());
+ }
+
+ Trace.addTracer(new DefaultTracer());
+
+ Trace.recordRpcName("tomcat", requestURL);
Trace.recordServerAddr(request.getLocalAddr(), request.getLocalPort());
- Trace.recordBinary("http.uri", parameters);
+ Trace.record("Parameter=" + parameters);
Trace.record(new Annotation.ServerRecv());
RequestTracer.startTransaction(requestURL, clientIP, System.currentTimeMillis(), parameters);
} catch (Exception e) {
e.printStackTrace();
- // To change body of catch statement use File | Settings | File
- // Templates.
}
- System.out.println("end--------------");
}
@Override
public void after(Object target, String className, String methodName, Object[] args, Object result) {
+ Trace.record(new Annotation.ServerSend());
+
RequestTracer.endTransaction();
}
diff --git a/src/test/java/com/profiler/modifier/tomcat/InvokeMethodInterceptorTest.java b/src/test/java/com/profiler/modifier/tomcat/InvokeMethodInterceptorTest.java
index aeb63d6ea..1ce771bee 100644
--- a/src/test/java/com/profiler/modifier/tomcat/InvokeMethodInterceptorTest.java
+++ b/src/test/java/com/profiler/modifier/tomcat/InvokeMethodInterceptorTest.java
@@ -1,10 +1,46 @@
package com.profiler.modifier.tomcat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Enumeration;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.junit.Before;
import org.junit.Test;
-public class InvokeMethodInterceptorTest {
- @Test
- public void getURLs() {
+import com.profiler.context.Header;
- }
+public class InvokeMethodInterceptorTest {
+
+ HttpServletRequest request;
+ HttpServletResponse response;
+
+ @Before
+ public void beforeTest() {
+ request = mock(HttpServletRequest.class);
+ response = mock(HttpServletResponse.class);
+
+ when(request.getRequestURI()).thenReturn("/hellotest.nhn");
+ when(request.getRemoteAddr()).thenReturn("10.0.0.1");
+ when(request.getHeader(Header.HTTP_TRACE_ID.toString())).thenReturn("TRACEID");
+ when(request.getHeader(Header.HTTP_PARENT_SPAN_ID.toString())).thenReturn("PARENTSPANID");
+ when(request.getHeader(Header.HTTP_SPAN_ID.toString())).thenReturn("SPANID");
+ when(request.getHeader(Header.HTTP_SAMPLED.toString())).thenReturn("false");
+ when(request.getHeader(Header.HTTP_FLAGS.toString())).thenReturn("0");
+
+ Enumeration> enumeration = mock(Enumeration.class);
+ when(request.getParameterNames()).thenReturn(enumeration);
+ }
+
+ @Test
+ public void doTest() {
+ InvokeMethodInterceptor interceptor = new InvokeMethodInterceptor();
+
+ interceptor.before("target", "classname", "methodname", new Object[] { request, response });
+
+ interceptor.after("target", "classname", "methodname", new Object[] { request, response }, new Object());
+ }
}