();
+
+ @Override
+ public Logger getLogger(String name) {
+
+ Logger hitLogger = loggerCache.get(name);
+ if (hitLogger != null) {
+ return hitLogger;
+ }
+
+ org.slf4j.Logger slf4jLogger = LoggerFactory.getLogger(name);
+
+ Slf4jLoggerAdapter slf4jLoggerAdapter = new Slf4jLoggerAdapter(slf4jLogger);
+ Logger before = loggerCache.putIfAbsent(name, slf4jLoggerAdapter);
+ if (before != null) {
+ return before;
+ }
+ return slf4jLoggerAdapter;
+ }
+
+ @Override
+ public void shutdown() {
+ // 안해도 될것도 같고. LoggerFactory의unregister만 해도 될려나?
+ loggerCache = null;
+ }
+}
diff --git a/src/main/java/com/profiler/modifier/AbstractModifier.java b/src/main/java/com/profiler/modifier/AbstractModifier.java
index 2c47ea08c..5d95441c9 100644
--- a/src/main/java/com/profiler/modifier/AbstractModifier.java
+++ b/src/main/java/com/profiler/modifier/AbstractModifier.java
@@ -1,20 +1,21 @@
package com.profiler.modifier;
import java.util.logging.Level;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
+import com.profiler.DefaultAgent;
import com.profiler.common.ServiceType;
import com.profiler.interceptor.ServiceTypeSupport;
-import javassist.ClassPool;
import com.profiler.Agent;
import com.profiler.interceptor.Interceptor;
import com.profiler.interceptor.TraceContextSupport;
import com.profiler.interceptor.bci.ByteCodeInstrumentor;
+import com.profiler.logging.LoggerFactory;
public abstract class AbstractModifier implements Modifier {
- private final Logger logger = Logger.getLogger(AbstractModifier.class.getName());
+ private final Logger logger = LoggerFactory.getLogger(AbstractModifier.class.getName());
protected final ByteCodeInstrumentor byteCodeInstrumentor;
protected final Agent agent;
@@ -29,17 +30,17 @@ public abstract class AbstractModifier implements Modifier {
}
public void printClassConvertComplete(String javassistClassName) {
- if (logger.isLoggable(Level.INFO)) {
+ if (logger.isInfoEnabled()) {
logger.info(javassistClassName + " class is converted.");
}
}
- public void setTraceContext(Interceptor interceptor) {
- // TODO TraceContext를 인터셉터에 바인하는 방안의 추가 개선 필요.
- if (interceptor instanceof TraceContextSupport) {
- ((TraceContextSupport) interceptor).setTraceContext(agent.getTraceContext());
- }
- }
+// public void setTraceContext(Interceptor interceptor) {
+// // TODO TraceContext를 인터셉터에 바인하는 방안의 추가 개선 필요.
+// if (interceptor instanceof TraceContextSupport) {
+// ((TraceContextSupport) interceptor).setTraceContext(agent.getTraceContext());
+// }
+// }
public void setServiceType(Interceptor interceptor, ServiceType serviceType) {
if (interceptor instanceof ServiceTypeSupport) {
diff --git a/src/main/java/com/profiler/modifier/DefaultModifierRegistry.java b/src/main/java/com/profiler/modifier/DefaultModifierRegistry.java
index cbb6c405c..652fbd725 100644
--- a/src/main/java/com/profiler/modifier/DefaultModifierRegistry.java
+++ b/src/main/java/com/profiler/modifier/DefaultModifierRegistry.java
@@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.Map;
import com.profiler.Agent;
+import com.profiler.DefaultAgent;
import com.profiler.config.ProfilerConfig;
import com.profiler.interceptor.bci.ByteCodeInstrumentor;
import com.profiler.modifier.arcus.ArcusClientModifier;
@@ -27,7 +28,6 @@ import com.profiler.modifier.db.mysql.MySQLConnectionImplModifier;
import com.profiler.modifier.db.mysql.MySQLNonRegisteringDriverModifier;
import com.profiler.modifier.db.mysql.MySQLPreparedStatementJDBC4Modifier;
import com.profiler.modifier.db.mysql.MySQLPreparedStatementModifier;
-import com.profiler.modifier.db.mysql.MySQLResultSetModifier;
import com.profiler.modifier.db.mysql.MySQLStatementModifier;
import com.profiler.modifier.db.oracle.OraclePreparedStatementModifier;
import com.profiler.modifier.db.oracle.OracleResultSetModifier;
@@ -50,10 +50,11 @@ public class DefaultModifierRegistry implements ModifierRegistry {
private final ProfilerConfig profilerConfig;
private final Agent agent;
- public DefaultModifierRegistry(ByteCodeInstrumentor byteCodeInstrumentor, Agent agent, ProfilerConfig profilerConfig) {
- this.byteCodeInstrumentor = byteCodeInstrumentor;
+ public DefaultModifierRegistry(Agent agent) {
this.agent = agent;
- this.profilerConfig = profilerConfig;
+ // classLoader계층 구조 때문에 직접 type을 넣기가 애매하여 그냥 casting
+ this.byteCodeInstrumentor = (ByteCodeInstrumentor) agent.getByteCodeInstrumentor();
+ this.profilerConfig = agent.getProfilerConfig();
}
@Override
@@ -167,8 +168,8 @@ public class DefaultModifierRegistry implements ModifierRegistry {
MySQLPreparedStatementJDBC4Modifier myqlPreparedStatementJDBC4Modifier = new MySQLPreparedStatementJDBC4Modifier(byteCodeInstrumentor, agent);
addModifier(myqlPreparedStatementJDBC4Modifier);
- Modifier mysqlResultSetModifier = new MySQLResultSetModifier(byteCodeInstrumentor, agent);
- addModifier(mysqlResultSetModifier);
+// Modifier mysqlResultSetModifier = new MySQLResultSetModifier(byteCodeInstrumentor, agent);
+// addModifier(mysqlResultSetModifier);
}
private void addMsSqlDriver() {
diff --git a/src/main/java/com/profiler/modifier/ModifierRegistry.java b/src/main/java/com/profiler/modifier/ModifierRegistry.java
index 36333586f..7294aac32 100644
--- a/src/main/java/com/profiler/modifier/ModifierRegistry.java
+++ b/src/main/java/com/profiler/modifier/ModifierRegistry.java
@@ -3,4 +3,5 @@ package com.profiler.modifier;
public interface ModifierRegistry {
Modifier findModifier(String className);
+
}
diff --git a/src/main/java/com/profiler/modifier/arcus/interceptors/BaseOperationCancelInterceptor.java b/src/main/java/com/profiler/modifier/arcus/interceptors/BaseOperationCancelInterceptor.java
index 177374ee6..8279c9603 100644
--- a/src/main/java/com/profiler/modifier/arcus/interceptors/BaseOperationCancelInterceptor.java
+++ b/src/main/java/com/profiler/modifier/arcus/interceptors/BaseOperationCancelInterceptor.java
@@ -1,10 +1,11 @@
package com.profiler.modifier.arcus.interceptors;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
+import com.profiler.context.DefaultAsyncTrace;
+import com.profiler.logging.LoggerFactory;
import net.spy.memcached.protocol.BaseOperationImpl;
-import com.profiler.context.AsyncTrace;
import com.profiler.interceptor.StaticBeforeInterceptor;
import com.profiler.logging.LoggingUtils;
import com.profiler.util.MetaObject;
@@ -14,8 +15,8 @@ import com.profiler.util.MetaObject;
*/
public class BaseOperationCancelInterceptor implements StaticBeforeInterceptor {
- private final Logger logger = Logger.getLogger(BaseOperationCancelInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(BaseOperationCancelInterceptor.class.getName());
+ private final boolean isDebug = logger.isDebugEnabled();
private MetaObject getAsyncTrace = new MetaObject("__getAsyncTrace");
@@ -25,13 +26,13 @@ public class BaseOperationCancelInterceptor implements StaticBeforeInterceptor {
LoggingUtils.logBefore(logger, target, className, methodName, parameterDescription, args);
}
- AsyncTrace asyncTrace = (AsyncTrace) getAsyncTrace.invoke(target);
+ DefaultAsyncTrace asyncTrace = (DefaultAsyncTrace) getAsyncTrace.invoke(target);
if (asyncTrace == null) {
- logger.fine("asyncTrace not found ");
+ logger.debug("asyncTrace not found ");
return;
}
- if (asyncTrace.getState() != AsyncTrace.STATE_INIT) {
+ if (asyncTrace.getState() != DefaultAsyncTrace.STATE_INIT) {
// 이미 동작 완료된 상태임.
return;
}
diff --git a/src/main/java/com/profiler/modifier/arcus/interceptors/BaseOperationTransitionStateInterceptor.java b/src/main/java/com/profiler/modifier/arcus/interceptors/BaseOperationTransitionStateInterceptor.java
index df5bca745..f5a0ac817 100644
--- a/src/main/java/com/profiler/modifier/arcus/interceptors/BaseOperationTransitionStateInterceptor.java
+++ b/src/main/java/com/profiler/modifier/arcus/interceptors/BaseOperationTransitionStateInterceptor.java
@@ -5,30 +5,31 @@ import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.logging.Level;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
import com.profiler.common.AnnotationKey;
-import com.profiler.context.DefaultTraceContext;
+import com.profiler.context.AsyncTrace;
import com.profiler.context.TraceContext;
import com.profiler.interceptor.ByteCodeMethodDescriptorSupport;
import com.profiler.interceptor.MethodDescriptor;
+import com.profiler.interceptor.TraceContextSupport;
+import com.profiler.logging.LoggerFactory;
import com.profiler.logging.LoggingUtils;
import net.spy.memcached.MemcachedNode;
import net.spy.memcached.ops.OperationState;
import net.spy.memcached.protocol.BaseOperationImpl;
import com.profiler.common.ServiceType;
-import com.profiler.context.AsyncTrace;
import com.profiler.interceptor.StaticBeforeInterceptor;
import com.profiler.util.MetaObject;
/**
*
*/
-public class BaseOperationTransitionStateInterceptor implements StaticBeforeInterceptor, ByteCodeMethodDescriptorSupport {
+public class BaseOperationTransitionStateInterceptor implements StaticBeforeInterceptor, ByteCodeMethodDescriptorSupport, TraceContextSupport {
- private final Logger logger = Logger.getLogger(BaseOperationTransitionStateInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(BaseOperationTransitionStateInterceptor.class.getName());
+ private final boolean isDebug = logger.isDebugEnabled();
private static final Charset UTF8 = Charset.forName("UTF-8");
@@ -36,6 +37,7 @@ public class BaseOperationTransitionStateInterceptor implements StaticBeforeInte
private MetaObject getServiceCode = new MetaObject("__getServiceCode");
private MethodDescriptor methodDescriptor;
+ private TraceContext traceContext;
@Override
public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) {
@@ -45,7 +47,7 @@ public class BaseOperationTransitionStateInterceptor implements StaticBeforeInte
AsyncTrace asyncTrace = (AsyncTrace) getAsyncTrace.invoke(target);
if (asyncTrace == null) {
- logger.fine("asyncTrace not found");
+ logger.debug("asyncTrace not found");
return;
}
@@ -53,8 +55,8 @@ public class BaseOperationTransitionStateInterceptor implements StaticBeforeInte
BaseOperationImpl baseOperation = (BaseOperationImpl) target;
if (newState == OperationState.READING) {
- if (logger.isLoggable(Level.FINE)) {
- logger.fine("event:" + newState + " asyncTrace:" + asyncTrace);
+ if (logger.isDebugEnabled()) {
+ logger.debug("event:" + newState + " asyncTrace:" + asyncTrace);
}
if (asyncTrace.getState() != AsyncTrace.STATE_INIT) {
return;
@@ -97,8 +99,8 @@ public class BaseOperationTransitionStateInterceptor implements StaticBeforeInte
asyncTrace.markAfterTime();
// asyncTrace.traceBlockEnd();
} else if (newState == OperationState.COMPLETE || newState == OperationState.TIMEDOUT) {
- if (logger.isLoggable(Level.FINE)) {
- logger.fine("event:" + newState + " asyncTrace:" + asyncTrace);
+ if (logger.isDebugEnabled()) {
+ logger.debug("event:" + newState + " asyncTrace:" + asyncTrace);
}
boolean fire = asyncTrace.fire();
if (!fire) {
@@ -136,7 +138,11 @@ public class BaseOperationTransitionStateInterceptor implements StaticBeforeInte
@Override
public void setMethodDescriptor(MethodDescriptor descriptor) {
this.methodDescriptor = descriptor;
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
- traceContext.cacheApi(descriptor);
+ this.traceContext.cacheApi(descriptor);
+ }
+
+ @Override
+ public void setTraceContext(TraceContext traceContext) {
+ this.traceContext = traceContext;
}
}
diff --git a/src/main/java/com/profiler/modifier/bloc/handler/interceptors/ExecuteMethodInterceptor.java b/src/main/java/com/profiler/modifier/bloc/handler/interceptors/ExecuteMethodInterceptor.java
index 8b6f0288b..2be3839ed 100644
--- a/src/main/java/com/profiler/modifier/bloc/handler/interceptors/ExecuteMethodInterceptor.java
+++ b/src/main/java/com/profiler/modifier/bloc/handler/interceptors/ExecuteMethodInterceptor.java
@@ -3,7 +3,7 @@ package com.profiler.modifier.bloc.handler.interceptors;
import java.util.Enumeration;
import java.util.UUID;
import java.util.logging.Level;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
import com.profiler.common.AnnotationKey;
import com.profiler.common.ServiceType;
@@ -11,19 +11,21 @@ import com.profiler.context.*;
import com.profiler.interceptor.ByteCodeMethodDescriptorSupport;
import com.profiler.interceptor.MethodDescriptor;
import com.profiler.interceptor.StaticAroundInterceptor;
+import com.profiler.interceptor.TraceContextSupport;
+import com.profiler.logging.LoggerFactory;
import com.profiler.logging.LoggingUtils;
import com.profiler.util.NumberUtils;
/**
* @author netspider
*/
-public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport {
+public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport, TraceContextSupport {
- private final Logger logger = Logger.getLogger(ExecuteMethodInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(ExecuteMethodInterceptor.class.getName());
+ private final boolean isDebug = logger.isDebugEnabled();
private MethodDescriptor descriptor;
-// private int apiId;
+ private TraceContext traceContext;
@Override
public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) {
@@ -32,33 +34,27 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo
}
try {
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
- traceContext.getActiveThreadCounter().start();
-
external.org.apache.coyote.Request request = (external.org.apache.coyote.Request) args[0];
String requestURL = request.requestURI().toString();
String clientIP = request.remoteAddr().toString();
String parameters = getRequestParameter(request);
- TraceID traceId = populateTraceIdFromRequest(request);
- DefaultTrace trace;
+ DefaultTraceID traceId = populateTraceIdFromRequest(request);
+ Trace trace;
if (traceId != null) {
- // TraceID nextTraceId = traceId.getNextTraceId();
- if (logger.isLoggable(Level.INFO)) {
- // logger.info("TraceID exist. continue trace. " + nextTraceId);
+ if (logger.isInfoEnabled()) {
logger.info("TraceID exist. continue trace. " + traceId);
- logger.log(Level.FINE, "requestUrl:" + requestURL + " clientIp" + clientIP + " parameter:" + parameters);
+ logger.debug("requestUrl:" + requestURL + " clientIp" + clientIP + " parameter:" + parameters);
}
- // trace = new Trace(nextTraceId);
- trace = new DefaultTrace(traceId);
- traceContext.attachTraceObject(trace);
+
+ trace = traceContext.continueTraceObject(traceId);
} else {
trace = new DefaultTrace();
- if (logger.isLoggable(Level.INFO)) {
+ if (logger.isInfoEnabled()) {
logger.info("TraceID not exist. start new trace. " + trace.getTraceId());
- logger.log(Level.FINE, "requestUrl:" + requestURL + " clientIp" + clientIP + " parameter:" + parameters);
+ logger.debug("requestUrl:" + requestURL + " clientIp" + clientIP + " parameter:" + parameters);
}
- traceContext.attachTraceObject(trace);
+ trace = traceContext.newTraceObject();
}
trace.markBeforeTime();
@@ -75,8 +71,8 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo
}
} catch (Exception e) {
- if (logger.isLoggable(Level.WARNING)) {
- logger.log(Level.WARNING, "Tomcat StandardHostValve trace start fail. Caused:" + e.getMessage(), e);
+ if (logger.isWarnEnabled()) {
+ logger.warn( "Tomcat StandardHostValve trace start fail. Caused:" + e.getMessage(), e);
}
}
}
@@ -87,15 +83,14 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo
LoggingUtils.logAfter(logger, target, className, methodName, parameterDescription, args, result);
}
- DefaultTraceContext traceContext = DefaultTraceContext.getTraceContext();
- traceContext.getActiveThreadCounter().end();
+// traceContext.getActiveThreadCounter().end();
Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
}
traceContext.detachTraceObject();
if (trace.getStackFrameId() != 0) {
- logger.warning("Corrupted CallStack found. StackId not Root(0)");
+ logger.warn("Corrupted CallStack found. StackId not Root(0)");
// 문제 있는 callstack을 dump하면 도움이 될듯.
}
@@ -113,7 +108,7 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo
* @param request
* @return
*/
- private TraceID populateTraceIdFromRequest(external.org.apache.coyote.Request request) {
+ private DefaultTraceID populateTraceIdFromRequest(external.org.apache.coyote.Request request) {
String strUUID = request.getHeader(Header.HTTP_TRACE_ID.toString());
if (strUUID != null) {
UUID uuid = UUID.fromString(strUUID);
@@ -122,8 +117,8 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo
boolean sampled = Boolean.parseBoolean(request.getHeader(Header.HTTP_SAMPLED.toString()));
short flags = NumberUtils.parseShort(request.getHeader(Header.HTTP_FLAGS.toString()), (short) 0);
- TraceID id = new TraceID(uuid, parentSpanID, spanID, sampled, flags);
- if (logger.isLoggable(Level.INFO)) {
+ DefaultTraceID id = new DefaultTraceID(uuid, parentSpanID, spanID, sampled, flags);
+ if (logger.isInfoEnabled()) {
logger.info("TraceID exist. continue trace. " + id);
}
return id;
@@ -156,9 +151,12 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo
@Override
public void setMethodDescriptor(MethodDescriptor descriptor) {
this.descriptor = descriptor;
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
traceContext.cacheApi(descriptor);
}
+ @Override
+ public void setTraceContext(TraceContext traceContext) {
+ this.traceContext = traceContext;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/Execute2MethodInterceptor.java b/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/Execute2MethodInterceptor.java
index 9186f7a80..0c1c107ae 100644
--- a/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/Execute2MethodInterceptor.java
+++ b/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/Execute2MethodInterceptor.java
@@ -1,9 +1,11 @@
package com.profiler.modifier.connector.httpclient4.interceptor;
import java.net.URI;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
import com.profiler.context.*;
+import com.profiler.interceptor.TraceContextSupport;
+import com.profiler.logging.LoggerFactory;
import org.apache.http.HttpHost;
import org.apache.http.client.methods.HttpUriRequest;
@@ -24,19 +26,19 @@ import com.profiler.logging.LoggingUtils;
* public final HttpResponse execute(HttpUriRequest request) throws IOException, ClientProtocolException
*
*/
-public class Execute2MethodInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport {
+public class Execute2MethodInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport, TraceContextSupport {
- private final Logger logger = Logger.getLogger(Execute2MethodInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(Execute2MethodInterceptor.class.getName());
+ private final boolean isDebug = logger.isDebugEnabled();
private MethodDescriptor descriptor;
+ private TraceContext traceContext;
- @Override
+ @Override
public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) {
if (isDebug) {
LoggingUtils.logBefore(logger, target, className, methodName, parameterDescription, args);
}
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
@@ -75,7 +77,6 @@ public class Execute2MethodInterceptor implements StaticAroundInterceptor, ByteC
LoggingUtils.logAfter(logger, target, className, methodName, parameterDescription, args);
}
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
@@ -90,7 +91,6 @@ public class Execute2MethodInterceptor implements StaticAroundInterceptor, ByteC
@Override
public void setMethodDescriptor(MethodDescriptor descriptor) {
this.descriptor = descriptor;
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
traceContext.cacheApi(descriptor);
}
@@ -147,4 +147,9 @@ public class Execute2MethodInterceptor implements StaticAroundInterceptor, ByteC
}
return target;
}
+
+ @Override
+ public void setTraceContext(TraceContext traceContext) {
+ this.traceContext = traceContext;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/ExecuteMethodInterceptor.java b/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/ExecuteMethodInterceptor.java
index db070f34d..1e6674ed4 100644
--- a/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/ExecuteMethodInterceptor.java
+++ b/src/main/java/com/profiler/modifier/connector/httpclient4/interceptor/ExecuteMethodInterceptor.java
@@ -1,9 +1,11 @@
package com.profiler.modifier.connector.httpclient4.interceptor;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
import com.profiler.common.AnnotationKey;
import com.profiler.context.*;
+import com.profiler.interceptor.TraceContextSupport;
+import com.profiler.logging.LoggerFactory;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
@@ -26,20 +28,21 @@ import com.profiler.logging.LoggingUtils;
* throws IOException, ClientProtocolException {
*
*/
-public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport {
+public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport, TraceContextSupport {
- private final Logger logger = Logger.getLogger(ExecuteMethodInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(ExecuteMethodInterceptor.class.getName());
+ private final boolean isDebug = logger.isDebugEnabled();
private MethodDescriptor descriptor;
-// private int apiId;
+ private TraceContext traceContext;
+ // private int apiId;
@Override
public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) {
if (isDebug) {
LoggingUtils.logBefore(logger, target, className, methodName, parameterDescription, args);
}
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
+ System.out.println("-------------------------");
Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
@@ -64,7 +67,6 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo
trace.recordServiceType(ServiceType.HTTP_CLIENT);
int port = host.getPort();
-// trace.recordEndPoint(host.getHostName() + ((port > 0) ? ":" + port : ""));
trace.recordDestinationId(host.getHostName() + ((port > 0) ? ":" + port : ""));
trace.recordAttribute(AnnotationKey.HTTP_URL, request.getRequestLine().getUri());
@@ -77,7 +79,6 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo
LoggingUtils.logAfter(logger, target, className, methodName, parameterDescription, args);
}
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
@@ -93,8 +94,11 @@ public class ExecuteMethodInterceptor implements StaticAroundInterceptor, ByteCo
@Override
public void setMethodDescriptor(MethodDescriptor descriptor) {
this.descriptor = descriptor;
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
traceContext.cacheApi(descriptor);
}
+ @Override
+ public void setTraceContext(TraceContext traceContext) {
+ this.traceContext = traceContext;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/profiler/modifier/connector/jdkhttpconnector/interceptor/ConnectMethodInterceptor.java b/src/main/java/com/profiler/modifier/connector/jdkhttpconnector/interceptor/ConnectMethodInterceptor.java
index 0c9921ef7..d70ee7885 100644
--- a/src/main/java/com/profiler/modifier/connector/jdkhttpconnector/interceptor/ConnectMethodInterceptor.java
+++ b/src/main/java/com/profiler/modifier/connector/jdkhttpconnector/interceptor/ConnectMethodInterceptor.java
@@ -1,7 +1,7 @@
package com.profiler.modifier.connector.jdkhttpconnector.interceptor;
import java.net.HttpURLConnection;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
import com.profiler.common.AnnotationKey;
import com.profiler.common.ServiceType;
@@ -9,25 +9,27 @@ import com.profiler.context.*;
import com.profiler.interceptor.ByteCodeMethodDescriptorSupport;
import com.profiler.interceptor.MethodDescriptor;
import com.profiler.interceptor.StaticAroundInterceptor;
+import com.profiler.interceptor.TraceContextSupport;
+import com.profiler.logging.LoggerFactory;
import com.profiler.logging.LoggingUtils;
/**
* @author netspider
*
*/
-public class ConnectMethodInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport {
+public class ConnectMethodInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport, TraceContextSupport {
- private final Logger logger = Logger.getLogger(ConnectMethodInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(ConnectMethodInterceptor.class.getName());
+ private final boolean isDebug = logger.isDebugEnabled();
private MethodDescriptor descriptor;
+ private TraceContext traceContext;
- @Override
+ @Override
public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) {
if (isDebug) {
LoggingUtils.logBefore(logger, target, className, methodName, parameterDescription, args);
}
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
@@ -55,7 +57,6 @@ public class ConnectMethodInterceptor implements StaticAroundInterceptor, ByteCo
int port = request.getURL().getPort();
// TODO protocol은 어떻게 표기하지???
-// trace.recordEndPoint(host + ((port > 0) ? ":" + port : ""));
trace.recordDestinationId(host + ((port > 0) ? ":" + port : ""));
trace.recordAttribute(AnnotationKey.HTTP_URL, request.getURL().toString());
@@ -68,7 +69,6 @@ public class ConnectMethodInterceptor implements StaticAroundInterceptor, ByteCo
LoggingUtils.logAfter(logger, target, className, methodName, parameterDescription, args);
}
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
@@ -83,7 +83,11 @@ public class ConnectMethodInterceptor implements StaticAroundInterceptor, ByteCo
@Override
public void setMethodDescriptor(MethodDescriptor descriptor) {
this.descriptor = descriptor;
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
traceContext.cacheApi(descriptor);
}
+
+ @Override
+ public void setTraceContext(TraceContext traceContext) {
+ this.traceContext = traceContext;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCloseInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCloseInterceptor.java
index 7cb35bd09..994bb0dc6 100644
--- a/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCloseInterceptor.java
+++ b/src/main/java/com/profiler/modifier/db/interceptor/ConnectionCloseInterceptor.java
@@ -1,18 +1,18 @@
package com.profiler.modifier.db.interceptor;
import com.profiler.interceptor.StaticBeforeInterceptor;
+import com.profiler.interceptor.util.JDBCScope;
+import com.profiler.logging.LoggerFactory;
import com.profiler.logging.LoggingUtils;
import com.profiler.util.MetaObject;
-import com.profiler.util.StringUtils;
import java.sql.Connection;
-import java.util.Arrays;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
public class ConnectionCloseInterceptor implements StaticBeforeInterceptor {
- private final Logger logger = Logger.getLogger(ConnectionCloseInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(ConnectionCloseInterceptor.class.getName());
+ private final boolean isDebug = logger.isDebugEnabled();
private static final Object[] EMPTY = new Object[]{null};
diff --git a/src/main/java/com/profiler/modifier/db/interceptor/DataSourceGetConnectionInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/DataSourceGetConnectionInterceptor.java
index aa114d89e..f1cccab02 100644
--- a/src/main/java/com/profiler/modifier/db/interceptor/DataSourceGetConnectionInterceptor.java
+++ b/src/main/java/com/profiler/modifier/db/interceptor/DataSourceGetConnectionInterceptor.java
@@ -1,21 +1,20 @@
package com.profiler.modifier.db.interceptor;
import com.profiler.interceptor.StaticAroundInterceptor;
+import com.profiler.logging.LoggerFactory;
import com.profiler.logging.LoggingUtils;
import com.profiler.util.InterceptorUtils;
-import com.profiler.util.StringUtils;
import java.sql.Connection;
-import java.util.Arrays;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
/**
* Datasource의 get을 추적해야 될것으로 예상됨.
*/
public class DataSourceGetConnectionInterceptor implements StaticAroundInterceptor {
- private final Logger logger = Logger.getLogger(DataSourceGetConnectionInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(DataSourceGetConnectionInterceptor.class.getName());
+ private final boolean isDebug = logger.isDebugEnabled();
@Override
public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) {
diff --git a/src/main/java/com/profiler/modifier/servlet/interceptors/DoXXXInterceptor.java b/src/main/java/com/profiler/modifier/servlet/interceptors/DoXXXInterceptor.java
index 28a234dd1..62da24bbd 100644
--- a/src/main/java/com/profiler/modifier/servlet/interceptors/DoXXXInterceptor.java
+++ b/src/main/java/com/profiler/modifier/servlet/interceptors/DoXXXInterceptor.java
@@ -3,7 +3,8 @@ package com.profiler.modifier.servlet.interceptors;
import java.util.Enumeration;
import java.util.UUID;
import java.util.logging.Level;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
+import com.profiler.logging.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
@@ -19,8 +20,8 @@ import com.profiler.util.NumberUtils;
public class DoXXXInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport, TraceContextSupport {
- private final Logger logger = Logger.getLogger(DoXXXInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(DoXXXInterceptor.class.getName());
+ private final boolean isDebug = logger.isDebugEnabled();
private MethodDescriptor descriptor;
private TraceContext traceContext;
@@ -56,31 +57,26 @@ public class DoXXXInterceptor implements StaticAroundInterceptor, ByteCodeMethod
}
try {
- traceContext.getActiveThreadCounter().start();
+// traceContext.getActiveThreadCounter().start();
HttpServletRequest request = (HttpServletRequest) args[0];
String requestURL = request.getRequestURI();
String clientIP = request.getRemoteAddr();
TraceID traceId = populateTraceIdFromRequest(request);
- DefaultTrace trace;
+ Trace trace;
if (traceId != null) {
- // TraceID nextTraceId = traceId.getNextTraceId();
- if (logger.isLoggable(Level.INFO)) {
- // logger.info("TraceID exist. continue trace. " + nextTraceId);
+ if (logger.isInfoEnabled()) {
logger.info("TraceID exist. continue trace. " + traceId);
- logger.log(Level.FINE, "requestUrl:" + requestURL + " clientIp" + clientIP);
+ logger.debug("requestUrl:" + requestURL + " clientIp" + clientIP);
}
- // trace = new Trace(nextTraceId);
- trace = new DefaultTrace(traceId);
- traceContext.attachTraceObject(trace);
+ trace = traceContext.continueTraceObject(traceId);
} else {
- trace = new DefaultTrace();
- if (logger.isLoggable(Level.INFO)) {
+ trace = traceContext.newTraceObject();
+ if (logger.isInfoEnabled()) {
logger.info("TraceID not exist. start new trace. " + trace.getTraceId());
- logger.log(Level.FINE, "requestUrl:" + requestURL + " clientIp" + clientIP);
+ logger.debug("requestUrl:" + requestURL + " clientIp" + clientIP);
}
- traceContext.attachTraceObject(trace);
}
trace.markBeforeTime();
@@ -92,8 +88,8 @@ public class DoXXXInterceptor implements StaticAroundInterceptor, ByteCodeMethod
trace.recordDestinationId(request.getServerName() + ((port > 0) ? ":" + port : ""));
trace.recordAttribute(AnnotationKey.HTTP_URL, request.getRequestURI());
} catch (Exception e) {
- if (logger.isLoggable(Level.WARNING)) {
- logger.log(Level.WARNING, "Tomcat StandardHostValve trace start fail. Caused:" + e.getMessage(), e);
+ if (logger.isWarnEnabled()) {
+ logger.warn("Tomcat StandardHostValve trace start fail. Caused:" + e.getMessage(), e);
}
}
}
@@ -104,7 +100,6 @@ public class DoXXXInterceptor implements StaticAroundInterceptor, ByteCodeMethod
LoggingUtils.logAfter(logger, target, className, methodName, parameterDescription, args, result);
}
- traceContext.getActiveThreadCounter().end();
Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
@@ -119,7 +114,7 @@ public class DoXXXInterceptor implements StaticAroundInterceptor, ByteCodeMethod
if (trace.getStackFrameId() != 0) {
- logger.warning("Corrupted CallStack found. StackId not Root(0)");
+ logger.warn("Corrupted CallStack found. StackId not Root(0)");
// 문제 있는 callstack을 dump하면 도움이 될듯.
}
@@ -147,8 +142,8 @@ public class DoXXXInterceptor implements StaticAroundInterceptor, ByteCodeMethod
boolean sampled = Boolean.parseBoolean(request.getHeader(Header.HTTP_SAMPLED.toString()));
short flags = NumberUtils.parseShort(request.getHeader(Header.HTTP_FLAGS.toString()), (short) 0);
- TraceID id = new TraceID(uuid, parentSpanID, spanID, sampled, flags);
- if (logger.isLoggable(Level.INFO)) {
+ TraceID id = new DefaultTraceID(uuid, parentSpanID, spanID, sampled, flags);
+ if (logger.isInfoEnabled()) {
logger.info("TraceID exist. continue trace. " + id);
}
return id;
@@ -184,8 +179,7 @@ public class DoXXXInterceptor implements StaticAroundInterceptor, ByteCodeMethod
@Override
public void setMethodDescriptor(MethodDescriptor descriptor) {
this.descriptor = descriptor;
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
- traceContext.cacheApi(descriptor);
+ this.traceContext.cacheApi(descriptor);
}
diff --git a/src/main/java/com/profiler/modifier/tomcat/interceptors/StandardHostValveInvokeInterceptor.java b/src/main/java/com/profiler/modifier/tomcat/interceptors/StandardHostValveInvokeInterceptor.java
index 75817957e..4809a43f1 100644
--- a/src/main/java/com/profiler/modifier/tomcat/interceptors/StandardHostValveInvokeInterceptor.java
+++ b/src/main/java/com/profiler/modifier/tomcat/interceptors/StandardHostValveInvokeInterceptor.java
@@ -3,7 +3,8 @@ package com.profiler.modifier.tomcat.interceptors;
import java.util.Enumeration;
import java.util.UUID;
import java.util.logging.Level;
-import java.util.logging.Logger;
+import com.profiler.logging.Logger;
+import com.profiler.logging.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
@@ -20,8 +21,8 @@ import com.profiler.util.NumberUtils;
public class StandardHostValveInvokeInterceptor implements StaticAroundInterceptor, ByteCodeMethodDescriptorSupport, TraceContextSupport {
- private final Logger logger = Logger.getLogger(StandardHostValveInvokeInterceptor.class.getName());
- private final boolean isDebug = LoggingUtils.isDebug(logger);
+ private final Logger logger = LoggerFactory.getLogger(StandardHostValveInvokeInterceptor.class.getName());
+ private final boolean isDebug = logger.isInfoEnabled();
private MethodDescriptor descriptor;
// private int apiId;
@@ -34,29 +35,27 @@ public class StandardHostValveInvokeInterceptor implements StaticAroundIntercept
}
try {
- traceContext.getActiveThreadCounter().start();
+// traceContext.getActiveThreadCounter().start();
HttpServletRequest request = (HttpServletRequest) args[0];
String requestURL = request.getRequestURI();
String remoteAddr = request.getRemoteAddr();
TraceID traceId = populateTraceIdFromRequest(request);
- DefaultTrace trace;
+ Trace trace;
if (traceId != null) {
- if (logger.isLoggable(Level.INFO)) {
+ if (logger.isInfoEnabled()) {
logger.info("TraceID exist. continue trace. " + traceId);
- logger.log(Level.FINE, "requestUrl:" + requestURL + ", remoteAddr:" + remoteAddr);
+ logger.debug("requestUrl:" + requestURL + ", remoteAddr:" + remoteAddr);
}
- // trace = new Trace(nextTraceId);
- trace = new DefaultTrace(traceId);
- traceContext.attachTraceObject(trace);
+
+ trace = traceContext.continueTraceObject(traceId);
} else {
- trace = new DefaultTrace();
- if (logger.isLoggable(Level.INFO)) {
+ trace = traceContext.newTraceObject();
+ if (logger.isInfoEnabled()) {
logger.info("TraceID not exist. start new trace. " + trace.getTraceId());
- logger.log(Level.FINE, "requestUrl:" + requestURL + ", remoteAddr:" + remoteAddr);
+ logger.debug("requestUrl:" + requestURL + ", remoteAddr:" + remoteAddr);
}
- traceContext.attachTraceObject(trace);
}
trace.markBeforeTime();
@@ -80,8 +79,8 @@ public class StandardHostValveInvokeInterceptor implements StaticAroundIntercept
// TODO 여기에서 client 정보를 수집할 수 있다.
}
} catch (Exception e) {
- if (logger.isLoggable(Level.WARNING)) {
- logger.log(Level.WARNING, "Tomcat StandardHostValve trace start fail. Caused:" + e.getMessage(), e);
+ if (logger.isWarnEnabled()) {
+ logger.warn("Tomcat StandardHostValve trace start fail. Caused:" + e.getMessage(), e);
}
}
}
@@ -92,7 +91,7 @@ public class StandardHostValveInvokeInterceptor implements StaticAroundIntercept
LoggingUtils.logAfter(logger, target, className, methodName, parameterDescription, args, result);
}
- traceContext.getActiveThreadCounter().end();
+// traceContext.getActiveThreadCounter().end();
Trace trace = traceContext.currentTraceObject();
if (trace == null) {
return;
@@ -107,7 +106,7 @@ public class StandardHostValveInvokeInterceptor implements StaticAroundIntercept
if (trace.getStackFrameId() != 0) {
- logger.warning("Corrupted CallStack found. StackId not Root(0)");
+ logger.warn("Corrupted CallStack found. StackId not Root(0)");
// 문제 있는 callstack을 dump하면 도움이 될듯.
}
@@ -126,7 +125,7 @@ public class StandardHostValveInvokeInterceptor implements StaticAroundIntercept
* @param request
* @return
*/
- private TraceID populateTraceIdFromRequest(HttpServletRequest request) {
+ private DefaultTraceID populateTraceIdFromRequest(HttpServletRequest request) {
String strUUID = request.getHeader(Header.HTTP_TRACE_ID.toString());
if (strUUID != null) {
UUID uuid = UUID.fromString(strUUID);
@@ -135,8 +134,8 @@ public class StandardHostValveInvokeInterceptor implements StaticAroundIntercept
boolean sampled = Boolean.parseBoolean(request.getHeader(Header.HTTP_SAMPLED.toString()));
short flags = NumberUtils.parseShort(request.getHeader(Header.HTTP_FLAGS.toString()), (short) 0);
- TraceID id = new TraceID(uuid, parentSpanID, spanID, sampled, flags);
- if (logger.isLoggable(Level.INFO)) {
+ DefaultTraceID id = new DefaultTraceID(uuid, parentSpanID, spanID, sampled, flags);
+ if (logger.isInfoEnabled()) {
logger.info("TraceID exist. continue trace. " + id);
}
return id;
@@ -184,8 +183,7 @@ public class StandardHostValveInvokeInterceptor implements StaticAroundIntercept
@Override
public void setMethodDescriptor(MethodDescriptor descriptor) {
this.descriptor = descriptor;
- TraceContext traceContext = DefaultTraceContext.getTraceContext();
- traceContext.cacheApi(descriptor);
+ this.traceContext.cacheApi(descriptor);
}
@Override
diff --git a/src/main/java/com/profiler/trace/RequestTracer.java b/src/main/java/com/profiler/trace/RequestTracer.java
index f7e5106e5..a1901f024 100644
--- a/src/main/java/com/profiler/trace/RequestTracer.java
+++ b/src/main/java/com/profiler/trace/RequestTracer.java
@@ -4,11 +4,10 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
-import com.profiler.Agent;
+import com.profiler.DefaultAgent;
import com.profiler.common.dto.thrift.RequestDataListThriftDTO;
import com.profiler.common.dto.thrift.RequestThriftDTO;
import com.profiler.config.ProfilerConstant;
-import com.profiler.util.SystemUtils;
@Deprecated
public class RequestTracer {
@@ -29,7 +28,7 @@ public class RequestTracer {
currentRequestHash.set(tempRequestHashCode);
requestSet.add(tempRequestID);
- RequestThriftDTO dto = new RequestThriftDTO(Agent.getInstance().getAgentId(), tempRequestHashCode, ProfilerConstant.DATA_TYPE_REQUEST, requestTime, cpuUserTime[0], cpuUserTime[1]);
+ RequestThriftDTO dto = new RequestThriftDTO(DefaultAgent.getInstance().getAgentId(), tempRequestHashCode, ProfilerConstant.DATA_TYPE_REQUEST, requestTime, cpuUserTime[0], cpuUserTime[1]);
dto.setClientIP(clientIP);
dto.setRequestURL(requestURL);
@@ -48,7 +47,7 @@ public class RequestTracer {
public static void endTransaction() {
long cpuUserTime[] = null;
// long cpuUserTime[] = SystemUtils.getThreadTime();
- RequestThriftDTO dto = new RequestThriftDTO(Agent.getInstance().getAgentId(), currentRequestHash.get(), ProfilerConstant.DATA_TYPE_RESPONSE, System.currentTimeMillis(), cpuUserTime[0], cpuUserTime[1]);
+ RequestThriftDTO dto = new RequestThriftDTO(DefaultAgent.getInstance().getAgentId(), currentRequestHash.get(), ProfilerConstant.DATA_TYPE_RESPONSE, System.currentTimeMillis(), cpuUserTime[0], cpuUserTime[1]);
finishTransaction(dto);
}
@@ -61,7 +60,7 @@ public class RequestTracer {
public static void exceptionTransaction(Throwable throwable) {
// long cpuUserTime[] = SystemUtils.getThreadTime();
long cpuUserTime[] = null;
- RequestThriftDTO dto = new RequestThriftDTO(Agent.getInstance().getAgentId(), currentRequestHash.get(), ProfilerConstant.DATA_TYPE_UNCAUGHT_EXCEPTION, System.currentTimeMillis(), cpuUserTime[0], cpuUserTime[1]);
+ RequestThriftDTO dto = new RequestThriftDTO(DefaultAgent.getInstance().getAgentId(), currentRequestHash.get(), ProfilerConstant.DATA_TYPE_UNCAUGHT_EXCEPTION, System.currentTimeMillis(), cpuUserTime[0], cpuUserTime[1]);
dto.setExtraData1(throwable.getMessage());
diff --git a/src/main/java/com/profiler/util/ReflectionUtils.java b/src/main/java/com/profiler/util/ReflectionUtils.java
deleted file mode 100644
index f36e6dda6..000000000
--- a/src/main/java/com/profiler/util/ReflectionUtils.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.profiler.util;
-
-import java.lang.reflect.Field;
-
-public class ReflectionUtils {
- public static Field findField(Class targetClass, String fieldName) {
- Field[] declaredFields = targetClass.getDeclaredFields();
- for (Field f : declaredFields) {
- if (f.getName().equals(fieldName)) {
- return f;
- }
- }
- return null;
- }
-}
diff --git a/src/test/java/com/profiler/AgentClassLoaderTest.java b/src/test/java/com/profiler/AgentClassLoaderTest.java
index 973d7dc7f..f5297f488 100644
--- a/src/test/java/com/profiler/AgentClassLoaderTest.java
+++ b/src/test/java/com/profiler/AgentClassLoaderTest.java
@@ -1,6 +1,8 @@
package com.profiler;
+import com.profiler.bootstrap.AgentClassLoader;
+import com.profiler.config.ProfilerConfig;
import com.profiler.logging.LoggerBinder;
import org.junit.Test;
import org.slf4j.Logger;
@@ -41,10 +43,10 @@ public class AgentClassLoaderTest {
AgentClassLoader agentClassLoader = new AgentClassLoader(lib);
agentClassLoader.setBootClass("com.profiler.boot.BootClassTest");
- agentClassLoader.boot();
+ agentClassLoader.boot("test", new DummyInstrumentation(), new ProfilerConfig());
- LoggerBinder loggerBinder = agentClassLoader.initializeLoggerBinder();
+ LoggerBinder loggerBinder = (LoggerBinder) agentClassLoader.initializeLoggerBinder();
com.profiler.logging.Logger test = loggerBinder.getLogger("test");
test.info("slf4j logger test");
diff --git a/src/test/java/com/profiler/config/ProfilerConfigTest.java b/src/test/java/com/profiler/config/ProfilerConfigTest.java
deleted file mode 100644
index 8d932d2d9..000000000
--- a/src/test/java/com/profiler/config/ProfilerConfigTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.profiler.config;
-
-import java.io.IOException;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-
-public class ProfilerConfigTest {
-
- @Test
- public void testIsProfilableClassWithNoConfiguration() throws IOException {
- ProfilerConfig profilerConfig = new ProfilerConfig();
-// profilerConfig.readConfigFile();
-
- Assert.assertFalse(profilerConfig.isProfilableClass("com/nhn/hippo/testweb/controllers/MyController"));
- Assert.assertFalse(profilerConfig.isProfilableClass("net/spider/king/wang/Jjang"));
- Assert.assertFalse(profilerConfig.isProfilableClass("com/nhn/hippo/testweb2/controller/MyController"));
- Assert.assertFalse(profilerConfig.isProfilableClass("com/nhn/hippo/testweb2/MyClass"));
- }
-
- /**
- *
- * configuration is
- * profile.package.include=com.nhn.hippo.testweb.controller.*,com.nhn.hippo.testweb.MyClass
- *
- *
- * @throws IOException
- */
- @Test
- public void testIsProfilableClass() throws IOException {
- System.setProperty("hippo.config", "src/test/resources/hippo.config");
- ProfilerConfig profilerConfig = new ProfilerConfig();
-// profilerConfig.readConfigFile();
-
- Assert.assertTrue(profilerConfig.isProfilableClass("com/nhn/hippo/testweb/MyClass"));
- Assert.assertTrue(profilerConfig.isProfilableClass("com/nhn/hippo/testweb/controller/MyController"));
- Assert.assertTrue(profilerConfig.isProfilableClass("com/nhn/hippo/testweb/controller/customcontroller/MyCustomController"));
-
- Assert.assertFalse(profilerConfig.isProfilableClass("com/nhn/hippo/testweb/MyUnknownClass"));
- Assert.assertFalse(profilerConfig.isProfilableClass("com/nhn/hippo/testweb/controller2/MyController"));
- }
-
-}
diff --git a/src/test/java/com/profiler/context/CallStackTest.java b/src/test/java/com/profiler/context/CallStackTest.java
index c08328464..0e4f93e52 100644
--- a/src/test/java/com/profiler/context/CallStackTest.java
+++ b/src/test/java/com/profiler/context/CallStackTest.java
@@ -13,7 +13,7 @@ public class CallStackTest {
@Test
public void testPush() throws Exception {
- TraceID traceID = TraceID.newTraceId();
+ DefaultTraceID traceID = DefaultTraceID.newTraceId();
CallStack callStack = new CallStack(traceID);
int stackIndex = callStack.getStackFrameIndex();
logger.info(String.valueOf(stackIndex));
diff --git a/src/test/java/com/profiler/context/TraceTest.java b/src/test/java/com/profiler/context/TraceTest.java
index 574dcb459..fa56d0a19 100644
--- a/src/test/java/com/profiler/context/TraceTest.java
+++ b/src/test/java/com/profiler/context/TraceTest.java
@@ -15,7 +15,7 @@ public class TraceTest {
@Test
public void trace() {
- TraceID traceID = TraceID.newTraceId();
+ DefaultTraceID traceID = DefaultTraceID.newTraceId();
DefaultTrace trace = new DefaultTrace(traceID);
trace.setStorage(new BypassStorage(LoggingDataSender.DEFAULT_LOGGING_DATA_SENDER));
trace.traceBlockBegin();
@@ -38,7 +38,7 @@ public class TraceTest {
@Test
public void popEventTest() {
- TraceID traceID = TraceID.newTraceId();
+ DefaultTraceID traceID = DefaultTraceID.newTraceId();
DefaultTrace trace = new DefaultTrace(traceID);
TestDataSender dataSender = new TestDataSender();
BypassStorage bypassStorage = new BypassStorage();
diff --git a/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java b/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java
index d5c036c4f..7a15575fd 100644
--- a/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java
+++ b/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java
@@ -1,13 +1,13 @@
package com.profiler.modifier.db.mysql;
import com.mysql.jdbc.JDBC4PreparedStatement;
-import com.profiler.Agent;
+import com.profiler.DefaultAgent;
+import com.profiler.DummyInstrumentation;
import com.profiler.config.ProfilerConfig;
import com.profiler.context.BypassStorageFactory;
-import com.profiler.context.DefaultTrace;
import com.profiler.context.DefaultTraceContext;
-import com.profiler.context.TraceContext;
-import com.profiler.modifier.db.util.DatabaseInfo;
+import com.profiler.context.Trace;
+import com.profiler.modifier.db.DatabaseInfo;
import com.profiler.sender.LoggingDataSender;
import com.profiler.util.MetaObject;
import com.profiler.util.TestClassLoader;
@@ -31,7 +31,7 @@ public class MySQLConnectionImplModifierTest {
loader = new TestClassLoader();
ProfilerConfig profilerConfig = new ProfilerConfig();
- Agent agent = new Agent(profilerConfig);
+ DefaultAgent agent = new DefaultAgent("", new DummyInstrumentation(), profilerConfig);
MySQLNonRegisteringDriverModifier driverModifier = new MySQLNonRegisteringDriverModifier(loader.getInstrumentor(), agent);
loader.addModifier(driverModifier);
@@ -68,8 +68,8 @@ public class MySQLConnectionImplModifierTest {
DefaultTraceContext traceContext = DefaultTraceContext.getTraceContext();
traceContext.setStorageFactory(new BypassStorageFactory(LoggingDataSender.DEFAULT_LOGGING_DATA_SENDER));
- DefaultTrace trace = new DefaultTrace();
- traceContext.attachTraceObject(trace);
+
+ Trace trace = traceContext.newTraceObject();
Connection connection = driver.connect("jdbc:mysql://10.98.133.22:3306/hippo", properties);