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);