[jboss-cvs] JBoss Messaging SVN: r4316 - in trunk/examples/jms: src/org/jboss/jms/example and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed May 28 05:17:53 EDT 2008


Author: jmesnil
Date: 2008-05-28 05:17:52 -0400 (Wed, 28 May 2008)
New Revision: 4316

Modified:
   trunk/examples/jms/build.xml
   trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java
   trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java
Log:
JBMESSAGING-1343 - Some more tweaks to PerfExample:
- added drain.queue property to drain (or not) the queue before taking statistics when receiving messages (true by default)


Modified: trunk/examples/jms/build.xml
===================================================================
--- trunk/examples/jms/build.xml	2008-05-28 08:45:44 UTC (rev 4315)
+++ trunk/examples/jms/build.xml	2008-05-28 09:17:52 UTC (rev 4316)
@@ -48,6 +48,7 @@
    <property name="sample.period" value="1"/>
    <property name="sess.trans" value="false"/>
    <property name="sess.trans.size" value="100"/>
+   <property name="drain.queue" value="true"/>
 
    <path id="compile.classpath">
       <fileset dir="${lib.dir}">
@@ -106,19 +107,28 @@
       </java>
    </target>
 
+    <target name="echo-params">
+   	 <echo>
+***********************************************************************************
+* available parameters (-Dmessage.count=1000)
+*
+* parameter             description                      default     current
+* ---------             -----------                      -------     -------
+* message.count         number of messages               200000      ${message.count}
+* message.warmup.count  number of messages to warm up    10000       ${message.warmup.count}
+* delivery.mode         PERSISTENT/NON_PERSISTENT        PERSISTENT  ${delivery.mode}
+* sample.period         timing period in seconds         1           ${sample.period}
+* sess.trans            Is session transacted            true        ${sess.trans}
+* sess.trans.size       batch size to commit             100         ${sess.trans.size}
+* drain.queue           drain the queue (listener only)  true        ${drain.queue}
+***********************************************************************************
+   	  </echo>            
+    </target>
+
    <target name="perfListener" depends="compile" description="-> run performance test when listening to a queue">
-	<echo>***********************************************************************************</echo>
-	<echo>* available parameters (-Dmessage.count=1000)                                </echo>
-	<echo>*                                                                            </echo>
-	<echo>*     param            description                default          current</echo>
-	<echo>*  message.count    number of messages            200000           ${message.count}</echo>
-	<echo>*  delivery.mode  PERSISTENT/NON_PERSISTENT    NON_PERSISTENT      ${delivery.mode}</echo>
-	<echo>*  sample.period  timing period in seconds       1 second          ${sample.period}</echo>
-	<echo>*   sess.trans      Is session transacted          false           ${sess.trans}</echo>
-	<echo>* sess.trans.size  batch size to commit            5000            ${sess.trans.size}</echo>
-	<echo>***********************************************************************************</echo>
-
-      <java classname="org.jboss.jms.example.PerfExample" fork="true">
+      <antcall target="echo-params" />
+   
+   	  <java classname="org.jboss.jms.example.PerfExample" fork="true">
          <classpath refid="runtime.classpath"/>
       	<jvmarg value="-Xmx1024M"/>
       	<jvmarg value="-XX:+UseParallelGC"/>
@@ -131,22 +141,15 @@
       	<arg value="${sample.period}"/>
       	<arg value="${sess.trans}"/>
         <arg value="${sess.trans.size}"/>
+        <arg value="${drain.queue}"/>
       </java>
    </target>
 
 
    <target name="perfSender" depends="compile" description="-> run performance test when sending to a queue">
-      <echo>***********************************************************************************</echo>
-      <echo>* available parameters (-Dmessage.count=1000)                                </echo>
-      <echo>*                                                                            </echo>
-      <echo>*     param            description                default          current</echo>
-   	  <echo>*  message.count    number of messages            200000           ${message.count}</echo>
-      <echo>*  delivery.mode  PERSISTENT/NON_PERSISTENT    NON_PERSISTENT      ${delivery.mode}</echo>
-      <echo>*  sample.period  timing period in seconds       1 second          ${sample.period}</echo>
-      <echo>*   sess.trans      Is session transacted          false           ${sess.trans}</echo>
-      <echo>* sess.trans.size  batch size to commit            5000            ${sess.trans.size}</echo>
-      <echo>***********************************************************************************</echo>
-      <java classname="org.jboss.jms.example.PerfExample" fork="true">
+     <antcall target="echo-params" />
+
+     <java classname="org.jboss.jms.example.PerfExample" fork="true">
          <classpath refid="runtime.classpath"/>
          <jvmarg value="-Xmx512M"/>
          <jvmarg value="-XX:+UseParallelGC"/>
@@ -159,6 +162,7 @@
          <arg value="${sample.period}"/>
          <arg value="${sess.trans}"/>
          <arg value="${sess.trans.size}"/>
+         <arg value="false"/>
       </java>
    </target>
 

Modified: trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java
===================================================================
--- trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java	2008-05-28 08:45:44 UTC (rev 4315)
+++ trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java	2008-05-28 09:17:52 UTC (rev 4316)
@@ -59,7 +59,8 @@
       boolean transacted = Boolean.parseBoolean(args[5]);
       log.info("Transacted:" + transacted);
       int transactionBatchSize = Integer.parseInt(args[6]);
-
+      boolean drainQueue = Boolean.parseBoolean(args[7]);
+      
       PerfParams perfParams = new PerfParams();
       perfParams.setNoOfMessagesToSend(noOfMessages);
       perfParams.setNoOfWarmupMessages(noOfWarmupMessages);
@@ -67,6 +68,7 @@
       perfParams.setSamplePeriod(samplePeriod);
       perfParams.setSessionTransacted(transacted);
       perfParams.setTransactionBatchSize(transactionBatchSize);
+      perfParams.setDrainQueue(drainQueue);
       
       if (args[0].equalsIgnoreCase("-l"))
       {
@@ -95,7 +97,6 @@
       {
          log.info("params = " + perfParams);
          init(perfParams.isSessionTransacted());
-         // use 10% of the messages to warm up the system       
          log.info("warming up by sending " + perfParams.getNoOfWarmupMessages() + " messages");
          sendMessages(perfParams.getNoOfWarmupMessages(), perfParams.getTransactionBatchSize(), perfParams.getDeliveryMode(), perfParams.isSessionTransacted());         
          log.info("warmed up");         
@@ -165,19 +166,17 @@
       {
          init(perfParams.isSessionTransacted());
          MessageConsumer messageConsumer = session.createConsumer(queue);
-         CountDownLatch countDownLatch = new CountDownLatch(1);
          connection.start();
-         log.info("emptying queue");
-         while (true)
+
+         if (perfParams.isDrainQueue()) 
          {
-            Message m = messageConsumer.receive(500);
-            if (m == null)
-            {
-               break;
-            }
+            drainQueue(messageConsumer);
          }
+         
+         log.info("READY!!!");
+         
+         CountDownLatch countDownLatch = new CountDownLatch(1);
          messageConsumer.setMessageListener(new PerfListener(countDownLatch, perfParams));
-         log.info("READY!!!");
          countDownLatch.await();
 
       }
@@ -199,8 +198,20 @@
       }
    }
 
+   private void drainQueue(MessageConsumer consumer) throws JMSException
+   {
+      log.info("draining queue");
+      while (true)
+      {
+         Message m = consumer.receive(500);
+         if (m == null)
+         {
+            log.info("queue is drained");
+            break;
+         }
+      }
+   }
 
-
    /**
     * a message listener
     */
@@ -209,7 +220,7 @@
       private CountDownLatch countDownLatch;
       
       private PerfParams perfParams;
-      
+
       private boolean started = false;
 
       public PerfListener(CountDownLatch countDownLatch, PerfParams perfParams)
@@ -228,8 +239,7 @@
 
          try
          {
-            BytesMessage bm = (BytesMessage) message;
-            messageCount.incrementAndGet();      
+            messageCount.incrementAndGet();
             boolean committed = checkCommit();
             if (messageCount.longValue() == perfParams.getNoOfMessagesToSend())
             {
@@ -246,7 +256,7 @@
          {
             e.printStackTrace();
          }
-       }
+      }
       
       private boolean checkCommit() throws Exception
       {

Modified: trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java
===================================================================
--- trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java	2008-05-28 08:45:44 UTC (rev 4315)
+++ trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java	2008-05-28 09:17:52 UTC (rev 4316)
@@ -35,6 +35,7 @@
    int deliveryMode  = DeliveryMode.NON_PERSISTENT;
    boolean isSessionTransacted = false;
    int transactionBatchSize = 5000;
+   private boolean drainQueue = true;
    
    public int getNoOfMessagesToSend()
    {
@@ -97,10 +98,21 @@
       this.transactionBatchSize = transactionBatchSize;
    }
 
+   public boolean isDrainQueue()
+   {
+      return drainQueue ;
+   }
+
+   public void setDrainQueue(boolean drainQueue)
+   {
+      this.drainQueue = drainQueue;
+   }
+
    public String toString()
    {
-      return "message to send = " + noOfMessagesToSend + " samplePeriod = " + samplePeriod + "s" + " DeliveryMode = " +
-              (deliveryMode == DeliveryMode.PERSISTENT?"PERSISTENT":"NON_PERSISTENT") + " session transacted = " + isSessionTransacted +
-              (isSessionTransacted?" transaction batch size = " + transactionBatchSize:"");
+      return "message to send = " + noOfMessagesToSend + ", samplePeriod = " + samplePeriod + "s" + ", DeliveryMode = " +
+              (deliveryMode == DeliveryMode.PERSISTENT?"PERSISTENT":"NON_PERSISTENT") + ", session transacted = " + isSessionTransacted +
+              (isSessionTransacted?", transaction batch size = " + transactionBatchSize:"" + ", drain queue = " + drainQueue);
    }
+
 }




More information about the jboss-cvs-commits mailing list