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

rename sTopologyGraph class

上级 1ab7c85e
......@@ -32,10 +32,9 @@ import com.dianping.cat.report.graph.DefaultValueTranslater;
import com.dianping.cat.report.graph.GraphBuilder;
import com.dianping.cat.report.graph.ValueTranslater;
import com.dianping.cat.report.page.PayloadNormalizer;
import com.dianping.cat.report.page.dependency.DefaultDependencyGraphItemBuilder;
import com.dianping.cat.report.page.dependency.DependencyGraphBuilder;
import com.dianping.cat.report.page.dependency.DependendencyGraphItemBuilder;
import com.dianping.cat.report.page.dependency.GraphManager;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphManager;
import com.dianping.cat.report.page.externalError.EventCollectManager;
import com.dianping.cat.report.page.health.HistoryGraphs;
import com.dianping.cat.report.page.model.spi.ModelService;
......@@ -207,14 +206,14 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(EventCollectManager.class).req(EventDao.class, ServerConfigManager.class));
all.add(C(DependendencyGraphItemBuilder.class,DefaultDependencyGraphItemBuilder.class));
all.add(C(TopologyGraphItemBuilder.class));
all.add(C(DependencyGraphBuilder.class).req(DependendencyGraphItemBuilder.class));
all.add(C(TopologyGraphBuilder.class).req(TopologyGraphItemBuilder.class));
// model service
all.addAll(new ServiceComponentConfigurator().defineComponents());
all.add(C(GraphManager.class).req(DependencyGraphBuilder.class).req(ModelService.class, "dependency"));
all.add(C(TopologyGraphManager.class).req(TopologyGraphBuilder.class).req(ModelService.class, "dependency"));
// database
all.add(C(JdbcDataSourceConfigurationManager.class) //
......
package com.dianping.cat.report.page.dependency;
import com.dianping.cat.consumer.dependency.model.entity.Dependency;
import com.dianping.cat.consumer.dependency.model.entity.Index;
import com.dianping.cat.home.dependency.entity.Edge;
import com.dianping.cat.home.dependency.entity.Node;
public interface DependendencyGraphItemBuilder {
public Node buildNode(String domain, Index index);
public Node buildDatabaseNode(String database);
public Edge buildEdge(String domain, Dependency dependency);
}
......@@ -30,6 +30,8 @@ import com.dianping.cat.home.dependency.transform.DefaultJsonBuilder;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.LineChart;
import com.dianping.cat.report.page.PayloadNormalizer;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphManager;
import com.dianping.cat.report.page.dependency.graph.LineGraphBuilder;
import com.dianping.cat.report.page.externalError.EventCollectManager;
import com.dianping.cat.report.page.model.dependency.DependencyReportMerger;
import com.dianping.cat.report.page.model.spi.ModelRequest;
......@@ -50,7 +52,7 @@ public class Handler implements PageHandler<Context> {
private PayloadNormalizer m_normalizePayload;
@Inject
private GraphManager m_graphManager;
private TopologyGraphManager m_graphManager;
private DependencyReport getReport(Payload payload) {
String domain = payload.getDomain();
......@@ -140,7 +142,7 @@ public class Handler implements PageHandler<Context> {
DependencyGraph graph = m_graphManager.queryGraph(domain, time);
String json = new DefaultJsonBuilder().buildJson(graph);
model.setGraph(json);
model.setTopologyGraph(json);
}
private int computeMinute(Payload payload) {
......
......@@ -6,14 +6,18 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.unidal.web.mvc.view.annotation.EntityMeta;
import org.unidal.web.mvc.view.annotation.ModelMeta;
import com.dianping.cat.consumer.dependency.model.entity.DependencyReport;
import com.dianping.cat.consumer.dependency.model.entity.Segment;
import com.dianping.cat.home.dal.report.Event;
import com.dianping.cat.report.page.AbstractReportModel;
import com.dianping.cat.report.view.StringSortHelper;
@ModelMeta("dependecy")
public class Model extends AbstractReportModel<Action, Context> {
@EntityMeta
private DependencyReport m_report;
private Segment m_segment;
......@@ -26,7 +30,7 @@ public class Model extends AbstractReportModel<Action, Context> {
private Map<String, List<Event>> m_events;
private String m_graph;
private String m_topologyGraph;
private List<String> m_indexGraph;
......@@ -124,12 +128,12 @@ public class Model extends AbstractReportModel<Action, Context> {
m_minute = minute;
}
public String getGraph() {
return m_graph;
}
public String getTopologyGraph() {
return m_topologyGraph;
}
public void setGraph(String graph) {
m_graph = graph;
}
public void setTopologyGraph(String topologyGraph) {
m_topologyGraph = topologyGraph;
}
}
package com.dianping.cat.report.page.dependency;
package com.dianping.cat.report.page.dependency.graph;
import java.util.ArrayList;
import java.util.Date;
......
package com.dianping.cat.report.page.dependency;
package com.dianping.cat.report.page.dependency.graph;
import org.hsqldb.lib.StringUtil;
......@@ -11,7 +11,7 @@ import com.dianping.cat.home.dependency.entity.DependencyGraph;
import com.dianping.cat.home.dependency.entity.Edge;
import com.dianping.cat.home.dependency.entity.Node;
public class DependencyGraphBuilder extends BaseVisitor {
public class TopologyGraphBuilder extends BaseVisitor {
private String m_domain;
......@@ -19,7 +19,7 @@ public class DependencyGraphBuilder extends BaseVisitor {
private int m_minute;
private DependendencyGraphItemBuilder m_itemBuilder;
private TopologyGraphItemBuilder m_itemBuilder;
private Node mergeNode(Node old, Node node) {
if (old == null) {
......@@ -53,12 +53,12 @@ public class DependencyGraphBuilder extends BaseVisitor {
}
}
public DependencyGraphBuilder setGraph(DependencyGraph graph) {
public TopologyGraphBuilder setGraph(DependencyGraph graph) {
m_graph = graph;
return this;
}
public DependencyGraphBuilder setMinute(int minute) {
public TopologyGraphBuilder setMinute(int minute) {
m_minute = minute;
return this;
}
......
package com.dianping.cat.report.page.dependency;
package com.dianping.cat.report.page.dependency.graph;
import com.dianping.cat.consumer.dependency.model.entity.Dependency;
import com.dianping.cat.consumer.dependency.model.entity.Index;
import com.dianping.cat.home.dependency.entity.Edge;
import com.dianping.cat.home.dependency.entity.Node;
public class DefaultDependencyGraphItemBuilder implements DependendencyGraphItemBuilder {
public class TopologyGraphItemBuilder {
public static final String PROJECT = "project";
public static final String DATABASE = "database";
public static int OK = 1;
......@@ -16,7 +17,6 @@ public class DefaultDependencyGraphItemBuilder implements DependendencyGraphItem
public static int ERROR = 3;
@Override
public Node buildNode(String domain, Index index) {
Node node = new Node(domain);
......@@ -28,7 +28,6 @@ public class DefaultDependencyGraphItemBuilder implements DependendencyGraphItem
return node;
}
@Override
public Edge buildEdge(String domain, Dependency dependency) {
Edge edge = new Edge();
......@@ -44,8 +43,7 @@ public class DefaultDependencyGraphItemBuilder implements DependendencyGraphItem
return edge;
}
@Override
public Node buildDatabaseNode(String database) {
public Node buildDatabaseNode(String database) {
Node node = new Node(database);
node.setStatus(OK);
......@@ -54,6 +52,6 @@ public class DefaultDependencyGraphItemBuilder implements DependendencyGraphItem
node.setDes("");
node.setLink("");
return node;
}
}
}
package com.dianping.cat.report.page.dependency;
package com.dianping.cat.report.page.dependency.graph;
import java.util.Collection;
import java.util.Map;
......@@ -25,13 +25,13 @@ import com.dianping.cat.report.page.model.spi.ModelResponse;
import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.report.view.DomainNavManager;
public class GraphManager implements Initializable, LogEnabled {
public class TopologyGraphManager implements Initializable, LogEnabled {
@Inject(type = ModelService.class, value = "dependency")
private ModelService<DependencyReport> m_service;
@Inject
private DependencyGraphBuilder m_builder;
private TopologyGraphBuilder m_builder;
private Map<Long, DependencyGraph> m_graphs = new ConcurrentHashMap<Long, DependencyGraph>(1000);
......@@ -85,8 +85,8 @@ public class GraphManager implements Initializable, LogEnabled {
private Node creatNode(String domain) {
Node node = new Node(domain);
node.setStatus(DefaultDependencyGraphItemBuilder.OK);
node.setType(DefaultDependencyGraphItemBuilder.PROJECT);
node.setStatus(TopologyGraphItemBuilder.OK);
node.setType(TopologyGraphItemBuilder.PROJECT);
node.setWeight(1);
node.setDes("");
node.setLink("");
......
......@@ -586,15 +586,15 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.DependendencyGraphItemBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.DefaultDependencyGraphItemBuilder</implementation>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.DependencyGraphBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.DependencyGraphBuilder</implementation>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.dependency.DependendencyGraphItemBuilder</role>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder</role>
</requirement>
</requirements>
</component>
......@@ -1185,11 +1185,11 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.GraphManager</role>
<implementation>com.dianping.cat.report.page.dependency.GraphManager</implementation>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.dependency.DependencyGraphBuilder</role>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
......@@ -2524,7 +2524,7 @@
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.GraphManager</role>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
</requirement>
</requirements>
</component>
......@@ -2559,8 +2559,8 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.GraphManager</role>
<implementation>com.dianping.cat.report.page.dependency.GraphManager</implementation>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
......@@ -2568,13 +2568,13 @@
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.DependencyGraphBuilder</role>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.DependencyGraphBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.DependencyGraphBuilder</implementation>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.externalError.Handler</role>
......
......@@ -105,7 +105,7 @@
$('#tab0').addClass('active');
$('#leftTab0').addClass('active');
var data = ${model.graph};
var data = ${model.topologyGraph};
function parse(data){
var nodes = data.nodes;
......
package com.dianping.cat.report.analyzer;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.Test;
import org.unidal.lookup.ComponentTestCase;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.heartbeat.model.entity.Period;
import com.dianping.cat.consumer.transaction.model.entity.Machine;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionType;
import com.dianping.cat.consumer.transaction.model.transform.BaseVisitor;
import com.dianping.cat.helper.CatString;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.report.page.model.transaction.TransactionReportMerger;
import com.dianping.cat.report.service.HourlyReportService;
public class OpDataCollectTest extends ComponentTestCase {
private HourlyReportService m_hourlyReportService;
private SimpleDateFormat m_sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
@Test
public void test() throws Exception {
m_hourlyReportService = (HourlyReportService) lookup(HourlyReportService.class);
String dateStr1 = "2012-12-24 16:00";
String dateStr2 = "2013-02-14 16:00";
String dateStr3 = "2013-05-24 16:00";
String[] domains = getDomains();
System.out.println("Domain\tDate\tType\tTotal\tAvg\tLine95\tStd\tQPS");
for (String domain : domains) {
buildTransactionData(domain, dateStr1);
}
for (String domain : domains) {
buildTransactionData(domain, dateStr2);
}
for (String domain : domains) {
buildTransactionData(domain, dateStr3);
}
System.out.println("Domain\tDate\tLoad\tHttp");
for (String domain : domains) {
buildHeartbeatData(domain, dateStr1);
}
for (String domain : domains) {
buildHeartbeatData(domain, dateStr2);
}
for (String domain : domains) {
buildHeartbeatData(domain, dateStr3);
}
}
private void buildHeartbeatData(String domain, String str) throws Exception {
Date start = m_sdf.parse(str);
Date end = new Date(start.getTime() + TimeUtil.ONE_HOUR);
HeartbeatReport heartbeatReport = m_hourlyReportService.queryHeartbeatReport(domain, start, end);
showHeartbeatInfo(domain, str, heartbeatReport);
}
private void buildTransactionData(String domain, String str) throws Exception {
Date start = m_sdf.parse(str);
Date end = new Date(start.getTime() + TimeUtil.ONE_HOUR);
TransactionReport transactionReport = m_hourlyReportService.queryTransactionReport(domain, start, end);
showTransactionInfo(domain, str, transactionReport);
}
private void showTransactionInfo(String domain, String str, TransactionReport report) {
TransactionReport temp = new TransactionReport();
TransactionReportMerger merger = new TransactionReportMerger(temp);
Machine machine = merger.mergesForAllMachine(report);
report.addMachine(machine);
new TransactionVisitor(domain, str).visitTransactionReport(report);
}
private void showHeartbeatInfo(String domain, String str, HeartbeatReport report) {
HeartbeatVisitor visitor = new HeartbeatVisitor();
visitor.visitHeartbeatReport(report);
System.out.println(report.getDomain() + "\t" + str + "\t" + visitor.computeLoad() + "\t" + visitor.computeHttp());
}
private String[] getDomains() {
String domains = "MobileMembercardMainApiWeb,MobileMembercardMainServer,MobileMembercardRecomServer,PayEngine,tuangou-paygate,DealService,TuanGouApiMobile,TuanGouRank,TuanGouRemote,TuanGouWap,TuanGouWeb,MobileApi,MLocationService,MConfigAPI,MobileRecomStore,UserBaseService,GroupService,GroupWeb,PiccenterDisplay,PiccenterStorage,PiccenterUpload,ShopServer,ShopWeb,ShoppicService,ShopSearchWeb,ReviewServer,UserService";
return domains.split(",");
}
class HeartbeatVisitor extends com.dianping.cat.consumer.heartbeat.model.transform.BaseVisitor {
private List<Double> loads = new ArrayList<Double>();
private List<Double> https = new ArrayList<Double>();
public double computeLoad() {
double sum = 0.0;
for (Double temp : loads) {
sum += temp;
}
return sum / loads.size();
}
public double computeHttp() {
double sum = 0.0;
for (Double temp : https) {
sum += temp;
}
return sum / https.size();
}
@Override
public void visitPeriod(Period period) {
double load = period.getSystemLoadAverage();
double http = period.getHttpThreadCount();
loads.add(load);
https.add(http);
}
}
class TransactionVisitor extends BaseVisitor {
public Set<String> ALL_TYPES = new HashSet<String>();
private String m_domain;
private String m_str;
public TransactionVisitor(String domain, String str) {
ALL_TYPES.add("URL");
ALL_TYPES.add("Service");
ALL_TYPES.add("PigeonService");
m_domain = domain;
m_str = str;
}
@Override
public void visitMachine(Machine machine) {
String ip = machine.getIp();
if (CatString.ALL.equalsIgnoreCase(ip)) {
super.visitMachine(machine);
}
}
@Override
public void visitType(TransactionType type) {
StringBuilder sb = new StringBuilder(128);
if (ALL_TYPES.contains(type.getId())) {
sb.append(m_domain).append("\t");
sb.append(m_str).append("\t");
sb.append(type.getId()).append("\t");
sb.append(type.getTotalCount()).append("\t");
sb.append(type.getAvg()).append("\t");
sb.append(type.getLine95Value()).append("\t");
sb.append(type.getStd()).append("\t");
sb.append(1000 * type.getTotalCount() / TimeUtil.ONE_HOUR).append("\t");
System.out.println(sb.toString());
}
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册