diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/AbstractPerfReportWriter.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/AbstractPerfReportWriter.java
index ad1abf5be7..d259f727b6 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/AbstractPerfReportWriter.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/AbstractPerfReportWriter.java
@@ -23,6 +23,10 @@ import org.apache.activemq.tool.reports.plugins.CpuReportPlugin;
import java.util.Map;
public abstract class AbstractPerfReportWriter implements PerformanceReportWriter {
+
+ public static final int REPORT_PLUGIN_THROUGHPUT = 0;
+ public static final int REPORT_PLUGIN_CPU = 1;
+
protected ReportPlugin[] plugins = new ReportPlugin[] {
new ThroughputReportPlugin(),
new CpuReportPlugin()
diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/PerformanceStatisticsUtil.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/PerformanceStatisticsUtil.java
index 824cadddac..af77dcb97f 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/PerformanceStatisticsUtil.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/PerformanceStatisticsUtil.java
@@ -23,67 +23,67 @@ public final class PerformanceStatisticsUtil {
private PerformanceStatisticsUtil() {
}
- public static long getTotalThroughput(List totalTPList) {
- long totalTP = 0;
- if (totalTPList != null) {
- for (Iterator i=totalTPList.iterator(); i.hasNext();) {
- totalTP += ((Long)i.next()).longValue();
+ public static long getSum(List numList) {
+ long sum = 0;
+ if (numList != null) {
+ for (Iterator i=numList.iterator(); i.hasNext();) {
+ sum += ((Long)i.next()).longValue();
}
} else {
- totalTP = -1;
+ sum = -1;
}
- return totalTP;
+ return sum;
}
- public static long getMinThroughput(List totalTPList) {
- long minTP = Long.MAX_VALUE;
- if (totalTPList != null) {
- for (Iterator i=totalTPList.iterator(); i.hasNext();) {
- minTP = Math.min(((Long)i.next()).longValue(), minTP);
+ public static long getMin(List numList) {
+ long min = Long.MAX_VALUE;
+ if (numList != null) {
+ for (Iterator i=numList.iterator(); i.hasNext();) {
+ min = Math.min(((Long)i.next()).longValue(), min);
}
} else {
- minTP = -1;
+ min = -1;
}
- return minTP;
+ return min;
}
- public static long getMaxThroughput(List totalTPList) {
- long maxTP = Long.MIN_VALUE;
- if (totalTPList != null) {
- for (Iterator i=totalTPList.iterator(); i.hasNext();) {
- maxTP = Math.max(((Long)i.next()).longValue(), maxTP);
+ public static long getMax(List numList) {
+ long max = Long.MIN_VALUE;
+ if (numList != null) {
+ for (Iterator i=numList.iterator(); i.hasNext();) {
+ max = Math.max(((Long)i.next()).longValue(), max);
}
} else {
- maxTP = -1;
+ max = -1;
}
- return maxTP;
+ return max;
}
- public static double getAveThroughput(List totalTPList) {
- double aveTP;
- if (totalTPList != null) {
+ public static double getAve(List numList) {
+ double ave;
+ if (numList != null) {
int sampleCount = 0;
long totalTP = 0;
- for (Iterator i=totalTPList.iterator(); i.hasNext();) {
+ for (Iterator i=numList.iterator(); i.hasNext();) {
sampleCount++;
totalTP += ((Long)i.next()).longValue();
}
return (double)totalTP / (double)sampleCount;
} else {
- aveTP = -1;
+ ave = -1;
}
- return aveTP;
+ return ave;
}
- public static double getAveThroughputExcludingMinMax(List totalTPList) {
- double aveTP;
- long minTP = getMinThroughput(totalTPList);
- long maxTP = getMaxThroughput(totalTPList);
- if (totalTPList != null) {
+ public static double getAveEx(List numList) {
+ double ave;
+ long minTP = getMin(numList);
+ long maxTP = getMax(numList);
+ if (numList != null) {
int sampleCount = 0;
long totalTP = 0;
long sampleTP;
- for (Iterator i=totalTPList.iterator(); i.hasNext();) {
+ for (Iterator i=numList.iterator(); i.hasNext();) {
sampleCount++;
sampleTP = ((Long)i.next()).longValue();
if (sampleTP != minTP && sampleTP != maxTP) {
@@ -92,9 +92,9 @@ public final class PerformanceStatisticsUtil {
}
return (double)totalTP / (double)sampleCount;
} else {
- aveTP = -1;
+ ave = -1;
}
- return aveTP;
+ return ave;
}
}
diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/VerbosePerfReportWriter.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/VerbosePerfReportWriter.java
index 72a57b5cdf..437b9ba453 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/VerbosePerfReportWriter.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/VerbosePerfReportWriter.java
@@ -18,6 +18,7 @@ package org.apache.activemq.tool.reports;
import org.apache.activemq.tool.reports.plugins.ReportPlugin;
import org.apache.activemq.tool.reports.plugins.ThroughputReportPlugin;
+import org.apache.activemq.tool.reports.plugins.CpuReportPlugin;
import java.util.Properties;
import java.util.Iterator;
@@ -40,9 +41,9 @@ public class VerbosePerfReportWriter extends AbstractPerfReportWriter {
}
public void writeCsvData(int csvType, String csvData) {
- if (csvType == ReportPlugin.REPORT_PLUGIN_THROUGHPUT) {
+ if (csvType == REPORT_PLUGIN_THROUGHPUT) {
System.out.println("[PERF-TP]: " + csvData);
- } else if (csvType == ReportPlugin.REPORT_PLUGIN_CPU) {
+ } else if (csvType == REPORT_PLUGIN_CPU) {
System.out.println("[PERF-CPU]: " + csvData);
}
handleCsvData(csvType, csvData);
@@ -62,8 +63,23 @@ public class VerbosePerfReportWriter extends AbstractPerfReportWriter {
}
public void writePerfSummary() {
- Map summary = getSummary(ReportPlugin.REPORT_PLUGIN_THROUGHPUT);
+ Map summary;
+
+ summary = getSummary(REPORT_PLUGIN_THROUGHPUT);
+ if (summary != null && summary.size() > 0) {
+ writeThroughputSummary(summary);
+ }
+
+ summary = getSummary(REPORT_PLUGIN_CPU);
+ if (summary != null && summary.size() > 0) {
+ writeCpuSummary(summary);
+ }
+
+ }
+
+ protected void writeThroughputSummary(Map summary) {
+ writeHeader("SYSTEM THROUGHPUT SUMMARY");
System.out.println("[PERF-TP-SUMMARY] System Total Throughput: " + summary.get(ThroughputReportPlugin.KEY_SYS_TOTAL_TP));
System.out.println("[PERF-TP-SUMMARY] System Total Clients: " + summary.get(ThroughputReportPlugin.KEY_SYS_TOTAL_CLIENTS));
System.out.println("[PERF-TP-SUMMARY] System Average Throughput: " + summary.get(ThroughputReportPlugin.KEY_SYS_AVE_TP));
@@ -80,6 +96,30 @@ public class VerbosePerfReportWriter extends AbstractPerfReportWriter {
System.out.println("[PERF-TP-SUMMARY] Max Client Average Throughput Excluding Min/Max: " + summary.get(ThroughputReportPlugin.KEY_MAX_CLIENT_AVE_EMM_TP));
}
+ protected void writeCpuSummary(Map summary) {
+ writeHeader("SYSTEM CPU USAGE SUMMARY");
+ System.out.println("[PERF-CPU-SUMMARY] Total Blocks Received: " + summary.get(CpuReportPlugin.KEY_BLOCK_RECV));
+ System.out.println("[PERF-CPU-SUMMARY] Ave Blocks Received: " + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_RECV));
+
+ System.out.println("[PERF-CPU-SUMMARY] Total Blocks Sent: " + summary.get(CpuReportPlugin.KEY_BLOCK_SENT));
+ System.out.println("[PERF-CPU-SUMMARY] Ave Blocks Sent: " + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_SENT));
+
+ System.out.println("[PERF-CPU-SUMMARY] Total Context Switches: " + summary.get(CpuReportPlugin.KEY_CTX_SWITCH));
+ System.out.println("[PERF-CPU-SUMMARY] Ave Context Switches: " + summary.get(CpuReportPlugin.KEY_AVE_CTX_SWITCH));
+
+ System.out.println("[PERF-CPU-SUMMARY] Total User Time: " + summary.get(CpuReportPlugin.KEY_USER_TIME));
+ System.out.println("[PERF-CPU-SUMMARY] Ave User Time: " + summary.get(CpuReportPlugin.KEY_AVE_USER_TIME));
+
+ System.out.println("[PERF-CPU-SUMMARY] Total System Time: " + summary.get(CpuReportPlugin.KEY_SYS_TIME));
+ System.out.println("[PERF-CPU-SUMMARY] Ave System Time: " + summary.get(CpuReportPlugin.KEY_AVE_SYS_TIME));
+
+ System.out.println("[PERF-CPU-SUMMARY] Total Idle Time: " + summary.get(CpuReportPlugin.KEY_IDLE_TIME));
+ System.out.println("[PERF-CPU-SUMMARY] Ave Idle Time: " + summary.get(CpuReportPlugin.KEY_AVE_IDLE_TIME));
+
+ System.out.println("[PERF-CPU-SUMMARY] Total Wait Time: " + summary.get(CpuReportPlugin.KEY_WAIT_TIME));
+ System.out.println("[PERF-CPU-SUMMARY] Ave Wait Time: " + summary.get(CpuReportPlugin.KEY_AVE_WAIT_TIME));
+ }
+
protected void writeHeader(String header) {
char[] border = new char[header.length() + 8]; // +8 for spacing
Arrays.fill(border, '#');
diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/XmlFilePerfReportWriter.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/XmlFilePerfReportWriter.java
index cc08d04fe5..ef10e3c5c2 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/XmlFilePerfReportWriter.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/XmlFilePerfReportWriter.java
@@ -20,6 +20,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.activemq.tool.reports.plugins.ReportPlugin;
import org.apache.activemq.tool.reports.plugins.ThroughputReportPlugin;
+import org.apache.activemq.tool.reports.plugins.CpuReportPlugin;
import java.util.Properties;
import java.util.List;
@@ -114,9 +115,9 @@ public class XmlFilePerfReportWriter extends AbstractPerfReportWriter {
}
public void writeCsvData(int csvType, String csvData) {
- if (csvType == ReportPlugin.REPORT_PLUGIN_THROUGHPUT) {
+ if (csvType == REPORT_PLUGIN_THROUGHPUT) {
tempLogFileWriter.println("[TP-DATA]" + csvData);
- } else if (csvType == ReportPlugin.REPORT_PLUGIN_CPU) {
+ } else if (csvType == REPORT_PLUGIN_CPU) {
tempLogFileWriter.println("[CPU-DATA]" + csvData);
}
}
@@ -198,10 +199,10 @@ public class XmlFilePerfReportWriter extends AbstractPerfReportWriter {
String line;
while ((line = reader.readLine()) != null) {
if (line.startsWith("[TP-DATA]")) {
- handleCsvData(ReportPlugin.REPORT_PLUGIN_THROUGHPUT, line.substring("[TP-DATA]".length()));
+ handleCsvData(REPORT_PLUGIN_THROUGHPUT, line.substring("[TP-DATA]".length()));
parsePerfCsvData("tpdata", line.substring("[TP-DATA]".length()));
} else if (line.startsWith("[CPU-DATA]")) {
- handleCsvData(ReportPlugin.REPORT_PLUGIN_CPU, line.substring("[CPU-DATA]".length()));
+ handleCsvData(REPORT_PLUGIN_CPU, line.substring("[CPU-DATA]".length()));
parsePerfCsvData("cpudata", line.substring("[CPU-DATA]".length()));
} else if (line.startsWith("[INFO]")) {
xmlFileWriter.println("" + line + "");
@@ -215,14 +216,32 @@ public class XmlFilePerfReportWriter extends AbstractPerfReportWriter {
}
protected void writeXmlPerfSummary() {
- // Write throughput summary
- Map summary = getSummary(ReportPlugin.REPORT_PLUGIN_THROUGHPUT);
- xmlFileWriter.println("");
+ Map summary;
+
+ summary = getSummary(REPORT_PLUGIN_THROUGHPUT);
+ if (summary != null && summary.size() > 0) {
+ writeThroughputSummary(summary);
+ }
+
+ summary = getSummary(REPORT_PLUGIN_CPU);
+ if (summary != null && summary.size() > 0) {
+ writeCpuSummary(summary);
+ }
+
+ }
+
+ protected void writeThroughputSummary(Map summary) {
+ // Write throughput summary
+ xmlFileWriter.println("");
xmlFileWriter.println("");
String val, clientName, clientVal;
+ System.out.println("#########################################");
+ System.out.println("#### SYSTEM THROUGHPUT SUMMARY ####");
+ System.out.println("#########################################");
+
val = (String)summary.get(ThroughputReportPlugin.KEY_SYS_TOTAL_TP);
System.out.println("System Total Throughput: " + val);
xmlFileWriter.println("" + val + "");
@@ -299,6 +318,60 @@ public class XmlFilePerfReportWriter extends AbstractPerfReportWriter {
xmlFileWriter.println("");
}
+ protected void writeCpuSummary(Map summary) {
+ xmlFileWriter.println("");
+ xmlFileWriter.println("");
+
+ System.out.println("########################################");
+ System.out.println("#### SYSTEM CPU USAGE SUMMARY ####");
+ System.out.println("########################################");
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_BLOCK_RECV) + "");
+ System.out.println("Total Blocks Received: " + summary.get(CpuReportPlugin.KEY_BLOCK_RECV));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_RECV) + "");
+ System.out.println("Ave Blocks Received: " + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_RECV));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_BLOCK_SENT) + "");
+ System.out.println("Total Blocks Sent: " + summary.get(CpuReportPlugin.KEY_BLOCK_SENT));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_SENT) + "");
+ System.out.println(" Ave Blocks Sent: " + summary.get(CpuReportPlugin.KEY_AVE_BLOCK_SENT));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_CTX_SWITCH) + "");
+ System.out.println("Total Context Switches: " + summary.get(CpuReportPlugin.KEY_CTX_SWITCH));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_AVE_CTX_SWITCH) + "");
+ System.out.println("Ave Context Switches: " + summary.get(CpuReportPlugin.KEY_AVE_CTX_SWITCH));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_USER_TIME) + "");
+ System.out.println("Total User Time: " + summary.get(CpuReportPlugin.KEY_USER_TIME));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_AVE_USER_TIME) + "");
+ System.out.println("Ave User Time: " + summary.get(CpuReportPlugin.KEY_AVE_USER_TIME));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_SYS_TIME) + "");
+ System.out.println("Total System Time: " + summary.get(CpuReportPlugin.KEY_SYS_TIME));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_AVE_SYS_TIME) + "");
+ System.out.println("Ave System Time: " + summary.get(CpuReportPlugin.KEY_AVE_SYS_TIME));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_IDLE_TIME) + "");
+ System.out.println("Total Idle Time: " + summary.get(CpuReportPlugin.KEY_IDLE_TIME));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_AVE_IDLE_TIME) + "");
+ System.out.println("Ave Idle Time: " + summary.get(CpuReportPlugin.KEY_AVE_IDLE_TIME));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_WAIT_TIME) + "");
+ System.out.println("Total Wait Time: " + summary.get(CpuReportPlugin.KEY_WAIT_TIME));
+
+ xmlFileWriter.println("" + summary.get(CpuReportPlugin.KEY_AVE_WAIT_TIME) + "");
+ System.out.println("Ave Wait Time: " + summary.get(CpuReportPlugin.KEY_AVE_WAIT_TIME));
+
+ xmlFileWriter.println("");
+ xmlFileWriter.println("");
+ }
+
protected void writeMap(String name, Map map) {
xmlFileWriter.println("");
xmlFileWriter.println("");
diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/CpuReportPlugin.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/CpuReportPlugin.java
index efd067b471..9792c7627c 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/CpuReportPlugin.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/CpuReportPlugin.java
@@ -16,14 +16,134 @@
*/
package org.apache.activemq.tool.reports.plugins;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.activemq.tool.reports.PerformanceStatisticsUtil;
+
import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.HashMap;
public class CpuReportPlugin implements ReportPlugin {
+ private static final Log log = LogFactory.getLog(CpuReportPlugin.class);
+
+ public static final String NAME_BLOCK_RECV = "bi";
+ public static final String NAME_BLOCK_SENT = "bu";
+ public static final String NAME_CTX_SWITCH = "cs";
+ public static final String NAME_USER_TIME = "us";
+ public static final String NAME_SYS_TIME = "sy";
+ public static final String NAME_IDLE_TIME = "id";
+ public static final String NAME_WAIT_TIME = "wa";
+
+ public static final String KEY_BLOCK_RECV = "BlocksReceived";
+ public static final String KEY_BLOCK_SENT = "BlocksSent";
+ public static final String KEY_CTX_SWITCH = "ContextSwitches";
+ public static final String KEY_USER_TIME = "UserTime";
+ public static final String KEY_SYS_TIME = "SystemTime";
+ public static final String KEY_IDLE_TIME = "IdleTime";
+ public static final String KEY_WAIT_TIME = "WaitingTime";
+
+ public static final String KEY_AVE_BLOCK_RECV = "AveBlocksReceived";
+ public static final String KEY_AVE_BLOCK_SENT = "AveBlocksSent";
+ public static final String KEY_AVE_CTX_SWITCH = "AveContextSwitches";
+ public static final String KEY_AVE_USER_TIME = "AveUserTime";
+ public static final String KEY_AVE_SYS_TIME = "AveSystemTime";
+ public static final String KEY_AVE_IDLE_TIME = "AveIdleTime";
+ public static final String KEY_AVE_WAIT_TIME = "AveWaitingTime";
+
+ protected List blockRecv = new ArrayList();
+ protected List blockSent = new ArrayList();
+ protected List ctxSwitch = new ArrayList();
+ protected List userTime = new ArrayList();
+ protected List sysTime = new ArrayList();
+ protected List idleTime = new ArrayList();
+ protected List waitTime = new ArrayList();
+
public void handleCsvData(String csvData) {
- // Do nothing
+ StringTokenizer tokenizer = new StringTokenizer(csvData, ",");
+ String data, key, val;
+ while (tokenizer.hasMoreTokens()) {
+ data = tokenizer.nextToken();
+ key = data.substring(0, data.indexOf("="));
+ val = data.substring(data.indexOf("=") + 1);
+
+ addToCpuList(key, val);
+ }
}
public Map getSummary() {
- return null; // Do nothing
+ long val;
+
+ Map summary = new HashMap();
+
+ if (blockRecv.size() > 0) {
+ val = PerformanceStatisticsUtil.getSum(blockRecv);
+ summary.put(KEY_BLOCK_RECV, String.valueOf(val));
+ summary.put(KEY_AVE_BLOCK_RECV, String.valueOf((double)val / (double)blockRecv.size()));
+ }
+
+ if (blockSent.size() > 0) {
+ val = PerformanceStatisticsUtil.getSum(blockSent);
+ summary.put(KEY_BLOCK_SENT, String.valueOf(val));
+ summary.put(KEY_AVE_BLOCK_SENT, String.valueOf((double)val / (double)blockSent.size()));
+ }
+
+ if (ctxSwitch.size() > 0) {
+ val = PerformanceStatisticsUtil.getSum(ctxSwitch);
+ summary.put(KEY_CTX_SWITCH, String.valueOf(val));
+ summary.put(KEY_AVE_CTX_SWITCH, String.valueOf((double)val / (double)ctxSwitch.size()));
+ }
+
+ if (userTime.size() > 0) {
+ val = PerformanceStatisticsUtil.getSum(userTime);
+ summary.put(KEY_USER_TIME, String.valueOf(val));
+ summary.put(KEY_AVE_USER_TIME, String.valueOf((double)val / (double)userTime.size()));
+ }
+
+ if (sysTime.size() > 0) {
+ val = PerformanceStatisticsUtil.getSum(sysTime);
+ summary.put(KEY_SYS_TIME, String.valueOf(val));
+ summary.put(KEY_AVE_SYS_TIME, String.valueOf((double)val / (double)sysTime.size()));
+ }
+
+ if (idleTime.size() > 0) {
+ val = PerformanceStatisticsUtil.getSum(idleTime);
+ summary.put(KEY_IDLE_TIME, String.valueOf(val));
+ summary.put(KEY_AVE_IDLE_TIME, String.valueOf((double)val / (double)idleTime.size()));
+ }
+
+ if (waitTime.size() > 0) {
+ val = PerformanceStatisticsUtil.getSum(waitTime);
+ summary.put(KEY_WAIT_TIME, String.valueOf(val));
+ summary.put(KEY_AVE_WAIT_TIME, String.valueOf((double)val / (double)waitTime.size()));
+ }
+
+ if (summary.size() > 0) {
+ return summary;
+ } else {
+ return null;
+ }
+ }
+
+ protected void addToCpuList(String key, String val) {
+ if (key.equals(NAME_BLOCK_RECV)) {
+ blockRecv.add(Long.valueOf(val));
+ } else if (key.equals(NAME_BLOCK_SENT)) {
+ blockSent.add(Long.valueOf(val));
+ } else if (key.equals(NAME_CTX_SWITCH)) {
+ ctxSwitch.add(Long.valueOf(val));
+ } else if (key.equals(NAME_USER_TIME)) {
+ userTime.add(Long.valueOf(val));
+ } else if (key.equals(NAME_SYS_TIME)) {
+ sysTime.add(Long.valueOf(val));
+ } else if (key.equals(NAME_IDLE_TIME)) {
+ idleTime.add(Long.valueOf(val));
+ } else if (key.equals(NAME_WAIT_TIME)) {
+ waitTime.add(Long.valueOf(val));
+ } else {
+ log.warn("Unrecognized CPU data. " + key + "=" + val);
+ }
}
}
diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/ReportPlugin.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/ReportPlugin.java
index 0f748def68..f780d85b98 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/ReportPlugin.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/ReportPlugin.java
@@ -19,9 +19,6 @@ package org.apache.activemq.tool.reports.plugins;
import java.util.Map;
public interface ReportPlugin {
- public static final int REPORT_PLUGIN_THROUGHPUT = 0;
- public static final int REPORT_PLUGIN_CPU = 1;
-
public void handleCsvData(String csvData);
public Map getSummary();
}
diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/ThroughputReportPlugin.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/ThroughputReportPlugin.java
index 408ebe5bbd..40819afda6 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/ThroughputReportPlugin.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/reports/plugins/ThroughputReportPlugin.java
@@ -65,6 +65,11 @@ public class ThroughputReportPlugin implements ReportPlugin {
}
public Map getSummary() {
+ // Check if tp sampler wasn't used.
+ if (clientThroughputs.size() == 0) {
+ return new HashMap();
+ }
+
long minClientTP = Long.MAX_VALUE, // TP = throughput
maxClientTP = Long.MIN_VALUE,
minClientTotalTP = Long.MAX_VALUE,
@@ -98,19 +103,19 @@ public class ThroughputReportPlugin implements ReportPlugin {
clientTPList = (List)clientThroughputs.get(clientName);
clientCount++;
- tempLong = PerformanceStatisticsUtil.getMinThroughput(clientTPList);
+ tempLong = PerformanceStatisticsUtil.getMin(clientTPList);
if (tempLong < minClientTP) {
minClientTP = tempLong;
nameMinClientTP = clientName;
}
- tempLong = PerformanceStatisticsUtil.getMaxThroughput(clientTPList);
+ tempLong = PerformanceStatisticsUtil.getMax(clientTPList);
if (tempLong > maxClientTP) {
maxClientTP = tempLong;
nameMaxClientTP = clientName;
}
- tempLong = PerformanceStatisticsUtil.getTotalThroughput(clientTPList);
+ tempLong = PerformanceStatisticsUtil.getSum(clientTPList);
systemTotalTP += tempLong; // Accumulate total TP
if (tempLong < minClientTotalTP) {
minClientTotalTP = tempLong;
@@ -122,7 +127,7 @@ public class ThroughputReportPlugin implements ReportPlugin {
nameMaxClientTotalTP = clientName;
}
- tempDouble = PerformanceStatisticsUtil.getAveThroughput(clientTPList);
+ tempDouble = PerformanceStatisticsUtil.getAve(clientTPList);
systemAveTP += tempDouble; // Accumulate ave throughput
if (tempDouble < minClientAveTP) {
minClientAveTP = tempDouble;
@@ -134,7 +139,7 @@ public class ThroughputReportPlugin implements ReportPlugin {
nameMaxClientAveTP = clientName;
}
- tempDouble = PerformanceStatisticsUtil.getAveThroughputExcludingMinMax(clientTPList);
+ tempDouble = PerformanceStatisticsUtil.getAveEx(clientTPList);
systemAveEMMTP += tempDouble; // Accumulate ave throughput excluding min/max
if (tempDouble < minClientAveEMMTP) {
minClientAveEMMTP = tempDouble;
diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/sampler/CpuSamplerTask.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/sampler/CpuSamplerTask.java
index a1aba8ecda..3ed185baa0 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/sampler/CpuSamplerTask.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/sampler/CpuSamplerTask.java
@@ -3,6 +3,7 @@ package org.apache.activemq.tool.sampler;
import org.apache.activemq.tool.sampler.plugins.CpuSamplerPlugin;
import org.apache.activemq.tool.sampler.plugins.LinuxCpuSamplerPlugin;
import org.apache.activemq.tool.reports.plugins.ReportPlugin;
+import org.apache.activemq.tool.reports.AbstractPerfReportWriter;
import java.io.IOException;
@@ -28,7 +29,7 @@ public class CpuSamplerTask extends AbstractPerformanceSampler {
public void sampleData() {
if (plugin != null && perfReportWriter != null) {
- perfReportWriter.writeCsvData(ReportPlugin.REPORT_PLUGIN_CPU, "index=" + sampleIndex + "," + plugin.getCpuUtilizationStats());
+ perfReportWriter.writeCsvData(AbstractPerfReportWriter.REPORT_PLUGIN_CPU, "index=" + sampleIndex + "," + plugin.getCpuUtilizationStats());
}
}
diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/sampler/ThroughputSamplerTask.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/sampler/ThroughputSamplerTask.java
index 85f9619042..62a45faa75 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/sampler/ThroughputSamplerTask.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/sampler/ThroughputSamplerTask.java
@@ -1,6 +1,7 @@
package org.apache.activemq.tool.sampler;
import org.apache.activemq.tool.reports.plugins.ReportPlugin;
+import org.apache.activemq.tool.reports.AbstractPerfReportWriter;
import java.util.ArrayList;
import java.util.Iterator;
@@ -21,7 +22,7 @@ public class ThroughputSamplerTask extends AbstractPerformanceSampler {
for (Iterator i = clients.iterator(); i.hasNext();) {
MeasurableClient client = (MeasurableClient) i.next();
if (perfReportWriter != null) {
- perfReportWriter.writeCsvData(ReportPlugin.REPORT_PLUGIN_THROUGHPUT,
+ perfReportWriter.writeCsvData(AbstractPerfReportWriter.REPORT_PLUGIN_THROUGHPUT,
"index=" + sampleIndex + ",clientName=" + client.getClientName() +
",throughput=" + client.getThroughput());
}
diff --git a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/spi/ActiveMQPojoSPI.java b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/spi/ActiveMQPojoSPI.java
index 5d7ad0a123..dc40fd21ca 100644
--- a/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/spi/ActiveMQPojoSPI.java
+++ b/tooling/maven-activemq-perf-plugin/src/main/java/org/apache/activemq/tool/spi/ActiveMQPojoSPI.java
@@ -78,7 +78,7 @@ public class ActiveMQPojoSPI implements SPIConnectionFactory {
setting = settings.getProperty(KEY_ASYNC_DISPATCH);
if (setting != null && setting.length() > 0) {
- factory.setAsyncDispatch(Boolean.getBoolean(setting));
+ factory.setDispatchAsync(Boolean.getBoolean(setting));
}
setting = settings.getProperty(KEY_ASYNC_SESSION);