Skip to content

Commit

Permalink
[#3082] split stat data as window size. add allowed latenss configura…
Browse files Browse the repository at this point in the history
…tion.
  • Loading branch information
minwoo-jung committed Jun 28, 2017
1 parent b8108a3 commit 5106b12
Show file tree
Hide file tree
Showing 8 changed files with 373 additions and 37 deletions.
Expand Up @@ -23,9 +23,9 @@
*/
public class JoinAgentStatBo implements JoinStatBo {
public static final JoinAgentStatBo EMPTY_JOIN_AGENT_STAT_BO = new JoinAgentStatBo();

private static final List<JoinCpuLoadBo> EMPTY_JOIN_CPU_LOAD_BO_LIST = new ArrayList<JoinCpuLoadBo>(0);
private static final List<JoinMemoryBo> EMPTY_JOIN_MEMORY_BO_LIST = new ArrayList<JoinMemoryBo>();

private String agentId = UNKNOWN_AGENT;
private long agentStartTimestamp = Long.MIN_VALUE;
private long timestamp = Long.MIN_VALUE;
Expand Down
Expand Up @@ -187,12 +187,86 @@ public List<JoinMemoryBo> getJoinMemoryBoList() {
return joinMemoryBoList;
}

public static List<JoinApplicationStatBo> createJoinApplicationStatBo(String applicationId, JoinAgentStatBo joinAgentStatBo, long rangeTime) {
List<JoinApplicationStatBo> joinApplicationStatBoList = new ArrayList<JoinApplicationStatBo>();
List<JoinAgentStatBo> joinAgentStatBoList = splitJoinAgentStatBo(applicationId, joinAgentStatBo, rangeTime);

for (JoinAgentStatBo sliceJoinAgentStatBo : joinAgentStatBoList) {
JoinApplicationStatBo joinApplicationStatBo = new JoinApplicationStatBo();
joinApplicationStatBo.setId(applicationId);
joinApplicationStatBo.setTimestamp(sliceJoinAgentStatBo.getTimestamp());
joinApplicationStatBo.setJoinCpuLoadBoList(sliceJoinAgentStatBo.getJoinCpuLoadBoList());
joinApplicationStatBo.setJoinMemoryBoList(sliceJoinAgentStatBo.getJoinMemoryBoList());
joinApplicationStatBoList.add(joinApplicationStatBo);
}

return joinApplicationStatBoList;
}

private static List<JoinAgentStatBo> splitJoinAgentStatBo(String applicationId, JoinAgentStatBo joinAgentStatBo, long rangeTime) {
Map<Long, JoinAgentStatBo> joinAgentStatBoMap = new HashMap<Long, JoinAgentStatBo>();

Map<Long, List<JoinCpuLoadBo>> joinCpuLoadBoMap = new HashMap<Long, List<JoinCpuLoadBo>>();
for (JoinCpuLoadBo joinCpuLoadBo : joinAgentStatBo.getJoinCpuLoadBoList()) {
long timestamp = joinCpuLoadBo.getTimestamp();
long time = timestamp - (timestamp % rangeTime);
List<JoinCpuLoadBo> joinCpuLoadBoList = joinCpuLoadBoMap.get(time);

if((joinCpuLoadBoList == null)) {
joinCpuLoadBoList = new ArrayList<JoinCpuLoadBo>();
joinCpuLoadBoMap.put(time, joinCpuLoadBoList);
}

joinCpuLoadBoList.add(joinCpuLoadBo);
}
for (Map.Entry<Long, List<JoinCpuLoadBo>> entry : joinCpuLoadBoMap.entrySet()) {
long time = entry.getKey();
JoinAgentStatBo sliceJoinAgentStatBo = getORCreateJoinAgentStatBo(applicationId, joinAgentStatBoMap, time);
sliceJoinAgentStatBo.setJoinCpuLoadBoList(entry.getValue());
}

Map<Long, List<JoinMemoryBo>> joinMemoryBoMap = new HashMap<Long, List<JoinMemoryBo>>();
for (JoinMemoryBo joinMemoryBo : joinAgentStatBo.getJoinMemoryBoList()) {
long timeStamp = joinMemoryBo.getTimestamp();
long time = timeStamp - (timeStamp % rangeTime);
List<JoinMemoryBo> joinMemoryBoList = joinMemoryBoMap.get(time);

if(joinMemoryBoList == null) {
joinMemoryBoList = new ArrayList<JoinMemoryBo>();
joinMemoryBoMap.put(time, joinMemoryBoList);
}

joinMemoryBoList.add(joinMemoryBo);
}
for (Map.Entry<Long, List<JoinMemoryBo>> entry : joinMemoryBoMap.entrySet()) {
long time = entry.getKey();
JoinAgentStatBo sliceJoinAgentStatBo = getORCreateJoinAgentStatBo(applicationId, joinAgentStatBoMap, time);
sliceJoinAgentStatBo.setJoinMemoryBoList(entry.getValue());
}

return new ArrayList<JoinAgentStatBo>(joinAgentStatBoMap.values());
}

private static JoinAgentStatBo getORCreateJoinAgentStatBo(String applicationId, Map<Long, JoinAgentStatBo> joinAgentStatBoMap, long time) {
JoinAgentStatBo joinAgentStatBo = joinAgentStatBoMap.get(time);

if (joinAgentStatBo == null) {
joinAgentStatBo = new JoinAgentStatBo();
joinAgentStatBo.setId(applicationId);
joinAgentStatBo.setTimestamp(time);
joinAgentStatBoMap.put(time, joinAgentStatBo);
}

return joinAgentStatBo;
}

@Override
public String toString() {
return "JoinApplicationStatBo{" +
"applicationId='" + applicationId + '\'' +
", joinCpuLoadBoList=" + joinCpuLoadBoList +
", timestamp=" + new Date(timestamp) +
", joinMemoryBoList=" + joinMemoryBoList +
", timestamp=" + timestamp +
", statType=" + statType +
'}';
}
Expand Down
Expand Up @@ -78,7 +78,6 @@ public static JoinCpuLoadBo joinCpuLoadBoList(List<JoinCpuLoadBo> joinCpuLoadBoL
String minJvmCpuAgentId = initCpuLoadBo.getMinJvmCpuAgentId();
double minJvmCpuLoad = initCpuLoadBo.getMinJvmCpuLoad();
double sumSystemCpuLoad = 0D;
double systemCpuLoad = initCpuLoadBo.getSystemCpuLoad();
String maxSysCpuAgentId = initCpuLoadBo.getMaxSysCpuAgentId();
double maxSystemCpuLoad = initCpuLoadBo.getMaxSystemCpuLoad();
String minSysCpuAgentId = initCpuLoadBo.getMinSysCpuAgentId();
Expand Down

0 comments on commit 5106b12

Please sign in to comment.