提交 cb3e18c0 编写于 作者: Y youyong205

Merge pull request #403 from youyong205/master

fix bug
......@@ -233,10 +233,10 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
}
public void setTraceMode(boolean traceMode) {
Context content = getContext();
Context context = getContext();
if (content != null) {
content.setTraceMode(traceMode);
if (context != null) {
context.setTraceMode(traceMode);
}
}
......
......@@ -82,6 +82,8 @@ public class CatFilter implements Filter {
protected int detectMode(HttpServletRequest req) {
String source = req.getHeader("X-CAT-SOURCE");
String id = req.getHeader("X-CAT-ID");
Cat.setup(null);
if ("container".equals(source)) {
return 2;
......@@ -157,30 +159,30 @@ public class CatFilter implements Filter {
public void handle(Context ctx) throws IOException, ServletException {
boolean isTraceMode = Cat.getManager().isTraceMode();
if (isTraceMode) {
HttpServletRequest req = ctx.getRequest();
HttpServletResponse res = ctx.getResponse();
MessageProducer producer = Cat.getProducer();
int mode = ctx.getMode();
switch (mode) {
case 0:
ctx.setId(producer.createMessageId());
break;
case 1:
ctx.setRootId(req.getHeader("X-CAT-ROOT-ID"));
ctx.setParentId(req.getHeader("X-CAT-PARENT-ID"));
ctx.setId(req.getHeader("X-CAT-ID"));
break;
case 2:
ctx.setRootId(producer.createMessageId());
ctx.setParentId(ctx.getRootId());
ctx.setId(producer.createMessageId());
break;
default:
throw new RuntimeException(String.format("Internal Error: unsupported mode(%s)!", mode));
}
HttpServletRequest req = ctx.getRequest();
HttpServletResponse res = ctx.getResponse();
MessageProducer producer = Cat.getProducer();
int mode = ctx.getMode();
switch (mode) {
case 0:
ctx.setId(producer.createMessageId());
break;
case 1:
ctx.setRootId(req.getHeader("X-CAT-ROOT-ID"));
ctx.setParentId(req.getHeader("X-CAT-PARENT-ID"));
ctx.setId(req.getHeader("X-CAT-ID"));
break;
case 2:
ctx.setRootId(producer.createMessageId());
ctx.setParentId(ctx.getRootId());
ctx.setId(producer.createMessageId());
break;
default:
throw new RuntimeException(String.format("Internal Error: unsupported mode(%s)!", mode));
}
if (isTraceMode) {
MessageTree tree = Cat.getManager().getThreadLocalMessageTree();
tree.setMessageId(ctx.getId());
......
......@@ -63,17 +63,6 @@ public class CatFilterTest extends JettyServer {
context.addFilter(CatFilter.class, "/*", Handler.REQUEST);
}
@Test
public void testForABTest() throws Exception {
String url = "http://localhost:2282/mock/abtest?metricType=mockMetric";
InputStream in = Urls.forIO().openStream(url);
String content = Files.forIO().readFrom(in, "utf-8");
Assert.assertEquals("mock content here!", content);
TimeUnit.MILLISECONDS.sleep(100);
}
@Test
public void testMode0() throws Exception {
String url = "http://localhost:2282/mock/mode0";
......@@ -119,6 +108,7 @@ public class CatFilterTest extends JettyServer {
Map<String, List<String>> headers = new HashMap<String, List<String>>();
InputStream in = Urls.forIO().connectTimeout(100) //
.header("X-Cat-Source", "container") //
.header("X-CAT-TRACE-MODE", "true") //
.openStream(url, headers);
String content = Files.forIO().readFrom(in, "utf-8");
......@@ -150,14 +140,19 @@ public class CatFilterTest extends JettyServer {
private String getHeader(Map<String, List<String>> headers, String name) {
List<String> values = headers.get(name);
int len = values.size();
if (len == 0) {
if (values != null) {
int len = values.size();
if (len == 0) {
return null;
} else if (len == 1) {
return values.get(0);
} else {
return Joiners.by(',').join(values);
}
}else{
return null;
} else if (len == 1) {
return values.get(0);
} else {
return Joiners.by(',').join(values);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册