Skip to content

Commit

Permalink
[#9945] new api for servermap and right panel
Browse files Browse the repository at this point in the history
  • Loading branch information
donghun-cho committed Jul 19, 2023
1 parent 78610d8 commit d6a3208
Show file tree
Hide file tree
Showing 32 changed files with 1,122 additions and 41 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
/*
* Copyright 2023 NAVER Corp.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.navercorp.pinpoint.web.applicationmap;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonValue;
import com.navercorp.pinpoint.web.applicationmap.histogram.NodeHistogram;
import com.navercorp.pinpoint.web.applicationmap.link.Link;
import com.navercorp.pinpoint.web.applicationmap.nodes.Node;
import com.navercorp.pinpoint.web.applicationmap.nodes.NodeAgentHistogramList;
import com.navercorp.pinpoint.web.scatter.ScatterData;
import com.navercorp.pinpoint.web.view.histogram.ApplicationHistogramView;
import com.navercorp.pinpoint.web.view.histogram.HistogramView;
import com.navercorp.pinpoint.web.vo.Application;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

public class ApplicationMapWithScatterDataV3 implements ApplicationMap {

private final ApplicationMap applicationMap;
private final Map<Application, ScatterData> applicationScatterDataMap;

public ApplicationMapWithScatterDataV3(ApplicationMap applicationMap, Map<Application, ScatterData> applicationScatterDataMap) {
this.applicationMap = applicationMap;
this.applicationScatterDataMap = applicationScatterDataMap;
}

@Override
public Collection<Node> getNodes() {
return applicationMap.getNodes();
}

@Override
public Collection<Link> getLinks() {
return applicationMap.getLinks();
}

@JsonValue
public ApplicationMap getApplicationMap() {
return applicationMap;
}

@JsonIgnore
public List<ApplicationHistogramView> getNodeHistogramData() {
final List<ApplicationHistogramView> result = new ArrayList<>();
for (Node node : applicationMap.getNodes()) {
NodeHistogram nodeHistogram = node.getNodeHistogram();
HistogramView histogramView = new HistogramView(null, nodeHistogram.getApplicationTimeHistogramList());

result.add(new ApplicationHistogramView(node.getNodeName().getName(), histogramView));
}
return result;
}

@JsonIgnore
public List<ApplicationHistogramView> getLinkHistogramData() {
final List<ApplicationHistogramView> result = new ArrayList<>();
for (Link link : applicationMap.getLinks()) {
HistogramView histogramView = new HistogramView(null, link.getLinkApplicationTimeHistogramList());

result.add(new ApplicationHistogramView(link.getLinkName().getName(), histogramView));
}
return result;
}

@JsonIgnore
public List<NodeAgentHistogramList> getAgentHistogramData() {
final List<NodeAgentHistogramList> result = new ArrayList<>();
for (Node node : applicationMap.getNodes()) {
if (node.getServerGroupList().getInstanceCount() > 0) {
result.add(new NodeAgentHistogramList(node.getNodeName().getName(), node.getNodeHistogram(), node.getServerGroupList()));
}
}
return result;
}

@JsonIgnore
public Map<Application, ScatterData> getApplicationScatterDataMap() {
return applicationScatterDataMap;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ public FilterMapWrap(ApplicationMap applicationMap, TimeHistogramFormat timeHist
}
}

public void setV3Format(boolean v3Format) {
for(Node node : applicationMap.getNodes()) {
node.setV3Format(v3Format);
}
for(Link link : applicationMap.getLinks()) {
link.setV3Format(v3Format);
}
}

public void setLastFetchedTimestamp(Long lastFetchedTimestamp) {
this.lastFetchedTimestamp = lastFetchedTimestamp;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,15 @@ public MapWrap(ApplicationMap applicationMap, final TimeHistogramFormat timeHist
}
}

public void setV3Format(boolean v3Format) {
for(Node node : applicationMap.getNodes()) {
node.setV3Format(v3Format);
}
for(Link link : applicationMap.getLinks()) {
link.setV3Format(v3Format);
}
}

@JsonProperty("applicationMapData")
public ApplicationMap getApplicationMap() {
return applicationMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
Expand Down Expand Up @@ -79,6 +81,14 @@ public List<AgentResponseTimeViewModel> createViewModel(TimeHistogramFormat time
return result;
}

public Map<String, List<TimeHistogram>> getAgentTimeHistogramMap() {
Map<String, List<TimeHistogram>> result = new HashMap<>();
for (AgentHistogram agentHistogram : agentHistogramList.getAgentHistogramList()) {
result.put(agentHistogram.getAgentId().getName(), sortTimeHistogram(agentHistogram.getTimeHistogram()));
}
return result;
}

private List<TimeHistogram> sortTimeHistogram(Collection<TimeHistogram> timeMap) {
List<TimeHistogram> timeList = new ArrayList<>(timeMap);
timeList.sort(TimeHistogram.TIME_STAMP_ASC_COMPARATOR);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@

package com.navercorp.pinpoint.web.applicationmap.histogram;

import com.navercorp.pinpoint.common.server.util.time.Range;
import com.navercorp.pinpoint.web.view.TimeViewModel;
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.common.server.util.time.Range;

import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

/**
* @author emeroad
Expand All @@ -43,4 +45,8 @@ public ApplicationTimeHistogram(Application application, Range range, List<TimeH
public List<TimeViewModel> createViewModel(TimeHistogramFormat timeHistogramFormat) {
return new TimeViewModel.TimeViewModelBuilder(application, histogramList).setTimeHistogramFormat(timeHistogramFormat).build();
}

public List<TimeHistogram> getHistogramList() {
return histogramList;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,16 @@
import com.navercorp.pinpoint.common.server.util.time.Range;
import com.navercorp.pinpoint.web.view.AgentResponseTimeViewModelList;
import com.navercorp.pinpoint.web.view.TimeViewModel;
import com.navercorp.pinpoint.web.view.histogram.AgentHistogramView;
import com.navercorp.pinpoint.web.view.histogram.HistogramView;
import com.navercorp.pinpoint.web.view.histogram.TimeHistogramChartBuilder;
import com.navercorp.pinpoint.web.view.histogram.TimeHistogramType;
import com.navercorp.pinpoint.web.view.TimeSeries.TimeSeriesView;
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.web.vo.ResponseTime;
import com.navercorp.pinpoint.web.vo.ResponseTimeStatics;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
Expand All @@ -35,6 +41,7 @@
* agentHistogram
* applicationTimeHistogram
* agentTimeHistogram
*
* @author emeroad
*/
public class NodeHistogram {
Expand Down Expand Up @@ -105,20 +112,40 @@ public Map<String, ResponseTimeStatics> getAgentResponseStatisticsMap() {
return null;
}
Map<String, ResponseTimeStatics> map = new HashMap<>(agentHistogramMap.size());
agentHistogramMap.forEach((agentId, histogram) -> {
map.put(agentId, ResponseTimeStatics.fromHistogram(histogram));
});
agentHistogramMap.forEach((agentId, histogram) ->
map.put(agentId, ResponseTimeStatics.fromHistogram(histogram))
);
return map;
}

public List<TimeViewModel> getApplicationTimeHistogram(TimeHistogramFormat timeHistogramFormat) {
return applicationTimeHistogram.createViewModel(timeHistogramFormat);
}

public TimeSeriesView getApplicationTimeHistogram(TimeHistogramType timeHistogramType) {
TimeHistogramChartBuilder builder = new TimeHistogramChartBuilder(applicationTimeHistogram.getHistogramList());
return builder.build(timeHistogramType);
}

public List<TimeHistogram> getApplicationTimeHistogramList() {
return applicationTimeHistogram.getHistogramList();
}

public AgentResponseTimeViewModelList getAgentTimeHistogram(TimeHistogramFormat timeHistogramFormat) {
return new AgentResponseTimeViewModelList(agentTimeHistogram.createViewModel(timeHistogramFormat));
}

public List<AgentHistogramView> getAgentHistogramViewList() {
Map<String, List<TimeHistogram>> agentTimeHistogramMap = agentTimeHistogram.getAgentTimeHistogramMap();

List<AgentHistogramView> agentHistogramViewList = new ArrayList<>();
for (String agentId : agentHistogramMap.keySet()) {
HistogramView histogramView = new HistogramView(agentHistogramMap.get(agentId), agentTimeHistogramMap.get(agentId));
agentHistogramViewList.add(new AgentHistogramView(agentId, histogramView));
}
return agentHistogramViewList;
}

public void setAgentTimeHistogram(AgentTimeHistogram agentTimeHistogram) {
this.agentTimeHistogram = agentTimeHistogram;
}
Expand Down Expand Up @@ -165,7 +192,7 @@ private Histogram createApplicationLevelResponseTime(List<ResponseTime> response
}
return applicationHistogram;
}

public Range getRange() {
return range;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationTimeHistogram;
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationTimeHistogramBuilder;
import com.navercorp.pinpoint.web.applicationmap.histogram.Histogram;
import com.navercorp.pinpoint.web.applicationmap.histogram.TimeHistogram;
import com.navercorp.pinpoint.web.applicationmap.histogram.TimeHistogramFormat;
import com.navercorp.pinpoint.web.applicationmap.nodes.Node;
import com.navercorp.pinpoint.web.applicationmap.rawdata.AgentHistogramList;
Expand All @@ -33,6 +34,9 @@
import com.navercorp.pinpoint.web.view.AgentResponseTimeViewModelList;
import com.navercorp.pinpoint.web.view.LinkSerializer;
import com.navercorp.pinpoint.web.view.TimeViewModel;
import com.navercorp.pinpoint.web.view.histogram.TimeHistogramChartBuilder;
import com.navercorp.pinpoint.web.view.histogram.TimeHistogramType;
import com.navercorp.pinpoint.web.view.TimeSeries.TimeSeriesView;
import com.navercorp.pinpoint.web.vo.Application;

import java.util.Collection;
Expand Down Expand Up @@ -70,6 +74,7 @@ public class Link {

private Histogram linkHistogram;
private TimeHistogramFormat timeHistogramFormat = TimeHistogramFormat.V1;
private boolean v3Format = false;

public Link(CreateType createType, Node fromNode, Node toNode, Range range) {
this(LinkType.DETAILED, createType, fromNode, toNode, range);
Expand Down Expand Up @@ -128,6 +133,13 @@ public void setTimeHistogramFormat(TimeHistogramFormat timeHistogramFormat) {
this.timeHistogramFormat = timeHistogramFormat;
}

public boolean isV3Format() {
return v3Format;
}

public void setV3Format(boolean v3Format) {
this.v3Format = v3Format;
}

public LinkCallDataMap getSourceLinkCallDataMap() {
return sourceLinkCallDataMap;
Expand Down Expand Up @@ -213,6 +225,23 @@ public ApplicationTimeHistogram getTargetApplicationTimeSeriesHistogramData() {
return builder.build(targetLinkCallDataMap.getLinkDataList());
}

public TimeSeriesView getLinkApplicationTimeSeriesHistogram(TimeHistogramType timeHistogramType) {
TimeHistogramChartBuilder builder = new TimeHistogramChartBuilder(getLinkApplicationTimeHistogram().getHistogramList());
return builder.build(timeHistogramType);
}

public List<TimeHistogram> getLinkApplicationTimeHistogramList() {
return getLinkApplicationTimeHistogram().getHistogramList();
}

public ApplicationTimeHistogram getLinkApplicationTimeHistogram() {
if (createType == CreateType.Source) {
return getSourceApplicationTimeSeriesHistogramData();
} else {
return getTargetApplicationTimeSeriesHistogramData();
}
}

public void addSource(LinkCallDataMap sourceLinkCallDataMap) {
this.sourceLinkCallDataMap.addLinkDataMap(sourceLinkCallDataMap);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import com.navercorp.pinpoint.web.applicationmap.histogram.TimeHistogramFormat;
import com.navercorp.pinpoint.web.view.LinkHistogramSummarySerializer;
import com.navercorp.pinpoint.web.view.TimeViewModel;
import com.navercorp.pinpoint.web.view.histogram.TimeHistogramType;
import com.navercorp.pinpoint.web.view.TimeSeries.TimeSeriesView;

import java.util.List;
import java.util.Objects;
Expand Down Expand Up @@ -54,6 +56,10 @@ public List<TimeViewModel> getTimeSeriesHistogram() {
return link.getLinkApplicationTimeSeriesHistogram();
}

public TimeSeriesView getTimeHistogram(TimeHistogramType timeHistogramType) {
return link.getLinkApplicationTimeSeriesHistogram(timeHistogramType);
}

@Override
public String toString() {
return "LinkHistogramSummary{" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public class Node {

private boolean authorized = true;
private TimeHistogramFormat timeHistogramFormat = TimeHistogramFormat.V1;
private boolean v3Format = false;

public Node(Application application) {
this(NodeType.DETAILED, application);
Expand Down Expand Up @@ -125,6 +126,14 @@ public void setTimeHistogramFormat(TimeHistogramFormat timeHistogramFormat) {
this.timeHistogramFormat = timeHistogramFormat;
}

public boolean isV3Format() {
return v3Format;
}

public void setV3Format(boolean v3Format) {
this.v3Format = v3Format;
}

@Override
public String toString() {
return "Node [" + application + "]";
Expand Down
Loading

0 comments on commit d6a3208

Please sign in to comment.