Skip to content

Commit

Permalink
[#1967] fix broken monitor statistics in status - make the code more …
Browse files Browse the repository at this point in the history
…future-proof as well
  • Loading branch information
angryziber authored and xael-fry committed Aug 10, 2015
1 parent 771cf1b commit fd68d74
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions framework/src/play/CorePlugin.java
Expand Up @@ -3,12 +3,13 @@
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.jamonapi.Monitor;
import com.jamonapi.MonitorFactory;
import com.jamonapi.utils.Misc;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.*;

import org.apache.commons.lang.StringUtils;
import play.Play.Mode;
Expand All @@ -26,6 +27,8 @@
import play.mvc.Http.Request;
import play.mvc.Http.Response;

import static java.util.Arrays.asList;

/**
* Plugin used for core tasks
*/
Expand Down Expand Up @@ -170,20 +173,26 @@ public String getStatus() {
try {
out.println("Monitors:");
out.println("~~~~~~~~");
Object[][] data = Misc.sort(MonitorFactory.getRootMonitor().getBasicData(), 3, "desc");
List<Monitor> monitors = new ArrayList<Monitor>(asList(MonitorFactory.getRootMonitor().getMonitors()));
Collections.sort(monitors, new Comparator<Monitor>() {
@Override public int compare(Monitor m1, Monitor m2) {
return Double.compare(m2.getTotal(), m1.getTotal());
}
});
int lm = 10;
for (Object[] row : data) {
if (row[0].toString().length() > lm) {
lm = row[0].toString().length();
for (Monitor monitor : monitors) {
if (monitor.getLabel().length() > lm) {
lm = monitor.getLabel().length();
}
}
for (Object[] row : data) {
if (((Double) row[1]) > 0) {
out.println(String.format("%-" + (lm) + "s -> %8.0f hits; %8.1f avg; %8.1f min; %8.1f max;", row[0], row[1], row[2], row[6], row[7]));
for (Monitor monitor : monitors) {
if (monitor.getHits() > 0) {
out.println(String.format("%-" + lm + "s -> %8.0f hits; %8.1f avg; %8.1f min; %8.1f max;",
monitor.getLabel(), monitor.getHits(), monitor.getAvg(), monitor.getMin(), monitor.getMax()));
}
}
} catch (Exception e) {
out.println("No monitors found");
out.println("No monitors found: " + e);
}
return sw.toString();
}
Expand Down

0 comments on commit fd68d74

Please sign in to comment.