From a2994cffa05f7bbba08bcf4bed305cc6ea3fb61e Mon Sep 17 00:00:00 2001 From: Chisu Yu Date: Tue, 28 Aug 2012 06:31:37 +0000 Subject: [PATCH] =?UTF-8?q?[=EC=9C=A0=EC=B9=98=EC=88=98]=20[NOBTS]=20add?= =?UTF-8?q?=20InvokeMethodInterceptor=20unit=20test.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-tomcat-profiler/trunk@550 84d0f5b1-2673-498c-a247-62c4ff18d310 --- pom.xml | 5 +++ .../tomcat/InvokeMethodInterceptor.java | 22 ++++++---- .../tomcat/InvokeMethodInterceptorTest.java | 44 +++++++++++++++++-- 3 files changed, 59 insertions(+), 12 deletions(-) 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()); + } }