From a4c443a8d56cb751612f9e4e00e7236649901d25 Mon Sep 17 00:00:00 2001 From: "yong.you" Date: Fri, 21 Jun 2013 14:21:27 +0800 Subject: [PATCH] add metric config --- cat-consumer-advanced/pom.xml | 3 +- .../advanced/BussinessConfigManager.java | 292 ------------------ .../cat/consumer/advanced/MetricAnalyzer.java | 18 +- .../advanced/MetricConfigManager.java | 178 +++++++++++ .../build/ComponentsConfigurator.java | 7 +- .../dal/model/metric-config-codegen.xml | 18 ++ .../dal/model/metric-config-manifest.xml | 6 + .../dal/model/metric-config-model.xml | 17 + .../resources/META-INF/plexus/components.xml | 11 +- .../META-INF/wizard/model/wizard.xml | 3 + .../cat/consumer/model/metric-config.xml | 5 + .../core/ProductLineConfigManager.java | 38 ++- .../com/dianping/cat/helper/CatString.java | 6 + .../dianping/cat/report/page/LineChart.java | 10 +- .../dependency/graph/LineGraphBuilder.java | 2 +- .../cat/report/page/event/HistoryGraphs.java | 4 +- .../cat/report/page/health/HistoryGraphs.java | 4 +- .../report/page/heartbeat/HistoryGraphs.java | 2 +- .../cat/report/page/metric/Handler.java | 10 +- .../cat/report/page/metric/MetricDisplay.java | 77 +++-- .../cat/report/page/state/StateGraphs.java | 4 +- .../page/transaction/HistoryGraphs.java | 6 +- .../resources/META-INF/plexus/components.xml | 11 +- .../config/default-metric-config.xml | 7 + .../src/main/webapp/jsp/report/metric.jsp | 13 +- .../cat/demo/TestABTestBusinessMessage.java | 77 ++--- .../cat/demo/TestBusinessMessage.java | 1 - 27 files changed, 419 insertions(+), 411 deletions(-) delete mode 100644 cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/BussinessConfigManager.java create mode 100644 cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/MetricConfigManager.java create mode 100644 cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-codegen.xml create mode 100644 cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-manifest.xml create mode 100644 cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-model.xml create mode 100644 cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/model/metric-config.xml create mode 100644 cat-home/src/main/resources/config/default-metric-config.xml diff --git a/cat-consumer-advanced/pom.xml b/cat-consumer-advanced/pom.xml index bd42eaf75..a37a79a5d 100644 --- a/cat-consumer-advanced/pom.xml +++ b/cat-consumer-advanced/pom.xml @@ -69,7 +69,8 @@ ${basedir}/src/main/resources/META-INF/dal/model/matrix-report-manifest.xml, ${basedir}/src/main/resources/META-INF/dal/model/metric-report-manifest.xml, ${basedir}/src/main/resources/META-INF/dal/model/health-report-manifest.xml, - ${basedir}/src/main/resources/META-INF/dal/model/dependency-report-manifest.xml, + ${basedir}/src/main/resources/META-INF/dal/model/dependency-report-manifest.xml, + ${basedir}/src/main/resources/META-INF/dal/model/metric-config-manifest.xml, diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/BussinessConfigManager.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/BussinessConfigManager.java deleted file mode 100644 index 532d9236a..000000000 --- a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/BussinessConfigManager.java +++ /dev/null @@ -1,292 +0,0 @@ -package com.dianping.cat.consumer.advanced; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; - -public class BussinessConfigManager implements Initializable { - - // key is domain - private Map>> m_configs = new ConcurrentHashMap>>(); - - public Map getUrlConfigs(String domain) { - return getMetricConfigsByType(domain, BusinessConfig.URL); - } - - public Map getMetricConfigs(String domain) { - return getMetricConfigsByType(domain, BusinessConfig.METRIC); - } - - public List getConfigs(List domains) { - List configs = new ArrayList(); - - for (String domain : domains) { - Map> value = m_configs.get(domain); - - if(value!=null){ - for (Entry> internalEntry : value.entrySet()) { - configs.addAll(internalEntry.getValue().values()); - } - } - } - - Collections.sort(configs, new BusinessConfigCompator()); - return configs; - } - - private Map getMetricConfigsByType(String domain, int type) { - Map> configMap = m_configs.get(domain); - - if (configMap != null) { - Map config = configMap.get(type); - - if (config != null) { - return config; - } - } - return new HashMap(); - } - - private BussinessConfigManager addConfig(BusinessConfig config) { - String domain = config.getDomain(); - Map> configsMap = m_configs.get(domain); - - if (configsMap == null) { - configsMap = new ConcurrentHashMap>(); - m_configs.put(config.getDomain(), configsMap); - } - - int type = config.getType(); - Map configs = configsMap.get(type); - - if (configs == null) { - configs = new ConcurrentHashMap(); - configsMap.put(config.getType(), configs); - } - configs.put(config.getMainKey(), config); - return this; - } - - @Override - public void initialize() throws InitializationException { - String TuanGouWeb = "TuanGouWeb"; - String PayOrder = "PayOrder"; - String Cat = "Cat"; - - BusinessConfig config = new BusinessConfig(); - - config.setDomain(Cat).setType(BusinessConfig.URL); - config.setViewOrder(1).setMainKey("t").setClassifications(null); - config.setTitle("Transaction").setShowCount(true).setShowAvg(true).setShowSum(true); - addConfig(config); - - config = new BusinessConfig(); - - config.setDomain(Cat).setType(BusinessConfig.URL); - config.setViewOrder(2).setMainKey("e").setClassifications(null); - config.setTitle("Event").setShowCount(true).setShowAvg(false).setShowSum(false); - - addConfig(config); - - config = new BusinessConfig(); - config.setDomain(Cat).setType(BusinessConfig.URL); - config.setViewOrder(3).setMainKey("home").setClassifications(null); - config.setTitle("Home").setShowCount(true).setShowAvg(false).setShowSum(false); - - addConfig(config); - - config = new BusinessConfig(); - config.setDomain(TuanGouWeb).setType(BusinessConfig.URL); - config.setViewOrder(1).setMainKey("/index").setClassifications("channel"); - config.setTitle(MetricTitle.INDEX).setShowCount(true).setShowAvg(false).setShowSum(false); - - addConfig(config); - - config = new BusinessConfig(); - config.setDomain(TuanGouWeb).setType(BusinessConfig.URL); - config.setViewOrder(2).setMainKey("/detail").setClassifications("channel"); - config.setTitle(MetricTitle.DETAIL).setShowCount(true).setShowAvg(false).setShowSum(false); - - addConfig(config); - - config = new BusinessConfig(); - config.setDomain(PayOrder).setType(BusinessConfig.URL); - config.setViewOrder(3).setMainKey("/order/submitOrder").setClassifications("channel"); - config.setTitle(MetricTitle.PAY).setShowCount(true).setShowAvg(false).setShowSum(false); - - addConfig(config); - - config = new BusinessConfig(); - config.setDomain(PayOrder).setType(BusinessConfig.METRIC); - config.setViewOrder(4).setMainKey("order").setClassifications("channel").setTarget("quantity"); - config.setTitle(MetricTitle.ORDER).setShowCount(true).setShowAvg(false).setShowSum(false); - - addConfig(config); - - config = new BusinessConfig(); - config.setDomain(PayOrder).setType(BusinessConfig.METRIC); - config.setViewOrder(5).setMainKey("payment.pending").setClassifications("channel").setTarget("amount"); - config.setTitle(MetricTitle.SUCCESS).setShowCount(false).setShowAvg(false).setShowSum(false); - - addConfig(config); - - config = new BusinessConfig(); - config.setDomain(PayOrder).setType(BusinessConfig.METRIC); - config.setViewOrder(6).setMainKey("payment.success").setClassifications("channel").setTarget("amount"); - config.setTitle(MetricTitle.SUCCESS).setShowCount(false).setShowAvg(false).setShowSum(true); - - addConfig(config); - } - - public static class BusinessConfigCompator implements Comparator { - - @Override - public int compare(BusinessConfig o1, BusinessConfig o2) { - return o1.getViewOrder() - o2.getViewOrder(); - } - - } - - public static class BusinessConfig { - public static final int URL = 1; - - public static final int METRIC = 2; - - public static final String Suffix_SUM = "(总和)"; - - public static final String Suffix_COUNT = "(次数)"; - - public static final String Suffix_AVG = "(平均)"; - - private String m_domain; - - private int m_type; - - private int m_viewOrder; - - private String m_mainKey; - - private String m_target; - - private String m_classifications; - - private String m_title; - - private boolean m_showSum; - - private boolean m_showCount; - - private boolean m_showAvg; - - public String getTarget() { - return m_target; - } - - public BusinessConfig setTarget(String target) { - m_target = target; - return this; - } - - public String getClassifications() { - return m_classifications; - } - - public String getDomain() { - return m_domain; - } - - public String getMainKey() { - return m_mainKey; - } - - public String getTitle() { - return m_title; - } - - public int getType() { - return m_type; - } - - public int getViewOrder() { - return m_viewOrder; - } - - public boolean isShowAvg() { - return m_showAvg; - } - - public boolean isShowCount() { - return m_showCount; - } - - public boolean isShowSum() { - return m_showSum; - } - - public BusinessConfig setClassifications(String childKeys) { - m_classifications = childKeys; - return this; - } - - public BusinessConfig setDomain(String domain) { - m_domain = domain; - return this; - } - - public BusinessConfig setMainKey(String mainKey) { - m_mainKey = mainKey; - return this; - } - - public BusinessConfig setShowAvg(boolean showAvg) { - m_showAvg = showAvg; - return this; - } - - public BusinessConfig setShowCount(boolean showCount) { - m_showCount = showCount; - return this; - } - - public BusinessConfig setShowSum(boolean showSum) { - m_showSum = showSum; - return this; - } - - public BusinessConfig setTitle(String title) { - m_title = title; - return this; - } - - public BusinessConfig setType(int type) { - m_type = type; - return this; - } - - public BusinessConfig setViewOrder(int viewOrder) { - m_viewOrder = viewOrder; - return this; - } - } - - public class MetricTitle { - - public static final String INDEX = "团购首页"; - - public static final String DETAIL = "团购详情"; - - public static final String PAY = "支付页面"; - - public static final String ORDER = "订单创建"; - - public static final String SUCCESS = "支付金额(单位:元)"; - } -} diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/MetricAnalyzer.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/MetricAnalyzer.java index e74f244e8..3d59a2af3 100644 --- a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/MetricAnalyzer.java +++ b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/MetricAnalyzer.java @@ -15,9 +15,9 @@ import org.unidal.tuple.Pair; import com.dianping.cat.Cat; import com.dianping.cat.CatConstants; import com.dianping.cat.abtest.spi.internal.ABTestCodec; +import com.dianping.cat.advanced.metric.config.entity.MetricItemConfig; import com.dianping.cat.configuration.NetworkInterfaceManager; import com.dianping.cat.consumer.AbstractMessageAnalyzer; -import com.dianping.cat.consumer.advanced.BussinessConfigManager.BusinessConfig; import com.dianping.cat.consumer.advanced.dal.BusinessReport; import com.dianping.cat.consumer.advanced.dal.BusinessReportDao; import com.dianping.cat.consumer.core.ProductLineConfigManager; @@ -47,7 +47,7 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer implem private BusinessReportDao m_businessReportDao; @Inject - private BussinessConfigManager m_configManager; + private MetricConfigManager m_configManager; @Inject private ProductLineConfigManager m_productLineConfigManager; @@ -119,8 +119,7 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer implem if (message instanceof Event) { if ("URL".equals(message.getType()) && "ABTest".equals(message.getName())) { String data = (String) message.getData(); - - System.out.println(data); + return data; } } @@ -168,7 +167,8 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer implem String name = metric.getName(); String domain = tree.getDomain(); String data = (String) metric.getData(); - Pair value = parseValue(metric.getStatus(), data); + String status = metric.getStatus(); + Pair value = parseValue(status, data); if (value != null) { long current = metric.getTimestamp() / 1000 / 60; @@ -176,7 +176,7 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer implem MetricItem metricItem = report.findOrCreateMetricItem(name); Map abtests = parseABTests(type); - metricItem.addDomain(domain); + metricItem.addDomain(domain).setType(status); updateMetric(metricItem, abtests, min, value.getKey(), value.getValue()); } return 0; @@ -229,10 +229,8 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer implem if (CatConstants.TYPE_URL.equals(type)) { String name = transaction.getName(); String domain = tree.getDomain(); - Map configs = m_configManager.getUrlConfigs(domain); - BusinessConfig config = null; + MetricItemConfig config = m_configManager.queryMetricItemConfig(domain + ":" + name); - config = configs.get(name); if (config != null) { long current = transaction.getTimestamp() / 1000 / 60; int min = (int) (current % (60)); @@ -240,7 +238,7 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer implem MetricItem metricItem = report.findOrCreateMetricItem(name); Map abtests = parseABtests(transaction); - metricItem.addDomain(domain); + metricItem.addDomain(domain).setType("C"); updateMetric(metricItem, abtests, min, 1, sum); } } diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/MetricConfigManager.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/MetricConfigManager.java new file mode 100644 index 000000000..5dd77ec4a --- /dev/null +++ b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/MetricConfigManager.java @@ -0,0 +1,178 @@ +package com.dianping.cat.consumer.advanced; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import org.codehaus.plexus.logging.LogEnabled; +import org.codehaus.plexus.logging.Logger; +import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; +import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; +import org.unidal.dal.jdbc.DalException; +import org.unidal.dal.jdbc.DalNotFoundException; +import org.unidal.helper.Files; +import org.unidal.helper.Threads.Task; +import org.unidal.lookup.annotation.Inject; +import org.xml.sax.SAXException; + +import com.dianping.cat.Cat; +import com.dianping.cat.advanced.metric.config.entity.MetricConfig; +import com.dianping.cat.advanced.metric.config.entity.MetricItemConfig; +import com.dianping.cat.advanced.metric.config.transform.DefaultSaxParser; +import com.dianping.cat.consumer.core.config.Config; +import com.dianping.cat.consumer.core.config.ConfigDao; +import com.dianping.cat.consumer.core.config.ConfigEntity; + +public class MetricConfigManager implements Initializable, LogEnabled { + + @Inject + private ConfigDao m_configDao; + + private int m_configId; + + private MetricConfig m_metricConfig; + + private long m_modifyTime; + + private Logger m_logger; + + private static final String CONFIG_NAME = "metricConfig"; + + public MetricConfig getMetricConfig() { + synchronized (m_metricConfig) { + return m_metricConfig; + } + } + + public boolean insertMetricItemConfig(MetricItemConfig config){ + getMetricConfig().addMetricItemConfig(config); + + return storeConfig(); + } + + public MetricItemConfig queryMetricItemConfig(String id) { + return getMetricConfig().findMetricItemConfig(id); + } + + public List queryMetricItemConfig(Set domains) { + List configs = new ArrayList(); + Map metricConfig = getMetricConfig().getMetricItemConfigs(); + + for (Entry entry : metricConfig.entrySet()) { + MetricItemConfig item = entry.getValue(); + + if (domains.contains(item.getDomain())) { + configs.add(item); + } + } + return configs; + } + + public boolean deleteDomainConfig(String domain) { + getMetricConfig().removeMetricItemConfig(domain); + return storeConfig(); + } + + @Override + public void enableLogging(Logger logger) { + m_logger = logger; + } + + @Override + public void initialize() throws InitializationException { + try { + Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL); + String content = config.getContent(); + + m_metricConfig = DefaultSaxParser.parse(content); + m_configId = config.getId(); + m_modifyTime = config.getModifyDate().getTime(); + } catch (DalNotFoundException e) { + try { + String content = Files.forIO().readFrom( + this.getClass().getResourceAsStream("/config/default-metric-config.xml"), "utf-8"); + Config config = m_configDao.createLocal(); + + config.setName(CONFIG_NAME); + config.setContent(content); + m_configDao.insert(config); + + m_metricConfig = DefaultSaxParser.parse(content); + m_configId = config.getId(); + m_modifyTime = config.getModifyDate().getTime(); + } catch (Exception ex) { + Cat.logError(ex); + } + } catch (Exception e) { + Cat.logError(e); + } + if (getMetricConfig() == null) { + m_metricConfig = new MetricConfig(); + } + } + + private void refreshMetricConfig() throws DalException, SAXException, IOException { + Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL); + long modifyTime = config.getModifyDate().getTime(); + + if (modifyTime > m_modifyTime) { + String content = config.getContent(); + + synchronized (getMetricConfig()) { + m_metricConfig = DefaultSaxParser.parse(content); + } + + m_modifyTime = modifyTime; + m_logger.info("metric config refresh done!"); + } + } + + private boolean storeConfig() { + try { + Config config = m_configDao.createLocal(); + + config.setId(m_configId); + config.setKeyId(m_configId); + config.setName(CONFIG_NAME); + config.setContent(getMetricConfig().toString()); + m_configDao.updateByPK(config, ConfigEntity.UPDATESET_FULL); + } catch (Exception e) { + Cat.logError(e); + return false; + } + return true; + } + + public class Reload implements Task { + + @Override + public String getName() { + return "Metric-Config-Reload"; + } + + @Override + public void run() { + boolean active = true; + while (active) { + try { + refreshMetricConfig(); + } catch (Exception e) { + Cat.logError(e); + } + try { + Thread.sleep(60 * 1000L); + } catch (InterruptedException e) { + active = false; + } + } + } + + @Override + public void shutdown() { + } + } + +} diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java index 60d1e9770..d4063c8ea 100644 --- a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java +++ b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java @@ -13,17 +13,18 @@ import com.dianping.cat.configuration.ServerConfigManager; import com.dianping.cat.consumer.CatConsumerAdvancedModule; import com.dianping.cat.consumer.DomainManager; import com.dianping.cat.consumer.MessageAnalyzer; -import com.dianping.cat.consumer.advanced.BussinessConfigManager; import com.dianping.cat.consumer.advanced.CrossAnalyzer; import com.dianping.cat.consumer.advanced.DatabaseAnalyzer; import com.dianping.cat.consumer.advanced.DatabaseParser; import com.dianping.cat.consumer.advanced.DependencyAnalyzer; import com.dianping.cat.consumer.advanced.MatrixAnalyzer; import com.dianping.cat.consumer.advanced.MetricAnalyzer; +import com.dianping.cat.consumer.advanced.MetricConfigManager; import com.dianping.cat.consumer.advanced.SqlAnalyzer; import com.dianping.cat.consumer.advanced.dal.BusinessReportDao; import com.dianping.cat.consumer.advanced.dal.SqltableDao; import com.dianping.cat.consumer.core.ProductLineConfigManager; +import com.dianping.cat.consumer.core.config.ConfigDao; import com.dianping.cat.consumer.core.dal.HostinfoDao; import com.dianping.cat.consumer.core.dal.ReportDao; import com.dianping.cat.consumer.core.dal.TaskDao; @@ -35,7 +36,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { public List defineComponents() { List all = new ArrayList(); - all.add(C(BussinessConfigManager.class)); + all.add(C(MetricConfigManager.class).req(ConfigDao.class)); all.add(C(DomainManager.class, DomainManager.class).req(ServerConfigManager.class, HostinfoDao.class)); @@ -59,7 +60,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(BucketManager.class, ReportDao.class, TaskDao.class, DomainManager.class, DatabaseParser.class)); all.add(C(MessageAnalyzer.class, MetricAnalyzer.ID, MetricAnalyzer.class).is(PER_LOOKUP) // - .req(BucketManager.class, BusinessReportDao.class, BussinessConfigManager.class)// + .req(BucketManager.class, BusinessReportDao.class, MetricConfigManager.class)// .req(ProductLineConfigManager.class, ABTestCodec.class)); all.add(C(Module.class, CatConsumerAdvancedModule.ID, CatConsumerAdvancedModule.class)); diff --git a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-codegen.xml b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-codegen.xml new file mode 100644 index 000000000..667f8a0f9 --- /dev/null +++ b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-codegen.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-manifest.xml b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-manifest.xml new file mode 100644 index 000000000..133e2abe0 --- /dev/null +++ b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-manifest.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-model.xml b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-model.xml new file mode 100644 index 000000000..8e2077336 --- /dev/null +++ b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/metric-config-model.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml b/cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml index 8f5862060..74949e67f 100644 --- a/cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml +++ b/cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml @@ -1,8 +1,13 @@ - com.dianping.cat.consumer.advanced.BussinessConfigManager - com.dianping.cat.consumer.advanced.BussinessConfigManager + com.dianping.cat.consumer.advanced.MetricConfigManager + com.dianping.cat.consumer.advanced.MetricConfigManager + + + com.dianping.cat.consumer.core.config.ConfigDao + + com.dianping.cat.consumer.DomainManager @@ -133,7 +138,7 @@ com.dianping.cat.consumer.advanced.dal.BusinessReportDao - com.dianping.cat.consumer.advanced.BussinessConfigManager + com.dianping.cat.consumer.advanced.MetricConfigManager com.dianping.cat.consumer.core.ProductLineConfigManager diff --git a/cat-consumer-advanced/src/main/resources/META-INF/wizard/model/wizard.xml b/cat-consumer-advanced/src/main/resources/META-INF/wizard/model/wizard.xml index 62be87cad..b9ef4ce00 100644 --- a/cat-consumer-advanced/src/main/resources/META-INF/wizard/model/wizard.xml +++ b/cat-consumer-advanced/src/main/resources/META-INF/wizard/model/wizard.xml @@ -6,4 +6,7 @@ src/test/resources/com/dianping/cat/consumer/model/metric-report.xml + + src/test/resources/com/dianping/cat/consumer/model/metric-config.xml + diff --git a/cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/model/metric-config.xml b/cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/model/metric-config.xml new file mode 100644 index 000000000..5db906660 --- /dev/null +++ b/cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/model/metric-config.xml @@ -0,0 +1,5 @@ + + + + diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/core/ProductLineConfigManager.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/core/ProductLineConfigManager.java index 38a4ffde5..562b53092 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/core/ProductLineConfigManager.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/core/ProductLineConfigManager.java @@ -1,5 +1,6 @@ package com.dianping.cat.consumer.core; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -14,10 +15,12 @@ import org.codehaus.plexus.logging.LogEnabled; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; +import org.unidal.dal.jdbc.DalException; import org.unidal.dal.jdbc.DalNotFoundException; import org.unidal.helper.Files; import org.unidal.helper.Threads.Task; import org.unidal.lookup.annotation.Inject; +import org.xml.sax.SAXException; import com.dianping.cat.Cat; import com.dianping.cat.consumer.company.model.entity.Company; @@ -177,11 +180,28 @@ public class ProductLineConfigManager implements Initializable, LogEnabled { return result; } + + private void refreshProductLineConfig() throws DalException, SAXException, IOException { + Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL); + long modifyTime = config.getModifyDate().getTime(); + + if (modifyTime > m_modifyTime) { + String content = config.getContent(); + + synchronized (getCompany()) { + m_company = DefaultSaxParser.parse(content); + } + + m_modifyTime = modifyTime; + m_logger.info("product line config refresh done!"); + } + } + public class Reload implements Task { @Override public String getName() { - return null; + return "Product-Config-Reload"; } @Override @@ -189,19 +209,7 @@ public class ProductLineConfigManager implements Initializable, LogEnabled { boolean active = true; while (active) { try { - Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL); - long modifyTime = config.getModifyDate().getTime(); - - if (modifyTime > m_modifyTime) { - String content = config.getContent(); - - synchronized (getCompany()) { - m_company = DefaultSaxParser.parse(content); - } - - m_modifyTime = modifyTime; - m_logger.info("product line config refresh done!"); - } + refreshProductLineConfig(); } catch (Exception e) { Cat.logError(e); } @@ -213,7 +221,7 @@ public class ProductLineConfigManager implements Initializable, LogEnabled { } } } - + @Override public void shutdown() { } diff --git a/cat-home/src/main/java/com/dianping/cat/helper/CatString.java b/cat-home/src/main/java/com/dianping/cat/helper/CatString.java index 5d1f4f40f..65f21d5ad 100644 --- a/cat-home/src/main/java/com/dianping/cat/helper/CatString.java +++ b/cat-home/src/main/java/com/dianping/cat/helper/CatString.java @@ -33,5 +33,11 @@ public class CatString { public static final String FAIL = "Fail"; public static final String TUAN_TOU = "TuanGou"; + + public static final String SUM = ":和"; + + public static final String COUNT = ":次数"; + + public static final String AVG = ":平均"; } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/LineChart.java b/cat-home/src/main/java/com/dianping/cat/report/page/LineChart.java index aade74dec..8d341a915 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/LineChart.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/LineChart.java @@ -20,7 +20,7 @@ public class LineChart { private List subTitles = new ArrayList(); - private String titles; + private String title; private List values = new ArrayList(); @@ -56,8 +56,8 @@ public class LineChart { return this.subTitles; } - public String getTitles() { - return this.titles; + public String getTitle() { + return this.title; } public List getValues() { @@ -83,8 +83,8 @@ public class LineChart { return this; } - public LineChart setTitles(String titles) { - this.titles = titles; + public LineChart setTitle(String title) { + this.title = title; return this; } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/LineGraphBuilder.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/LineGraphBuilder.java index f6e2de503..b2c876dc4 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/LineGraphBuilder.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/LineGraphBuilder.java @@ -49,7 +49,7 @@ public class LineGraphBuilder extends BaseVisitor { result.setSize(60); result.setStep(TimeUtil.ONE_MINUTE); - result.setTitles(title); + result.setTitle(title); result.setStart(m_start); if (items != null) { for (Entry entry : items.entrySet()) { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/event/HistoryGraphs.java b/cat-home/src/main/java/com/dianping/cat/report/page/event/HistoryGraphs.java index b19ae2590..d347e777f 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/event/HistoryGraphs.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/event/HistoryGraphs.java @@ -50,7 +50,7 @@ public class HistoryGraphs extends BaseHistoryGraphs{ item.setStart(start); item.setSize(size); item.setStep(step); - item.setTitles(name + " Error (count)"); + item.setTitle(name + " Error (count)"); for (Map data : datas) { item.addValue(data.get("failure_count")); @@ -145,7 +145,7 @@ public class HistoryGraphs extends BaseHistoryGraphs{ item.setStart(start); item.setSize(size); item.setStep(step); - item.setTitles(name + " Hits (count)"); + item.setTitle(name + " Hits (count)"); for (Map data : datas) { double[] totalCount = data.get("total_count"); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/health/HistoryGraphs.java b/cat-home/src/main/java/com/dianping/cat/report/page/health/HistoryGraphs.java index 77d94d8da..3e57934fb 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/health/HistoryGraphs.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/health/HistoryGraphs.java @@ -32,7 +32,7 @@ public class HistoryGraphs { } int day = (int) ((end.getTime() - start.getTime()) / TimeUtil.ONE_DAY); LineChart item = new LineChart(); - item.setStart(start).setSize(day).setTitles(key).addSubTitle(key).setStep(TimeUtil.ONE_DAY); + item.setStart(start).setSize(day).setTitle(key).addSubTitle(key).setStep(TimeUtil.ONE_DAY); item.addValue(getDateFromReports(reports, day, key)); return item; } @@ -44,7 +44,7 @@ public class HistoryGraphs { reports.add(report); } LineChart item = new LineChart(); - item.setStart(start).setSize(24).setTitles(key).addSubTitle(key).setStep(TimeUtil.ONE_HOUR); + item.setStart(start).setSize(24).setTitle(key).addSubTitle(key).setStep(TimeUtil.ONE_HOUR); item.addValue(getDateFromReports(reports, 24, key)); return item; } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/HistoryGraphs.java b/cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/HistoryGraphs.java index 6486ac9e2..6e3aa6a3c 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/HistoryGraphs.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/HistoryGraphs.java @@ -96,7 +96,7 @@ public class HistoryGraphs extends BaseHistoryGraphs{ LineChart item = new LineChart(); item.setStart(start); item.setSize(size); - item.setTitles(title); + item.setTitle(title); item.addSubTitle(title); item.setStep(TimeUtil.ONE_MINUTE); double[] activeThread = graphData.get(key); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java index 0fda4f923..1eb54e078 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java @@ -2,6 +2,7 @@ package com.dianping.cat.report.page.metric; import java.io.IOException; import java.util.Date; +import java.util.HashSet; import java.util.List; import javax.servlet.ServletException; @@ -12,7 +13,8 @@ import org.unidal.web.mvc.annotation.InboundActionMeta; import org.unidal.web.mvc.annotation.OutboundActionMeta; import org.unidal.web.mvc.annotation.PayloadMeta; -import com.dianping.cat.consumer.advanced.BussinessConfigManager; +import com.dianping.cat.advanced.metric.config.entity.MetricItemConfig; +import com.dianping.cat.consumer.advanced.MetricConfigManager; import com.dianping.cat.consumer.core.ProductLineConfigManager; import com.dianping.cat.consumer.metric.model.entity.MetricReport; import com.dianping.cat.report.ReportPage; @@ -32,7 +34,7 @@ public class Handler implements PageHandler { private PayloadNormalizer m_normalizePayload; @Inject - private BussinessConfigManager m_configManager; + private MetricConfigManager m_configManager; @Inject private ProductLineConfigManager m_productLineConfigManager; @@ -78,7 +80,9 @@ public class Handler implements PageHandler { } String product = payload.getProduct(); List domains = m_productLineConfigManager.queryProductLineDomains(product); - MetricDisplay display = new MetricDisplay(m_configManager.getConfigs(domains), test, startTime); + List domainSet=m_configManager.queryMetricItemConfig(new HashSet(domains)); + MetricDisplay display = new MetricDisplay(domainSet, + test, startTime); display.visitMetricReport(report); model.setDisplay(display); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/metric/MetricDisplay.java b/cat-home/src/main/java/com/dianping/cat/report/page/metric/MetricDisplay.java index 3e714c225..c213bcdfa 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/metric/MetricDisplay.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/metric/MetricDisplay.java @@ -8,17 +8,23 @@ import java.util.Map; import java.util.Set; import java.util.TreeSet; -import com.dianping.cat.consumer.advanced.BussinessConfigManager.BusinessConfig; +import com.dianping.cat.advanced.metric.config.entity.MetricItemConfig; import com.dianping.cat.consumer.metric.model.entity.Abtest; import com.dianping.cat.consumer.metric.model.entity.Group; import com.dianping.cat.consumer.metric.model.entity.MetricItem; import com.dianping.cat.consumer.metric.model.entity.MetricReport; import com.dianping.cat.consumer.metric.model.entity.Point; import com.dianping.cat.consumer.metric.model.transform.BaseVisitor; +import com.dianping.cat.helper.CatString; import com.dianping.cat.helper.TimeUtil; import com.dianping.cat.report.page.LineChart; public class MetricDisplay extends BaseVisitor { + public static final String Suffix_SUM = "(总和)"; + + public static final String Suffix_COUNT = "(次数)"; + + public static final String Suffix_AVG = "(平均)"; private Map m_lineCharts = new LinkedHashMap(); @@ -30,11 +36,13 @@ public class MetricDisplay extends BaseVisitor { private String m_metricKey; - private static final String SUM = ":sum"; + private String m_currentComputeType; + + private static final String SUM = CatString.SUM; - private static final String COUNT = ":count"; + private static final String COUNT = CatString.COUNT; - private static final String AVG = "avg"; + private static final String AVG = CatString.AVG; public List getLineCharts() { return new ArrayList(m_lineCharts.values()); @@ -44,34 +52,33 @@ public class MetricDisplay extends BaseVisitor { return m_abtests; } - public MetricDisplay(List configs, String abtest, Date start) { + public MetricDisplay(List configs, String abtest, Date start) { m_start = start; m_abtest = abtest; - for (BusinessConfig flag : configs) { - if (flag.isShowSum()) { - String key = flag.getMainKey() + SUM; + for (MetricItemConfig config : configs) { + if (config.isShowSum()) { + String key = config.getMetricKey() + SUM; - m_lineCharts.put(key, creatLineChart(key)); + m_lineCharts.put(key, creatLineChart(config.getTitle() + Suffix_SUM)); } - if (flag.isShowCount()) { - String key = flag.getMainKey() + COUNT; - - m_lineCharts.put(key, creatLineChart(key)); + if (config.isShowCount()) { + String key = config.getMetricKey() + COUNT; + m_lineCharts.put(key, creatLineChart(config.getTitle() + Suffix_COUNT)); } - if (flag.isShowAvg()) { - String key = flag.getMainKey() + AVG; + if (config.isShowAvg()) { + String key = config.getMetricKey() + AVG; - m_lineCharts.put(key, creatLineChart(key)); + m_lineCharts.put(key, creatLineChart(config.getTitle() + Suffix_AVG)); } } } - private LineChart creatLineChart(String key) { + private LineChart creatLineChart(String title) { LineChart lineChart = new LineChart(); - lineChart.setTitles(key); + lineChart.setTitle(title); lineChart.setStart(m_start); lineChart.setSize(60); lineChart.setStep(TimeUtil.ONE_MINUTE); @@ -88,6 +95,33 @@ public class MetricDisplay extends BaseVisitor { } } + private LineChart findOrCreateChart(String type, String metricKey, String computeType) { + String key = metricKey + computeType; + LineChart chart = m_lineCharts.get(key); + + if (chart == null) { + if (computeType.equals(COUNT)) { + if (type.equals("C") || type.equals("S,C")) { + chart = creatLineChart(key); + } + } else if (computeType.equals(AVG)) { + if (type.equals("T")) { + chart = creatLineChart(key); + } + } else if (computeType.equals(SUM)) { + if (type.equals("S") || type.equals("S,C")) { + chart = creatLineChart(key); + } + } + + if (chart != null) { + m_lineCharts.put(key, chart); + } + } + + return chart; + } + @Override public void visitGroup(Group group) { String id = group.getName(); @@ -107,19 +141,19 @@ public class MetricDisplay extends BaseVisitor { count[index] = point.getCount(); } - LineChart sumLine = m_lineCharts.get(m_metricKey + SUM); + LineChart sumLine = findOrCreateChart(m_currentComputeType, m_metricKey, SUM); if (sumLine != null) { sumLine.addSubTitle(id); sumLine.addValue(sum); } - LineChart countLine = m_lineCharts.get(m_metricKey + COUNT); + LineChart countLine = findOrCreateChart(m_currentComputeType, m_metricKey, COUNT); if (countLine != null) { countLine.addSubTitle(id); countLine.addValue(count); } - LineChart avgLine = m_lineCharts.get(m_metricKey + AVG); + LineChart avgLine = findOrCreateChart(m_currentComputeType, m_metricKey, AVG); if (avgLine != null) { avgLine.addSubTitle(id); @@ -130,6 +164,7 @@ public class MetricDisplay extends BaseVisitor { @Override public void visitMetricItem(MetricItem metricItem) { m_metricKey = metricItem.getId(); + m_currentComputeType = metricItem.getType(); super.visitMetricItem(metricItem); } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/state/StateGraphs.java b/cat-home/src/main/java/com/dianping/cat/report/page/state/StateGraphs.java index 3de27792b..86502e7c3 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/state/StateGraphs.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/state/StateGraphs.java @@ -40,7 +40,7 @@ public class StateGraphs { int day = (int) ((end.getTime() - start.getTime()) / TimeUtil.ONE_HOUR); LineChart item = new LineChart(); - item.setStart(start).setSize(day).setTitles(key).setStep(TimeUtil.ONE_HOUR); + item.setStart(start).setSize(day).setTitle(key).setStep(TimeUtil.ONE_HOUR); item.addSubTitle(key); item.addValue(getDataFromHourlySummary(reports, start.getTime(), day, key, ip)); return item; @@ -137,7 +137,7 @@ public class StateGraphs { String ip) { LineChart item = new LineChart(); - item.setStart(start).setSize(60).setTitles(key).setStep(TimeUtil.ONE_MINUTE); + item.setStart(start).setSize(60).setTitle(key).setStep(TimeUtil.ONE_MINUTE); item.addSubTitle(key); item.addValue(getDataFromHourlyDetail(report, start.getTime(), 60, key, ip)); return item; diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/HistoryGraphs.java b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/HistoryGraphs.java index b369d8280..fbe118ab7 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/HistoryGraphs.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/HistoryGraphs.java @@ -53,7 +53,7 @@ public class HistoryGraphs extends BaseHistoryGraphs{ item.setStart(start); item.setSize(size); item.setStep(step); - item.setTitles(name + " Response Time (ms)"); + item.setTitle(name + " Response Time (ms)"); for (Map data : datas) { double[] sum = data.get("sum"); @@ -78,7 +78,7 @@ public class HistoryGraphs extends BaseHistoryGraphs{ item.setStart(start); item.setSize(size); item.setStep(step); - item.setTitles(name + " Error (count)"); + item.setTitle(name + " Error (count)"); for (Map data : datas) { item.addValue(data.get("failure_count")); @@ -194,7 +194,7 @@ public class HistoryGraphs extends BaseHistoryGraphs{ item.setStart(start); item.setSize(size); item.setStep(step); - item.setTitles(name + " Hits (count)"); + item.setTitle(name + " Hits (count)"); for (Map data : datas) { double[] totalCount = data.get("total_count"); diff --git a/cat-home/src/main/resources/META-INF/plexus/components.xml b/cat-home/src/main/resources/META-INF/plexus/components.xml index a55b02e4d..8e5bbb867 100755 --- a/cat-home/src/main/resources/META-INF/plexus/components.xml +++ b/cat-home/src/main/resources/META-INF/plexus/components.xml @@ -2650,7 +2650,7 @@ com.dianping.cat.report.page.PayloadNormalizer - com.dianping.cat.consumer.advanced.BussinessConfigManager + com.dianping.cat.consumer.advanced.MetricConfigManager com.dianping.cat.consumer.core.ProductLineConfigManager @@ -2667,8 +2667,13 @@ - com.dianping.cat.consumer.advanced.BussinessConfigManager - com.dianping.cat.consumer.advanced.BussinessConfigManager + com.dianping.cat.consumer.advanced.MetricConfigManager + com.dianping.cat.consumer.advanced.MetricConfigManager + + + com.dianping.cat.consumer.core.config.ConfigDao + + com.dianping.cat.consumer.core.ProductLineConfigManager diff --git a/cat-home/src/main/resources/config/default-metric-config.xml b/cat-home/src/main/resources/config/default-metric-config.xml new file mode 100644 index 000000000..a1bc21410 --- /dev/null +++ b/cat-home/src/main/resources/config/default-metric-config.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/cat-home/src/main/webapp/jsp/report/metric.jsp b/cat-home/src/main/webapp/jsp/report/metric.jsp index 457362dd5..9011e2070 100644 --- a/cat-home/src/main/webapp/jsp/report/metric.jsp +++ b/cat-home/src/main/webapp/jsp/report/metric.jsp @@ -17,7 +17,7 @@ $(document).ready(function() { var data = ${item.jsonString}; - graphLineChart(document.getElementById('${item.titles}'), data); + graphLineChart(document.getElementById('${item.title}'), data); var product = '${payload.product}'; @@ -33,7 +33,7 @@   From ${w:format(model.report.startTime,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.report.endTime,'yyyy-MM-dd HH:mm:ss')} -  [ ${nav.title} ]  +  [ ${nav.title}  [ now ]  @@ -46,11 +46,11 @@
-
+
+
${item.title}
+
+
diff --git a/cat-home/src/test/java/com/dianping/cat/demo/TestABTestBusinessMessage.java b/cat-home/src/test/java/com/dianping/cat/demo/TestABTestBusinessMessage.java index 8aae6b493..8f7fc5e24 100644 --- a/cat-home/src/test/java/com/dianping/cat/demo/TestABTestBusinessMessage.java +++ b/cat-home/src/test/java/com/dianping/cat/demo/TestABTestBusinessMessage.java @@ -17,44 +17,45 @@ public class TestABTestBusinessMessage { @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); + while (true) { + 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.logMetricForDuration("time", 500); + Cat.logMetricForSum("payment.success", i); + + DefaultMessageTree tree = (DefaultMessageTree) Cat.getManager().getThreadLocalMessageTree(); + tree.setDomain(PayOrder); + t.complete(); + } + Thread.sleep(1000); + } } diff --git a/cat-home/src/test/java/com/dianping/cat/demo/TestBusinessMessage.java b/cat-home/src/test/java/com/dianping/cat/demo/TestBusinessMessage.java index ec4fffdab..244c2ea1f 100644 --- a/cat-home/src/test/java/com/dianping/cat/demo/TestBusinessMessage.java +++ b/cat-home/src/test/java/com/dianping/cat/demo/TestBusinessMessage.java @@ -16,7 +16,6 @@ public class TestBusinessMessage { @Test public void test() throws Exception { while (true) { - for (int i = 0; i < 1000; i++) { Transaction t = Cat.newTransaction("URL", "/index"); Cat.logEvent("RemoteLink", "sina", Event.SUCCESS, "http://sina.com.cn/"); -- GitLab