提交 aeaa7da8 编写于 作者: F Frankie Wu

enable unit test without CAT

上级 3742102c
......@@ -38,6 +38,7 @@ public class Cat {
if (!s_instance.m_initialized) {
try {
s_instance.setContainer(new DefaultPlexusContainer());
s_instance.m_initialized = true;
} catch (PlexusContainerException e) {
throw new RuntimeException("Error when creating Plexus container, "
+ "please make sure the environment was setup correctly!", e);
......@@ -87,6 +88,7 @@ public class Cat {
if (container != null) {
if (!s_instance.m_initialized) {
s_instance.setContainer(container);
s_instance.m_initialized = true;
} else {
throw new RuntimeException("Cat has already been initialized before!");
}
......@@ -102,6 +104,10 @@ public class Cat {
}
}
public static boolean isInitialized() {
return s_instance.m_initialized;
}
// this should be called when a thread ends to clean some thread local data
public static void reset() {
getInstance().m_manager.reset();
......@@ -114,8 +120,6 @@ public class Cat {
}
void setContainer(PlexusContainer container) {
m_initialized = true;
try {
m_manager = (MessageManager) container.lookup(MessageManager.class);
} catch (ComponentLookupException e) {
......
......@@ -5,6 +5,10 @@ import java.net.UnknownHostException;
import java.util.Stack;
import java.util.UUID;
import org.codehaus.plexus.logging.LogEnabled;
import org.codehaus.plexus.logging.Logger;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.model.entity.Config;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.Transaction;
......@@ -15,7 +19,7 @@ import com.dianping.cat.message.spi.MessageTree;
import com.dianping.cat.message.spi.internal.DefaultMessageTree;
import com.site.lookup.ContainerHolder;
public class DefaultMessageManager extends ContainerHolder implements MessageManager {
public class DefaultMessageManager extends ContainerHolder implements MessageManager, LogEnabled {
private TransportManager m_manager;
// we don't use static modifier since MessageManager is a singleton in
......@@ -37,14 +41,27 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
private String m_ipAddress;
private Logger m_logger;
private boolean m_firstMessage = true;
@Override
public void add(Message message) {
getContext().add(this, message);
if (Cat.isInitialized()) {
getContext().add(this, message);
}
}
@Override
public void enableLogging(Logger logger) {
m_logger = logger;
}
@Override
public void end(Transaction transaction) {
getContext().end(this, transaction);
if (Cat.isInitialized()) {
getContext().end(this, transaction);
}
}
void flush(MessageTree tree) {
......@@ -62,11 +79,6 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
return m_clientConfig;
}
@Override
public Config getServerConfig() {
return m_serverConfig;
}
Context getContext() {
Context ctx = m_context.get();
......@@ -78,6 +90,11 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
}
}
@Override
public Config getServerConfig() {
return m_serverConfig;
}
@Override
public void initializeClient(Config clientConfig) {
if (clientConfig != null) {
......@@ -123,7 +140,12 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
@Override
public void start(Transaction transaction) {
getContext().start(transaction);
if (Cat.isInitialized()) {
getContext().start(transaction);
} else if (m_firstMessage){
m_firstMessage = false;
m_logger.warn("CAT client is not enabled because it's not initialized yet");
}
}
static class Context {
......@@ -138,12 +160,12 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
m_tree.setDomain(domain);
m_tree.setSessionToken(sessionToken);
m_tree.setRequestToken(requestToken);
Thread thread = Thread.currentThread();
m_tree.setThreadId(Long.toHexString(thread.getId()));
m_tree.setThreadId(thread.getName());
m_tree.setHostName(hostName);
m_tree.setIpAddress(ipAddress);
m_tree.setMessageId(UUID.randomUUID().toString()); // TODO optimize it
......
......@@ -36,11 +36,6 @@ public class SimpleServer extends SimpleServerSupport {
JettyTestSupport.startServer(new SimpleServer());
}
@Override
protected File getWarRoot() {
return new File("src/main/webapp");
}
public static void main(String[] args) throws Exception {
SimpleServer server = new SimpleServer();
......@@ -70,19 +65,16 @@ public class SimpleServer extends SimpleServerSupport {
}
@Override
protected void postConfigure(Context ctx) {
ServletHolder holder = new ServletHolder(s_mvc);
ctx.addServlet(new ServletHolder(s_cat), "/s/*");
ctx.addServlet(holder, "/");
ctx.addServlet(holder, "/r/*");
ctx.addFilter(GzipFilter.class, "/r/*", Handler.ALL);
super.postConfigure(ctx);
protected String getContextPath() {
return "/cat";
}
@Override
protected String getContextPath() {
return "/cat";
protected File getScratchDir() {
File work = new File(System.getProperty("java.io.tmpdir", "."), "Cat");
work.mkdirs();
return work;
}
@Override
......@@ -90,6 +82,22 @@ public class SimpleServer extends SimpleServerSupport {
return 2281;
}
@Override
protected File getWarRoot() {
return new File("src/main/webapp");
}
@Override
protected void postConfigure(Context ctx) {
ServletHolder holder = new ServletHolder(s_mvc);
ctx.addServlet(new ServletHolder(s_cat), "/s/*");
ctx.addServlet(holder, "/");
ctx.addServlet(holder, "/r/*");
ctx.addFilter(GzipFilter.class, "/r/*", Handler.ALL);
super.postConfigure(ctx);
}
@Test
public void startServer() throws Exception {
// open the page in the default browser
......@@ -118,15 +126,6 @@ public class SimpleServer extends SimpleServerSupport {
}
}
@Override
public PlexusContainer getContainer() {
return super.getContainer();
}
public void setServerPort(int serverPort) {
m_serverPort = serverPort;
}
public void display(String requestUri) throws Exception {
StringBuilder sb = new StringBuilder(256);
BrowserManager manager = lookup(BrowserManager.class);
......@@ -140,6 +139,11 @@ public class SimpleServer extends SimpleServerSupport {
}
}
@Override
public PlexusContainer getContainer() {
return super.getContainer();
}
@Override
public <T> T lookup(Class<T> role) throws Exception {
return super.lookup(role);
......@@ -149,5 +153,9 @@ public class SimpleServer extends SimpleServerSupport {
public <T> T lookup(Class<T> role, Object roleHint) throws Exception {
return super.lookup(role, roleHint);
}
public void setServerPort(int serverPort) {
m_serverPort = serverPort;
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册