diff --git a/cat-consumer/pom.xml b/cat-consumer/pom.xml index 28d97db8879a4019a77f3a22a9b6bf595b6e6254..c18be48334bb3ab97d1072f62ef36d04cc74d662 100644 --- a/cat-consumer/pom.xml +++ b/cat-consumer/pom.xml @@ -34,11 +34,10 @@ com.site.maven.plugins maven-codegen-plugin - 1.0.0-a5 + 1.0.3 - - default-cli + generate failure report model generate-sources dal-model @@ -57,6 +56,17 @@ ${basedir}/src/main/resources/META-INF/dal/model/transaction-report-manifest.xml + + + default-cli + generate-sources + + dal-model + + + ${basedir}/src/main/resources/META-INF/dal/model/ip-manifest.xml + + diff --git a/cat-consumer/src/main/java/META-INF/MANIFEST.MF b/cat-consumer/src/main/java/META-INF/MANIFEST.MF deleted file mode 100644 index 254272e1c0740423e25eb40be9a98ce1556474b1..0000000000000000000000000000000000000000 --- a/cat-consumer/src/main/java/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/failure/FailureReportAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/failure/FailureReportAnalyzer.java index 38fea5967db95a782b593089a9158c4783147234..0ddbfce7cf5ba4c17ce42a3145fe61b072eddb0a 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/failure/FailureReportAnalyzer.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/failure/FailureReportAnalyzer.java @@ -124,6 +124,12 @@ public class FailureReportAnalyzer extends AbstractMessageAnalyzer reports) { diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/ip/IpAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/ip/IpAnalyzer.java new file mode 100644 index 0000000000000000000000000000000000000000..e3f7c910ba19c972acf27c7857e9192428a2247e --- /dev/null +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/ip/IpAnalyzer.java @@ -0,0 +1,41 @@ +package com.dianping.cat.consumer.ip; + +import java.util.List; + +import com.dianping.cat.consumer.ip.model.entity.IpReport; +import com.dianping.cat.message.spi.AbstractMessageAnalyzer; +import com.dianping.cat.message.spi.MessageTree; + +public class IpAnalyzer extends AbstractMessageAnalyzer { + + @Override + protected void store(List result) { + // TODO Auto-generated method stub + + } + + @Override + public List generate() { + // TODO Auto-generated method stub + return null; + } + + @Override + public IpReport generate(String domain) { + // TODO Auto-generated method stub + return null; + } + + @Override + protected void process(MessageTree tree) { + // TODO Auto-generated method stub + + } + + @Override + protected boolean isTimeout() { + // TODO Auto-generated method stub + return false; + } + +} diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionReportAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionReportAnalyzer.java index 199d59936002471ea6be368c2e04eb90871152d7..ff90f14718c8d87bb39a5fb925b1fff3ae13954d 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionReportAnalyzer.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionReportAnalyzer.java @@ -6,9 +6,11 @@ package com.dianping.cat.consumer.transaction; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Collection; -import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.codehaus.plexus.logging.LogEnabled; import org.codehaus.plexus.logging.Logger; @@ -34,14 +36,13 @@ import com.site.lookup.annotation.Inject; * @since Jan 5, 2012 */ public class TransactionReportAnalyzer extends AbstractMessageAnalyzer implements Initializable, LogEnabled { - private final static long MINUTE = 60 * 1000L; - private static final SimpleDateFormat FILE_SDF = new SimpleDateFormat("yyyyMMddHHmm"); + private final static SimpleDateFormat FILE_SDF = new SimpleDateFormat("yyyyMMddHHmm"); @Inject private MessageManager m_manager; - private TransactionReport report; + private Map m_reports = new HashMap(); private long m_extraTime; @@ -49,10 +50,17 @@ public class TransactionReportAnalyzer extends AbstractMessageAnalyzer types = report.getTypes().values(); + private long m_startTime; - for (TransactionType type : types) { + private long m_duration; + + private TransactionReport computeMeanSquareDeviation(String domain) { + TransactionReport report = m_reports.get(domain); + if (report == null) { + return report; + } + + for (TransactionType type : report.getTypes().values()) { long typeCount = 0; long typeFailCount = 0; double typeSum = 0; @@ -91,16 +99,7 @@ public class TransactionReportAnalyzer extends AbstractMessageAnalyzer generate() { + List reports = new ArrayList(); + for (String domain : m_reports.keySet()) { + reports.add(generate(domain)); + } + return reports; + } + + @Override + public TransactionReport generate(String domain) { + ArrayList domains = new ArrayList(this.m_reports.keySet()); + if (domain == null) { + domain = domains.get(0); + } + TransactionReport report = computeMeanSquareDeviation(domain); + for (String ele : domains) { + report.addDomain(ele); + } return report; } - // TODO private String getTransactionFileName(TransactionReport report) { StringBuffer result = new StringBuffer(); String start = FILE_SDF.format(report.getStartTime()); @@ -139,7 +153,7 @@ public class TransactionReportAnalyzer extends AbstractMessageAnalyzer endTime + m_extraTime) { @@ -148,7 +162,7 @@ public class TransactionReportAnalyzer extends AbstractMessageAnalyzer children = t.getChildren(); for (Message child : children) { - process(child, null); + process(report, child, null); } } } @Override protected void process(MessageTree tree) { + String domain = tree.getDomain(); + TransactionReport report = this.m_reports.get(domain); if (report == null) { - this.report = new TransactionReport(tree.getDomain()); + report = new TransactionReport(domain); + this.m_reports.put(domain, report); } Message message = tree.getMessage(); - process(message, tree.getMessageId()); + process(report, message, tree.getMessageId()); } public void setAnalyzerInfo(long startTime, long duration, String domain, long extraTime) { - report = new TransactionReport(domain); - report.setStartTime(new Date(startTime)); - report.setEndTime(new Date(startTime + duration - MINUTE)); m_extraTime = extraTime; + m_startTime = startTime; + m_duration = duration; } public void setReportPath(String configPath) { m_reportPath = configPath; } + /** + * @param count + * @param ave + * @param sum2 + * @return + */ + public double std(long count, double ave, double sum2) { + return Math.sqrt(sum2 / count - 2 * ave * ave + ave * ave); + } + @Override - protected void store(TransactionReport result) { - String failureFileName = getTransactionFileName(report); - String htmlPath = new StringBuilder().append(m_reportPath).append(failureFileName).append(".html").toString(); - File file = new File(htmlPath); + protected void store(List reports) { + if (reports == null || reports.size() == 0) { + return; + } + for (TransactionReport report : reports) { + String failureFileName = getTransactionFileName(report); + String htmlPath = new StringBuilder().append(m_reportPath).append(failureFileName).append(".html").toString(); + File file = new File(htmlPath); - file.getParentFile().mkdirs(); + file.getParentFile().mkdirs(); - DefaultJsonBuilder builder = new DefaultJsonBuilder(); + DefaultJsonBuilder builder = new DefaultJsonBuilder(); - report.accept(builder); + report.accept(builder); - try { - Files.forIO().writeTo(file, builder.getString()); - } catch (IOException e) { - m_logger.error(String.format("Error when writing to file(%s)!", file), e); + try { + Files.forIO().writeTo(file, builder.getString()); + } catch (IOException e) { + m_logger.error(String.format("Error when writing to file(%s)!", file), e); + } } } + } diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/ip-codegen.xml b/cat-consumer/src/main/resources/META-INF/dal/model/ip-codegen.xml new file mode 100644 index 0000000000000000000000000000000000000000..07fe28df0e4eae04ded8b593cec2d3871f84320d --- /dev/null +++ b/cat-consumer/src/main/resources/META-INF/dal/model/ip-codegen.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/ip-manifest.xml b/cat-consumer/src/main/resources/META-INF/dal/model/ip-manifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..21e2e7977476727baed2e0242c5c121518e7cc43 --- /dev/null +++ b/cat-consumer/src/main/resources/META-INF/dal/model/ip-manifest.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/ip-model.xml b/cat-consumer/src/main/resources/META-INF/dal/model/ip-model.xml new file mode 100644 index 0000000000000000000000000000000000000000..a7dfac90b4c213bb5696a5e53615678a0d957b5d --- /dev/null +++ b/cat-consumer/src/main/resources/META-INF/dal/model/ip-model.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/transaction-report-codegen.xml b/cat-consumer/src/main/resources/META-INF/dal/model/transaction-report-codegen.xml index f0eee7027cb3f2c279d244c2cdb797bef329ca97..55efa229e8f48cbff81449874b483518532fdf91 100644 --- a/cat-consumer/src/main/resources/META-INF/dal/model/transaction-report-codegen.xml +++ b/cat-consumer/src/main/resources/META-INF/dal/model/transaction-report-codegen.xml @@ -2,6 +2,7 @@ + diff --git a/cat-consumer/src/test/java/com/dianping/cat/consumer/ManyAnalyzerTest.java b/cat-consumer/src/test/java/com/dianping/cat/consumer/ManyAnalyzerTest.java index d048b847f7a2a10ba759f53c7b0a2beab19ce326..6b9158a06a6b23f1c8b39391712c1b596081e6b6 100644 --- a/cat-consumer/src/test/java/com/dianping/cat/consumer/ManyAnalyzerTest.java +++ b/cat-consumer/src/test/java/com/dianping/cat/consumer/ManyAnalyzerTest.java @@ -60,6 +60,12 @@ public class ManyAnalyzerTest extends ComponentTestCase { @Override protected void store(List result) { } + + @Override + public AnalyzerResult generate(String domain) { + // TODO Auto-generated method stub + return null; + } } public static class MockAnalyzer2 extends @@ -82,6 +88,12 @@ public class ManyAnalyzerTest extends ComponentTestCase { @Override protected void store(List result) { } + + @Override + public AnalyzerResult generate(String domain) { + // TODO Auto-generated method stub + return null; + } } public static class MockAnalyzer3 extends @@ -104,6 +116,12 @@ public class ManyAnalyzerTest extends ComponentTestCase { @Override protected void store(List result) { } + + @Override + public AnalyzerResult generate(String domain) { + // TODO Auto-generated method stub + return null; + } } public static class AnalyzerResult { diff --git a/cat-consumer/src/test/java/com/dianping/cat/consumer/OneAnalyzerTwoDurationTest.java b/cat-consumer/src/test/java/com/dianping/cat/consumer/OneAnalyzerTwoDurationTest.java index 7fe301b8aafe784875badac878708b37e8dd796d..89acf006beec15449c36c2885ca560bd02bac14b 100644 --- a/cat-consumer/src/test/java/com/dianping/cat/consumer/OneAnalyzerTwoDurationTest.java +++ b/cat-consumer/src/test/java/com/dianping/cat/consumer/OneAnalyzerTwoDurationTest.java @@ -78,6 +78,12 @@ public class OneAnalyzerTwoDurationTest extends ComponentTestCase { @Override protected void store(List result) { } + + @Override + public AnalyzerResult generate(String domain) { + // TODO Auto-generated method stub + return null; + } } public static class AnalyzerResult { diff --git a/cat-consumer/src/test/java/com/dianping/cat/consumer/ip/IpAnalyzerTest.java b/cat-consumer/src/test/java/com/dianping/cat/consumer/ip/IpAnalyzerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..3307236ae1a3be3b336be0a8936b18209a3b02c7 --- /dev/null +++ b/cat-consumer/src/test/java/com/dianping/cat/consumer/ip/IpAnalyzerTest.java @@ -0,0 +1,19 @@ +package com.dianping.cat.consumer.ip; + +import org.junit.Assert; +import org.junit.Test; + +import com.dianping.cat.consumer.ip.model.entity.IpReport; +import com.dianping.cat.consumer.ip.model.transform.DefaultParser; +import com.site.helper.Files; + +public class IpAnalyzerTest { + @Test + public void testXml() throws Exception { + DefaultParser parser = new DefaultParser(); + String expected = Files.forIO().readFrom(getClass().getResourceAsStream("ip.xml"), "utf-8"); + IpReport report = parser.parse(expected); + + Assert.assertEquals("XML is not well parsed!", expected.replace("\r", ""), report.toString().replace("\r", "")); + } +} diff --git a/cat-consumer/src/test/java/com/dianping/cat/consumer/transaction/TransactionReportMessageAnalyzerTest.java b/cat-consumer/src/test/java/com/dianping/cat/consumer/transaction/TransactionReportMessageAnalyzerTest.java index f4afa92a2db5b8f441e6d4d81dd13dce75576d5c..ad3ba72e6fbb384b1721a3b2e40eb4b3f22a7204 100644 --- a/cat-consumer/src/test/java/com/dianping/cat/consumer/transaction/TransactionReportMessageAnalyzerTest.java +++ b/cat-consumer/src/test/java/com/dianping/cat/consumer/transaction/TransactionReportMessageAnalyzerTest.java @@ -93,7 +93,7 @@ public class TransactionReportMessageAnalyzerTest { analyzer.process(tree); } - TransactionReport report = analyzer.generate(); + TransactionReport report = analyzer.generate("group"); TransactionType typeA = report.getTypes().get("A"); TransactionName n1 = typeA.getNames().get("n1"); assertEquals(1000, n1.getTotalCount()); diff --git a/cat-consumer/src/test/resources/com/dianping/cat/consumer/ip/ip.xml b/cat-consumer/src/test/resources/com/dianping/cat/consumer/ip/ip.xml new file mode 100644 index 0000000000000000000000000000000000000000..feee6ad7ecf4a04dc0867400e545bc437079c2f3 --- /dev/null +++ b/cat-consumer/src/test/resources/com/dianping/cat/consumer/ip/ip.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/cat-core/src/main/java/META-INF/MANIFEST.MF b/cat-core/src/main/java/META-INF/MANIFEST.MF deleted file mode 100644 index 254272e1c0740423e25eb40be9a98ce1556474b1..0000000000000000000000000000000000000000 --- a/cat-core/src/main/java/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/cat-core/src/main/java/com/dianping/cat/message/internal/DefaultMessageManager.java b/cat-core/src/main/java/com/dianping/cat/message/internal/DefaultMessageManager.java index a5c8ff1f7f90e51c23d699c8adba1b0ad2dd7e11..b0867148c17062b56db8568330fa7a6f258fce11 100644 --- a/cat-core/src/main/java/com/dianping/cat/message/internal/DefaultMessageManager.java +++ b/cat-core/src/main/java/com/dianping/cat/message/internal/DefaultMessageManager.java @@ -138,7 +138,12 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan m_tree.setDomain(domain); m_tree.setSessionToken(sessionToken); m_tree.setRequestToken(requestToken); - m_tree.setThreadId(Long.toHexString(Thread.currentThread().getId())); + + 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 diff --git a/cat-core/src/main/java/com/dianping/cat/message/spi/AbstractMessageAnalyzer.java b/cat-core/src/main/java/com/dianping/cat/message/spi/AbstractMessageAnalyzer.java index 9089be24995ee6c6bd5f3f5c5a8f530f602d252b..c209f4af5be453ff3e9d3eb93d56ba9097cfb2c5 100644 --- a/cat-core/src/main/java/com/dianping/cat/message/spi/AbstractMessageAnalyzer.java +++ b/cat-core/src/main/java/com/dianping/cat/message/spi/AbstractMessageAnalyzer.java @@ -2,6 +2,7 @@ package com.dianping.cat.message.spi; import java.util.List; + public abstract class AbstractMessageAnalyzer implements MessageAnalyzer { @Override public void analyze(MessageQueue queue) { @@ -31,6 +32,8 @@ public abstract class AbstractMessageAnalyzer implements MessageAnalyzer { protected abstract void store(List result); public abstract List generate(); + + public abstract R generate(String domain); protected abstract void process(MessageTree tree); diff --git a/cat-core/src/main/java/com/dianping/cat/message/spi/MessageTree.java b/cat-core/src/main/java/com/dianping/cat/message/spi/MessageTree.java index 6f02e9906cd0696339debedb9b89c6e2f3ab174b..4173b68260a832f7a85a182df8d86e9dbd79c89e 100644 --- a/cat-core/src/main/java/com/dianping/cat/message/spi/MessageTree.java +++ b/cat-core/src/main/java/com/dianping/cat/message/spi/MessageTree.java @@ -19,6 +19,8 @@ public interface MessageTree { public String getThreadId(); + public String getThreadName(); + public void setDomain(String domain); public void setHostName(String hostName); @@ -34,4 +36,6 @@ public interface MessageTree { public void setSessionToken(String sessionToken); public void setThreadId(String threadId); + + public void setThreadName(String threadName); } diff --git a/cat-core/src/main/java/com/dianping/cat/message/spi/codec/HtmlMessageCodec.java b/cat-core/src/main/java/com/dianping/cat/message/spi/codec/HtmlMessageCodec.java index 8008b03b89049d0847690e88e24a9a2a66e5f9b1..75d961dd55620fec4764879e237b0e45a4f76f01 100644 --- a/cat-core/src/main/java/com/dianping/cat/message/spi/codec/HtmlMessageCodec.java +++ b/cat-core/src/main/java/com/dianping/cat/message/spi/codec/HtmlMessageCodec.java @@ -64,6 +64,7 @@ public class HtmlMessageCodec implements MessageCodec { count += helper.td(buf, tree.getHostName()); count += helper.td(buf, tree.getIpAddress()); count += helper.td(buf, tree.getThreadId()); + count += helper.td(buf, tree.getThreadName()); count += helper.td(buf, tree.getMessageId()); count += helper.td(buf, tree.getRequestToken()); count += helper.td(buf, tree.getSessionToken()); @@ -320,13 +321,15 @@ public class HtmlMessageCodec implements MessageCodec { * Thread safe date helper class. DateFormat is NOT thread safe. */ protected static class DateHelper { + private static final String DATE_PATTERN = "HH:mm:ss.SSS"; + private BlockingQueue m_queue = new ArrayBlockingQueue(20); public String format(long timestamp) { SimpleDateFormat format = m_queue.poll(); if (format == null) { - format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + format = new SimpleDateFormat(DATE_PATTERN); } try { @@ -342,7 +345,7 @@ public class HtmlMessageCodec implements MessageCodec { SimpleDateFormat format = m_queue.poll(); if (format == null) { - format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss"); + format = new SimpleDateFormat(DATE_PATTERN); } try { diff --git a/cat-core/src/main/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodec.java b/cat-core/src/main/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodec.java index aeade0972a9807a6de95d45fcc84a35160770e5f..0017604b0f102e16145d4668d2ae268e8c66a98d 100644 --- a/cat-core/src/main/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodec.java +++ b/cat-core/src/main/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodec.java @@ -53,6 +53,7 @@ public class PlainTextMessageCodec implements MessageCodec { String hostName = helper.read(buf, TAB); String ipAddress = helper.read(buf, TAB); String threadId = helper.read(buf, TAB); + String threadName = helper.read(buf, TAB); String messageId = helper.read(buf, TAB); String requestToken = helper.read(buf, TAB); String sessionToken = helper.read(buf, LF); @@ -62,6 +63,7 @@ public class PlainTextMessageCodec implements MessageCodec { tree.setHostName(hostName); tree.setIpAddress(ipAddress); tree.setThreadId(threadId); + tree.setThreadName(threadName); tree.setMessageId(messageId); tree.setRequestToken(requestToken); tree.setSessionToken(sessionToken); @@ -208,6 +210,8 @@ public class PlainTextMessageCodec implements MessageCodec { count += helper.write(buf, TAB); count += helper.write(buf, tree.getThreadId()); count += helper.write(buf, TAB); + count += helper.write(buf, tree.getThreadName()); + count += helper.write(buf, TAB); count += helper.write(buf, tree.getMessageId()); count += helper.write(buf, TAB); count += helper.write(buf, tree.getRequestToken()); diff --git a/cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessageTree.java b/cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessageTree.java index 8e112119855f74acf0528a3266818bdea53c9c8d..808425b6912042602104dceaeb7ff2f090c4007a 100644 --- a/cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessageTree.java +++ b/cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessageTree.java @@ -24,6 +24,8 @@ public class DefaultMessageTree implements MessageTree { private String m_threadId; + private String m_threadName; + private Message m_message; @Override @@ -66,6 +68,10 @@ public class DefaultMessageTree implements MessageTree { return m_threadId; } + public String getThreadName() { + return m_threadName; + } + @Override public void setDomain(String domain) { m_domain = domain; @@ -106,6 +112,10 @@ public class DefaultMessageTree implements MessageTree { m_threadId = threadId; } + public void setThreadName(String threadName) { + m_threadName = threadName; + } + @Override public String toString() { PlainTextMessageCodec codec = new PlainTextMessageCodec(); diff --git a/cat-core/src/test/java/com/dianping/cat/message/spi/codec/HtmlMessageCodecTest.java b/cat-core/src/test/java/com/dianping/cat/message/spi/codec/HtmlMessageCodecTest.java index bc0c34d398b5b0ee150ff28bb2a295c6fa94867b..f3bb8e1e02b2e40432604181a837877ac0a42d44 100644 --- a/cat-core/src/test/java/com/dianping/cat/message/spi/codec/HtmlMessageCodecTest.java +++ b/cat-core/src/test/java/com/dianping/cat/message/spi/codec/HtmlMessageCodecTest.java @@ -69,6 +69,7 @@ public class HtmlMessageCodecTest { tree.setRequestToken("requestToken"); tree.setSessionToken("sessionToken"); tree.setThreadId("threadId"); + tree.setThreadName("threadName"); return tree; } @@ -90,7 +91,7 @@ public class HtmlMessageCodecTest { Event event = newEvent("type", "name", timestamp, "0", "here is the data."); check(event, - "E2012-01-02 15:33:41.987typename0here is the data.\r\n"); + "E15:33:41.987typename0here is the data.\r\n"); } @Test @@ -102,7 +103,7 @@ public class HtmlMessageCodecTest { Event event = newEvent("Exception", Exception.class.getName(), timestamp, "ERROR", trace); check(event, - "E2012-01-02 15:33:41.987Exceptionjava.lang.ExceptionERRORjava.lang.Exception\n
" + "E15:33:41.987Exceptionjava.lang.ExceptionERRORjava.lang.Exception\n
" + "\tat com.dianping.cat.message.spi.codec.PlainTextMessageCodecTest.testEventForException(PlainTextMessageCodecTest.java:112)\n
" + "\tat com.dianping.cat.message.spi.codec.PlainTextMessageCodecTest.testEventForException(PlainTextMessageCodecTest.java:108)\n
" + "\r\n"); @@ -114,7 +115,7 @@ public class HtmlMessageCodecTest { Heartbeat heartbeat = newHeartbeat("type", "name", timestamp, "0", "here is the data."); check(heartbeat, - "H2012-01-02 15:33:41.987typename0here is the data.\r\n"); + "H15:33:41.987typename0here is the data.\r\n"); } @Test @@ -123,14 +124,14 @@ public class HtmlMessageCodecTest { DefaultMessageTree tree = newMessageTree(); long timestamp = 1325489621987L; String expected1 = "\r\n" - + "\r\n" + + "\r\n" + "
HT1domainhostNameipAddressthreadIdmessageIdrequestTokensessionToken
HT1domainhostNameipAddressthreadIdthreadNamemessageIdrequestTokensessionToken
"; checkTree(tree, expected1); String expected2 = "\r\n" + "\r\n" - + "\r\n" + + "\r\n" + "
HT1domainhostNameipAddressthreadIdmessageIdrequestTokensessionToken
E2012-01-02 15:33:41.987typename0here is the data.
E15:33:41.987typename0here is the data.
"; tree.setMessage(newEvent("type", "name", timestamp, "0", "here is the data.")); @@ -151,15 +152,15 @@ public class HtmlMessageCodecTest { root.addChild(newEvent("URL", "View", timestamp + 40, "0", "view=HTML")); check(root, - "t2012-01-02 15:33:41.987URLReview\r\n" - + "  E2012-01-02 15:33:41.987URLPayload0ip=127.0.0.1&ua=Mozilla 5.0...&refer=...&...\r\n" - + "  A2012-01-02 15:33:41.987ServiceAuth020ms userId=1357&token=...\r\n" - + "  t2012-01-02 15:33:42.009CachefindReviewByPK\r\n" - + "    E2012-01-02 15:33:42.009CacheHosthost-10ip=192.168.8.123\r\n" - + "  T2012-01-02 15:33:42.010CachefindReviewByPKMissing1ms 2468\r\n" - + "  A2012-01-02 15:33:42.012DALfindReviewByPK05ms select title,content from Review where id = ?\r\n" - + "  E2012-01-02 15:33:42.027URLView0view=HTML\r\n" - + "T2012-01-02 15:33:42.087URLReview0100ms /review/2468\r\n"); + "t15:33:41.987URLReview\r\n" + + "  E15:33:41.987URLPayload0ip=127.0.0.1&ua=Mozilla 5.0...&refer=...&...\r\n" + + "  A15:33:41.987ServiceAuth020ms userId=1357&token=...\r\n" + + "  t15:33:42.009CachefindReviewByPK\r\n" + + "    E15:33:42.009CacheHosthost-10ip=192.168.8.123\r\n" + + "  T15:33:42.010CachefindReviewByPKMissing1ms 2468\r\n" + + "  A15:33:42.012DALfindReviewByPK05ms select title,content from Review where id = ?\r\n" + + "  E15:33:42.027URLView0view=HTML\r\n" + + "T15:33:42.087URLReview0100ms /review/2468\r\n"); } @Test @@ -168,6 +169,6 @@ public class HtmlMessageCodecTest { Transaction transaction = newTransaction("type", "name", timestamp, "0", 10, "here is the data."); check(transaction, - "A2012-01-02 15:33:41.987typename010ms here is the data.\r\n"); + "A15:33:41.987typename010ms here is the data.\r\n"); } } diff --git a/cat-core/src/test/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodecTest.java b/cat-core/src/test/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodecTest.java index 2e8972ac5bd4a7fda47f10d23df0227fb10f9182..e283c7fdf0a5b8ba769148b85d5f8ded4db7214e 100644 --- a/cat-core/src/test/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodecTest.java +++ b/cat-core/src/test/java/com/dianping/cat/message/spi/codec/PlainTextMessageCodecTest.java @@ -81,6 +81,7 @@ public class PlainTextMessageCodecTest { tree.setRequestToken("requestToken"); tree.setSessionToken("sessionToken"); tree.setThreadId("threadId"); + tree.setThreadName("threadName"); return tree; } @@ -127,7 +128,7 @@ public class PlainTextMessageCodecTest { public void testMessageTree() { DefaultMessageTree tree = newMessageTree(); long timestamp = 1325489621987L; - String expected = "PT1\tdomain\thostName\tipAddress\tthreadId\tmessageId\trequestToken\tsessionToken\n"; + String expected = "PT1\tdomain\thostName\tipAddress\tthreadId\tthreadName\tmessageId\trequestToken\tsessionToken\n"; checkTree(tree, expected); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java index b857f5ebc6c492e27641f838c003c670ac97117b..fd9b10834fe0f37d1d20564546002e00226b68ce 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java @@ -41,7 +41,7 @@ public class Handler implements PageHandler { .getCurrentAnalyzer("transaction"); if (analyzer != null) { - model.setReport(analyzer.generate()); + model.setReport(analyzer.generate(ctx.getRequestContext().getParameterProvider().getParameter("domain"))); } else { model.setReport(new TransactionReport("none")); } diff --git a/cat-home/src/main/webapp/WEB-INF/webres.tld b/cat-home/src/main/webapp/WEB-INF/webres.tld index b5dec5423a5d57da77cda5c465fd7ecad91cf6d4..5c241b7116e428a2f6917b4f61d445e442d3cc19 100644 --- a/cat-home/src/main/webapp/WEB-INF/webres.tld +++ b/cat-home/src/main/webapp/WEB-INF/webres.tld @@ -51,6 +51,13 @@ com.ebay.webres.taglib.basic.UseCssTagHandler JSP + +value +false +true +java.lang.Object + + secure false @@ -72,13 +79,6 @@ java.lang.String - -value -false -true -java.lang.Object - - target false @@ -114,18 +114,18 @@ com.ebay.webres.taglib.basic.SetTagHandler JSP - -id + +value true true -java.lang.String +java.lang.Object - -value + +id true true -java.lang.Object +java.lang.String false @@ -135,6 +135,13 @@ com.ebay.webres.taglib.basic.UseJsTagHandler JSP + +value +false +true +java.lang.Object + + secure false @@ -156,13 +163,6 @@ java.lang.String - -value -false -true -java.lang.Object - - target false @@ -177,6 +177,13 @@ com.ebay.webres.taglib.basic.LinkTagHandler JSP + +value +true +true +java.lang.Object + + secure false @@ -190,13 +197,6 @@ true java.lang.String - - -value -true -true -java.lang.Object - true @@ -205,6 +205,13 @@ com.ebay.webres.taglib.basic.ImageTagHandler JSP + +value +true +true +java.lang.Object + + secure false @@ -225,13 +232,6 @@ true java.lang.String - - -value -true -true -java.lang.Object - true diff --git a/cat-home/src/main/webapp/js/transaction.js b/cat-home/src/main/webapp/js/transaction.js index 35e748c98d9fb74912d847f3a379db07bb4144d1..730c8e156dfe1e5ff904cb931da481c782bb6832 100644 --- a/cat-home/src/main/webapp/js/transaction.js +++ b/cat-home/src/main/webapp/js/transaction.js @@ -11,7 +11,10 @@ $(function(){ ); $(function() - { + { + domainlinks = 'Domains '; + $.each(data.domains, function(i, t){domainlinks += "[ "+t+" ]"}); + $("#domainlist").html(domainlinks); $("#gridTable").jqGrid({ datatype: "local", colNames:['Type', 'Total Count', 'Fail Count', 'Failure%', 'Sample Link', 'Min/Max/Avg/Std(ms)'], @@ -25,7 +28,7 @@ $(function() ], sortname:'type', sortorder:'asc', - caption: "Transaction Summary", + caption: "Domain " + data["domain"] + " Transaction Summary", height: '100%', autowidth: true, loadComplete: function() { diff --git a/cat-home/src/main/webapp/jsp/report/transaction.jsp b/cat-home/src/main/webapp/jsp/report/transaction.jsp index ad3ce4dbb8197119af38ee4ff87abc6933657735..f6d06a940df298f0f1b12ce6634f9c3238f9e7e4 100644 --- a/cat-home/src/main/webapp/jsp/report/transaction.jsp +++ b/cat-home/src/main/webapp/jsp/report/transaction.jsp @@ -1,28 +1,41 @@ -<%@ page contentType="text/html; charset=utf-8" %> +<%@ page contentType="text/html; charset=utf-8"%> <%@ taglib prefix="a" uri="/WEB-INF/app.tld"%> <%@ taglib prefix="res" uri="http://www.ebay.com/webres"%> - - - + + + - - - + + + - - - - + + + + - + + + + + + + + + + +
+
-
-
- - +
\ No newline at end of file diff --git a/pom.xml b/pom.xml index 28d289d37a04740fd871c04b3be614352703672a..946ae5c00566baf4a87fde8389c39a5edd4ebb12 100644 --- a/pom.xml +++ b/pom.xml @@ -16,14 +16,14 @@ - com.dianping.cat - cat-core - 0.1.0 + com.dianping.cat + cat-core + 0.1.0 - com.dianping.cat - cat-consumer - 0.1.0 + com.dianping.cat + cat-consumer + 0.1.0 com.site.common @@ -90,11 +90,11 @@ jsp-api 2.1 - - mysql - mysql-connector-java - 5.1.12 - + + mysql + mysql-connector-java + 5.1.12 + org.jboss.netty netty