Author: rajith
Date: Thu Nov 29 09:47:41 2007
New Revision: 599528
URL: http://svn.apache.org/viewvc?rev=599528&view=rev
Log:
Cleaned up the calculations and added an option to disable interval stat
collection
Modified:
incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageConsumerTest.java
incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageProducerTest.java
Modified:
incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageConsumerTest.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageConsumerTest.java?rev=599528&r1=599527&r2=599528&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageConsumerTest.java
(original)
+++
incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageConsumerTest.java
Thu Nov 29 09:47:41 2007
@@ -1,6 +1,7 @@
package org.apache.qpid.client.perf;
import java.io.FileWriter;
+import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Map;
@@ -25,9 +26,7 @@
String _logFileName;
private long _gracePeriod = 5 * 60 * 1000;
long _startTime;
- long totalMsgCount;
long _totalMsgCount;
- double _timeElapsed = 0;
public void start() throws Exception
{
@@ -35,12 +34,12 @@
boolean useSameDest = true;
_logFileName = _logFilePath + "/MessageConsumerTest_" +
System.currentTimeMillis();
- // use each destination with a different producer
- if (_producerCount == destArray.length)
+ // use each destination with a different consumerucer
+ if (_consumerCount == destArray.length)
{
useSameDest = false;
}
- for (; _count < _producerCount; _count++)
+ for (; _count < _consumerCount; _count++)
{
createAndStartConsumer(useSameDest ? destArray[0] :
destArray[_count]);
}
@@ -51,39 +50,51 @@
AMQConnection con = ConnectionUtility.getInstance().getConnection();
con.start();
Destination dest = Boolean.getBoolean("useQueue")? new
AMQQueue(con,routingKey) : new AMQTopic(con,routingKey);
- JMSConsumer prod;
+ JMSConsumer consumer;
if (_synchronous)
{
- prod = new JMSSyncConsumer(String.valueOf(_count), con, dest,
_transacted, Session.AUTO_ACKNOWLEDGE);
- Thread t = new Thread((JMSSyncConsumer) prod);
+ consumer = new JMSSyncConsumer(String.valueOf(_count), con, dest,
_transacted, Session.AUTO_ACKNOWLEDGE);
+ Thread t = new Thread((JMSSyncConsumer) consumer);
t.setName("JMSSyncConsumer-" + _count);
t.start();
}
else
{
- prod = new JMSAsyncConsumer(String.valueOf(_count), con, dest,
_transacted, Session.AUTO_ACKNOWLEDGE);
+ consumer = new JMSAsyncConsumer(String.valueOf(_count), con, dest,
_transacted, Session.AUTO_ACKNOWLEDGE);
}
- _consumers.put(_count, prod);
+ _consumers.put(_count, consumer);
}
private void startTimerThread()
{
- Thread t = new Thread(this);
- t.setName("MessageConsumerTest-TimerThread");
- t.start();
+ _startTime = System.currentTimeMillis();
+ if(Boolean.getBoolean("collect_stats"))
+ {
+ Thread t = new Thread(this);
+ t.setName("MessageConsumerTest-TimerThread");
+ t.start();
+ }
+ try
+ {
+ printSummary();
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
}
public void run()
{
boolean run = true;
- _startTime = System.currentTimeMillis();
- runReaper(false);
+ printHeading();
+ runReaper();
try
{
while (run)
{
Thread.sleep(_logDuration);
- runReaper(false);
+ runReaper();
if (System.currentTimeMillis() + _gracePeriod - _startTime >
_expiry)
{
@@ -93,7 +104,7 @@
JMSConsumer consumer = _consumers.get(id);
consumer.stopConsuming();
}
- runReaper(true);
+ runReaper();
run = false;
}
}
@@ -104,65 +115,84 @@
}
}
- public void runReaper(boolean printSummary)
+ public void runReaper()
{
try
{
- FileWriter _logFile = new FileWriter(_logFileName + ".csv", true);
- long newTotalMsgCount = 0;
long totalMsgCountThisInterval = 0;
for (Integer id : _consumers.keySet())
{
- JMSConsumer prod = _consumers.get(id);
- StringBuffer buf = new
StringBuffer("JMSSyncConsumer(").append(prod.getId()).append("),");
- Date d = new Date(System.currentTimeMillis());
- buf.append(df.format(d)).append(",");
- buf.append(d.getTime()).append(",");
- buf.append(prod.getCurrentMessageCount()).append("\n");
- _logFile.write(buf.toString());
- newTotalMsgCount = newTotalMsgCount +
prod.getCurrentMessageCount();
- totalMsgCountThisInterval = newTotalMsgCount - _totalMsgCount;
- _totalMsgCount = newTotalMsgCount;
+ JMSConsumer consumer = _consumers.get(id);
+ totalMsgCountThisInterval = totalMsgCountThisInterval +
consumer.getCurrentMessageCount();
+
}
- _logFile.close();
+ _totalMsgCount = _totalMsgCount + totalMsgCountThisInterval;
- FileWriter _memoryLog = new FileWriter(_logFileName +
"_memory.csv",true);
- StringBuffer buf = new StringBuffer("JMSProducer,");
+ FileWriter _memoryLog = new FileWriter(_logFileName + ".csv",true);
+ StringBuffer buf = new StringBuffer();
Date d = new Date(System.currentTimeMillis());
double totaltime = d.getTime() - _startTime;
- _timeElapsed = totaltime - _timeElapsed;
buf.append(df.format(d)).append(",");
buf.append(d.getTime()).append(",");
buf.append(_totalMsgCount).append(",");
+ buf.append(_totalMsgCount*1000 /totaltime).append(",");
+ buf.append(totalMsgCountThisInterval).append(",");
+
buf.append(totalMsgCountThisInterval*1000/_logDuration).append(",");
buf.append(Runtime.getRuntime().totalMemory()
-Runtime.getRuntime().freeMemory()).append("\n");
buf.append("\n");
- buf.append("Throughput: total " + (_totalMsgCount /totaltime)*1000
+ " msg/s; this interval: " + (totalMsgCountThisInterval/_timeElapsed)*1000
+ " msg/s");
_memoryLog.write(buf.toString());
_memoryLog.close();
System.out.println(buf);
- if (printSummary)
- {
- double dCount = _totalMsgCount;
- double ratio = (dCount/totaltime)*1000;
- FileWriter _summaryLog = new FileWriter(_logFileName +
"_Summary",true);
- buf = new StringBuffer("MessageProducerTest \n Test started at
: ");
- buf.append(df.format(new Date(_startTime))).append("\n Test
finished at : ");
- d = new Date(System.currentTimeMillis());
- buf.append(df.format(d)).append("\n Total Time taken (ms):");
- buf.append(totaltime).append("\n Total messages sent:");
- buf.append(_totalMsgCount).append("\n Producer rate:");
- buf.append(ratio).append("\n");
- _summaryLog.write(buf.toString());
- System.out.println("---------- Test Ended -------------");
- _summaryLog.close();
- }
- _timeElapsed = totaltime;
}
catch (Exception e)
{
_logger.error("Error printing info to the log file", e);
}
+ }
+
+ private void printHeading()
+ {
+ try
+ {
+ FileWriter _memoryLog = new FileWriter(_logFileName + ".csv",true);
+ String s = "Date/Time,Time (ms),total msg count,total rate
(msg/sec),interval count,interval rate (msg/sec),memory";
+ _memoryLog.write(s);
+ _memoryLog.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void printSummary() throws Exception
+ {
+ if (Boolean.getBoolean("collect_stats"))
+ {
+ for (Integer id : _consumers.keySet())
+ {
+ JMSConsumer consumer = _consumers.get(id);
+ _totalMsgCount = _totalMsgCount +
consumer.getCurrentMessageCount();
+
+ }
+ }
+
+ long current = System.currentTimeMillis();
+ double time = current - _startTime;
+ double ratio = _totalMsgCount*1000/time;
+ FileWriter _summaryLog = new FileWriter(_logFileName +
"_Summary",true);
+
+ StringBuffer buf = new StringBuffer("MessageConsumerTest \n Test
started at : ");
+ buf.append(df.format(new Date(_startTime))).append("\n Test finished
at : ");
+ Date d = new Date(current);
+ buf.append(df.format(d)).append("\n Total Time taken (ms):");
+ buf.append(time).append("\n Total messages sent:");
+ buf.append(_totalMsgCount).append("\n consumer rate:");
+ buf.append(ratio).append("\n");
+ _summaryLog.write(buf.toString());
+ System.out.println("---------- Test Ended -------------");
+ _summaryLog.close();
}
public static void main(String[] args)
Modified:
incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageProducerTest.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageProducerTest.java?rev=599528&r1=599527&r2=599528&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageProducerTest.java
(original)
+++
incubator/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/client/perf/MessageProducerTest.java
Thu Nov 29 09:47:41 2007
@@ -1,6 +1,7 @@
package org.apache.qpid.client.perf;
import java.io.FileWriter;
+import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Map;
@@ -25,7 +26,6 @@
String _logFileName;
long _startTime;
long _totalMsgCount;
- double _timeElapsed = 0;
public void start() throws Exception
{
@@ -58,100 +58,132 @@
private void startTimerThread()
{
- Thread t = new Thread(this);
- t.setName("MessageProducerTest-TimerThread");
- t.start();
+ _startTime = System.currentTimeMillis();
+ if(Boolean.getBoolean("collect_stats"))
+ {
+ Thread t = new Thread(this);
+ t.setName("MessageProducerTest-TimerThread");
+ t.start();
+ }
+ try
+ {
+ printSummary();
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
}
public void run()
{
boolean run = true;
- _startTime = System.currentTimeMillis();
- runReaper(false);
+ printHeading();
+ runReaper();
try
{
- while(run)
+ while (run)
{
Thread.sleep(_logDuration);
- runReaper(false);
+ runReaper();
- if(System.currentTimeMillis() - _startTime > _expiry )
+ if (System.currentTimeMillis() - _startTime > _expiry)
{
// time to stop the test.
for (Integer id : _producers.keySet())
{
- JMSProducer prod = _producers.get(id);
- prod.stopProducing();
+ JMSProducer producer = _producers.get(id);
+ producer.stopProducing();
}
- runReaper(true);
+ runReaper();
run = false;
}
}
}
catch (InterruptedException e)
{
- _logger.error("The timer thread exited",e);
+ _logger.error("The timer thread exited", e);
}
}
- public void runReaper(boolean printSummary)
+ public void runReaper()
{
try
{
- FileWriter _logFile = new FileWriter(_logFileName + ".csv",true);
- long newTotalMsgCount = 0;
long totalMsgCountThisInterval = 0;
+
for (Integer id : _producers.keySet())
{
- JMSProducer prod = _producers.get(id);
- StringBuffer buf = new
StringBuffer("JMSProducer(").append(prod.getId()).append("),");
- Date d = new Date(System.currentTimeMillis());
- buf.append(df.format(d)).append(",");
- buf.append(d.getTime()).append(",");
- buf.append(prod.getCurrentMessageCount()).append("\n");
- _logFile.write(buf.toString());
- newTotalMsgCount = newTotalMsgCount +
prod.getCurrentMessageCount();
- totalMsgCountThisInterval = newTotalMsgCount - _totalMsgCount;
- _totalMsgCount = newTotalMsgCount;
+ JMSProducer producer = _producers.get(id);
+ totalMsgCountThisInterval = totalMsgCountThisInterval +
producer.getCurrentMessageCount();
+
}
- _logFile.close();
+ _totalMsgCount = _totalMsgCount + totalMsgCountThisInterval;
- FileWriter _memoryLog = new FileWriter(_logFileName +
"_memory.csv",true);
- StringBuffer buf = new StringBuffer("JMSProducer,");
+ FileWriter _memoryLog = new FileWriter(_logFileName + ".csv",true);
+ StringBuffer buf = new StringBuffer();
Date d = new Date(System.currentTimeMillis());
double totaltime = d.getTime() - _startTime;
- _timeElapsed = totaltime - _timeElapsed;
buf.append(df.format(d)).append(",");
buf.append(d.getTime()).append(",");
buf.append(_totalMsgCount).append(",");
+ buf.append(_totalMsgCount*1000 /totaltime).append(",");
+ buf.append(totalMsgCountThisInterval).append(",");
+
buf.append(totalMsgCountThisInterval*1000/_logDuration).append(",");
buf.append(Runtime.getRuntime().totalMemory()
-Runtime.getRuntime().freeMemory()).append("\n");
buf.append("\n");
- buf.append("Throughput: total " + (_totalMsgCount /totaltime)*1000
+ " msg/s; this interval: " + (totalMsgCountThisInterval/_timeElapsed)*1000
+ " msg/s");
_memoryLog.write(buf.toString());
_memoryLog.close();
System.out.println(buf);
- if (printSummary)
- {
- double dCount = _totalMsgCount;
- double ratio = (dCount/totaltime)*1000;
- FileWriter _summaryLog = new FileWriter(_logFileName +
"_Summary",true);
- buf = new StringBuffer("MessageProducerTest \n Test started at
: ");
- buf.append(df.format(new Date(_startTime))).append("\n Test
finished at : ");
- d = new Date(System.currentTimeMillis());
- buf.append(df.format(d)).append("\n Total Time taken (ms):");
- buf.append(totaltime).append("\n Total messages sent:");
- buf.append(_totalMsgCount).append("\n Producer rate:");
- buf.append(ratio).append("\n");
- _summaryLog.write(buf.toString());
- System.out.println("---------- Test Ended -------------");
- _summaryLog.close();
- }
- _timeElapsed = totaltime;
}
- catch(Exception e)
+ catch (Exception e)
{
- _logger.error("Error printing info to the log file",e);
+ _logger.error("Error printing info to the log file", e);
}
+ }
+
+ private void printHeading()
+ {
+ try
+ {
+ FileWriter _memoryLog = new FileWriter(_logFileName + ".csv",true);
+ String s = "Date/Time,Time (ms),total msg count,total rate
(msg/sec),interval count,interval rate (msg/sec),memory";
+ _memoryLog.write(s);
+ _memoryLog.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void printSummary() throws Exception
+ {
+ if (Boolean.getBoolean("collect_stats"))
+ {
+ for (Integer id : _producers.keySet())
+ {
+ JMSProducer producer = _producers.get(id);
+ _totalMsgCount = _totalMsgCount +
producer.getCurrentMessageCount();
+
+ }
+ }
+
+ long current = System.currentTimeMillis();
+ double time = current - _startTime;
+ double ratio = _totalMsgCount*1000/time;
+ FileWriter _summaryLog = new FileWriter(_logFileName +
"_Summary",true);
+
+ StringBuffer buf = new StringBuffer("MessageProducerTest \n Test
started at : ");
+ buf.append(df.format(new Date(_startTime))).append("\n Test finished
at : ");
+ Date d = new Date(current);
+ buf.append(df.format(d)).append("\n Total Time taken (ms):");
+ buf.append(time).append("\n Total messages sent:");
+ buf.append(_totalMsgCount).append("\n producer rate:");
+ buf.append(ratio).append("\n");
+ _summaryLog.write(buf.toString());
+ System.out.println("---------- Test Ended -------------");
+ _summaryLog.close();
}
public static void main(String[] args)