提交 6c9057a6 编写于 作者: Y yong.you

modify the metric analyzer

上级 23717d6c
......@@ -29,6 +29,7 @@ import com.dianping.cat.consumer.metric.model.entity.Point;
import com.dianping.cat.consumer.metric.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.metric.model.transform.DefaultSaxParser;
import com.dianping.cat.consumer.metric.model.transform.DefaultXmlBuilder;
import com.dianping.cat.message.Event;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.Metric;
import com.dianping.cat.message.Transaction;
......@@ -107,10 +108,24 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer<MetricReport> implem
private Map<String, String> parseABtests(Transaction transaction) {
String abtest = queryAbTest(transaction);
return parseABTests(abtest);
}
private String queryAbTest(Transaction transaction) {
List<Message> messages = transaction.getChildren();
for (Message message : messages) {
if (message instanceof Event) {
if ("URL".equals(message.getType()) && "ABTest".equals(message.getName())) {
String data = (String) message.getData();
System.out.println(data);
return data;
}
}
}
return "";
}
......
......@@ -36,11 +36,11 @@ public class MetricDisplay extends BaseVisitor {
private static final String AVG = "avg";
public List<LineChart> getLineCharts(){
public List<LineChart> getLineCharts() {
return new ArrayList<LineChart>(m_lineCharts.values());
}
public Set<String> getAbtests(){
public Set<String> getAbtests() {
return m_abtests;
}
......@@ -91,6 +91,10 @@ public class MetricDisplay extends BaseVisitor {
@Override
public void visitGroup(Group group) {
String id = group.getName();
if ("".equals(id)) {
id = "Default";
}
double[] sum = new double[60];
double[] avg = new double[60];
double[] count = new double[60];
......
package com.dianping.cat.demo;
import org.junit.Test;
import com.dianping.cat.Cat;
import com.dianping.cat.message.Event;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.message.internal.DefaultMessageManager;
import com.dianping.cat.message.spi.internal.DefaultMessageTree;
public class TestABTestBusinessMessage {
private static final String TuanGou = "TuanGouWeb";
private static final String PayOrder = "PayOrder";
@Test
public void test() throws Exception {
for (int i = 0; i < 1000; i++) {
Transaction t = Cat.newTransaction("URL", "/index");
String abtest = buildAbStr(i);
Cat.logEvent("URL", "ABTest", Event.SUCCESS, abtest);
((DefaultMessageManager) Cat.getManager()).setMetricType(abtest);
DefaultMessageTree tree = (DefaultMessageTree) Cat.getManager().getThreadLocalMessageTree();
tree.setDomain(TuanGou);
t.complete();
}
for (int i = 0; i < 800; i++) {
Transaction t = Cat.newTransaction("URL", "/detail");
String abtest = buildAbStr(i);
Cat.logEvent("URL", "ABTest", Event.SUCCESS, abtest);
((DefaultMessageManager) Cat.getManager()).setMetricType(abtest);
DefaultMessageTree tree = (DefaultMessageTree) Cat.getManager().getThreadLocalMessageTree();
tree.setDomain(TuanGou);
t.complete();
}
for (int i = 0; i < 500; i++) {
Transaction t = Cat.newTransaction("URL", "/order/submitOrder");
String abtest = buildAbStr(i);
Cat.logEvent("URL", "ABTest", Event.SUCCESS, abtest);
((DefaultMessageManager) Cat.getManager()).setMetricType(abtest);
Cat.logMetricForCount("order");
Cat.logMetricForSum("payment.success", i);
DefaultMessageTree tree = (DefaultMessageTree) Cat.getManager().getThreadLocalMessageTree();
tree.setDomain(PayOrder);
t.complete();
}
Thread.sleep(1000);
}
private String buildAbStr(int i) {
int value = i % 3;
if (value == 0) {
return "1=ab:A&2=ab:A";
} else if (value == 1) {
return "1=ab:B&2=ab:B";
} else {
return "1=ab:C&2=ab:";
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册