use of com.navercorp.pinpoint.web.applicationmap.histogram.NodeHistogram in project pinpoint by naver.
the class ApplicationMapBuilder method build.
/**
* Returns an application map with a single node containing the application's agents that were running.
*/
public ApplicationMap build(Application application, AgentInfoService agentInfoService) {
NodeList nodeList = new NodeList();
LinkList emptyLinkList = new LinkList();
Node node = new Node(application);
Set<AgentInfo> agentInfos = agentInfoService.getAgentsByApplicationName(application.getName(), range.getTo());
Set<AgentInfo> runningAgents = new HashSet<>();
for (AgentInfo agentInfo : agentInfos) {
if (isAgentRunning(agentInfo)) {
runningAgents.add(agentInfo);
}
}
if (runningAgents.isEmpty()) {
return new DefaultApplicationMap(range, nodeList, emptyLinkList);
} else {
ServerBuilder serverBuilder = new ServerBuilder();
serverBuilder.addAgentInfo(runningAgents);
ServerInstanceList serverInstanceList = serverBuilder.build();
node.setServerInstanceList(serverInstanceList);
node.setNodeHistogram(new NodeHistogram(application, range));
nodeList.addNode(node);
return new DefaultApplicationMap(range, nodeList, emptyLinkList);
}
}
use of com.navercorp.pinpoint.web.applicationmap.histogram.NodeHistogram in project pinpoint by naver.
the class ApplicationMapBuilder method createTerminalNodeHistogram.
private NodeHistogram createTerminalNodeHistogram(Node node, LinkList linkList) {
// for Terminal nodes, add all links pointing to iself and create the histogram
final Application nodeApplication = node.getApplication();
final NodeHistogram nodeHistogram = new NodeHistogram(nodeApplication, range);
// create applicationHistogram
final List<Link> toLinkList = linkList.findToLink(nodeApplication);
final Histogram applicationHistogram = new Histogram(node.getServiceType());
for (Link link : toLinkList) {
applicationHistogram.add(link.getHistogram());
}
nodeHistogram.setApplicationHistogram(applicationHistogram);
// create applicationTimeHistogram
LinkCallDataMap linkCallDataMap = new LinkCallDataMap();
for (Link link : toLinkList) {
LinkCallDataMap sourceLinkCallDataMap = link.getSourceLinkCallDataMap();
linkCallDataMap.addLinkDataMap(sourceLinkCallDataMap);
}
ApplicationTimeHistogramBuilder builder = new ApplicationTimeHistogramBuilder(nodeApplication, range);
ApplicationTimeHistogram applicationTimeHistogram = builder.build(linkCallDataMap.getLinkDataList());
nodeHistogram.setApplicationTimeHistogram(applicationTimeHistogram);
// for Terminal nodes, create AgentLevel histogram
if (nodeApplication.getServiceType().isTerminal() || nodeApplication.getServiceType().isQueue()) {
final Map<String, Histogram> agentHistogramMap = new HashMap<>();
for (Link link : toLinkList) {
LinkCallDataMap sourceLinkCallDataMap = link.getSourceLinkCallDataMap();
AgentHistogramList targetList = sourceLinkCallDataMap.getTargetList();
for (AgentHistogram histogram : targetList.getAgentHistogramList()) {
Histogram find = agentHistogramMap.get(histogram.getId());
if (find == null) {
find = new Histogram(histogram.getServiceType());
agentHistogramMap.put(histogram.getId(), find);
}
find.add(histogram.getHistogram());
}
nodeHistogram.setAgentHistogramMap(agentHistogramMap);
}
}
LinkCallDataMap mergeSource = new LinkCallDataMap();
for (Link link : toLinkList) {
LinkCallDataMap sourceLinkCallDataMap = link.getSourceLinkCallDataMap();
mergeSource.addLinkDataMap(sourceLinkCallDataMap);
}
AgentTimeHistogramBuilder agentTimeBuilder = new AgentTimeHistogramBuilder(nodeApplication, range);
AgentTimeHistogram agentTimeHistogram = agentTimeBuilder.buildTarget(mergeSource);
nodeHistogram.setAgentTimeHistogram(agentTimeHistogram);
return nodeHistogram;
}
Aggregations