You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ra...@apache.org on 2009/05/23 15:35:38 UTC

svn commit: r777922 - in /qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf: PerfProducer.java TestParams.java

Author: rajith
Date: Sat May 23 13:35:38 2009
New Revision: 777922

URL: http://svn.apache.org/viewvc?rev=777922&view=rev
Log:
The default value for message cache is set to false.
Added the functionality to support variable message sizes using -Drandom_msg_size=true.
This will create an array of payloads from 1 byte to x bytes where x is configured by -Dmsg_size=x (default is 1024).
The Random number generator works of the same seed so different test runs can be compared properly.

Modified:
    qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/PerfProducer.java
    qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/TestParams.java

Modified: qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/PerfProducer.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/PerfProducer.java?rev=777922&r1=777921&r2=777922&view=diff
==============================================================================
--- qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/PerfProducer.java (original)
+++ qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/PerfProducer.java Sat May 23 13:35:38 2009
@@ -20,6 +20,10 @@
  */
 package org.apache.qpid.testkit.perf;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
 import javax.jms.BytesMessage;
 import javax.jms.DeliveryMode;
 import javax.jms.Message;
@@ -54,7 +58,13 @@
     MessageProducer producer;
     Message msg;
     byte[] payload;
-
+    List<byte[]> payloads;
+    boolean cacheMsg = false;
+    boolean randomMsgSize = false;
+    boolean durable = false;
+    Random random;
+    int msgSizeRange = 1024;
+    
     public PerfProducer()
     {
         super();
@@ -65,16 +75,32 @@
         super.setUp();
         feedbackDest = session.createTemporaryQueue();
 
+        durable = params.isDurable();
+        
         // if message caching is enabled we pre create the message
         // else we pre create the payload
         if (params.isCacheMessage())
         {
+            cacheMsg = true;
+            
             msg = MessageFactory.createBytesMessage(session, params.getMsgSize());
-            msg.setJMSDeliveryMode(params.isDurable()?
+            msg.setJMSDeliveryMode(durable?
                                    DeliveryMode.PERSISTENT :
                                    DeliveryMode.NON_PERSISTENT
                                   );
         }
+        else if (params.isRandomMsgSize())
+        {
+            random = new Random(20080921);
+            randomMsgSize = true;
+            msgSizeRange = params.getMsgSize();
+            payloads = new ArrayList<byte[]>(msgSizeRange);
+            
+            for (int i=1; i < msgSizeRange; i++)
+            {
+                payloads.add(MessageFactory.createMessagePayload(i).getBytes());
+            }
+        }        
         else
         {
             payload = MessageFactory.createMessagePayload(params.getMsgSize()).getBytes();
@@ -87,14 +113,26 @@
 
     protected Message getNextMessage() throws Exception
     {
-        if (params.isCacheMessage())
+        if (cacheMsg)
         {
             return msg;
         }
         else
-        {
+        {            
             msg = session.createBytesMessage();
-            ((BytesMessage)msg).writeBytes(payload);
+            
+            if (!randomMsgSize)
+            {
+                ((BytesMessage)msg).writeBytes(payload);
+            }
+            else
+            {
+                ((BytesMessage)msg).writeBytes(payloads.get(random.nextInt(msgSizeRange)));
+            }
+            msg.setJMSDeliveryMode(durable?
+                    DeliveryMode.PERSISTENT :
+                    DeliveryMode.NON_PERSISTENT
+                   );
             return msg;
         }
     }

Modified: qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/TestParams.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/TestParams.java?rev=777922&r1=777921&r2=777922&view=diff
==============================================================================
--- qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/TestParams.java (original)
+++ qpid/trunk/qpid/java/testkit/src/main/java/org/apache/qpid/testkit/perf/TestParams.java Sat May 23 13:35:38 2009
@@ -38,7 +38,7 @@
 
     private int msg_type = 1;   // not used yet
 
-    private boolean cacheMessage = true;
+    private boolean cacheMessage = false;
 
     private boolean disableMessageID = false;
 
@@ -55,6 +55,8 @@
     private int msg_count = 10;
 
     private int warmup_count = 1;
+    
+    private boolean random_msg_size = false;
 
     public TestParams()
     {
@@ -75,6 +77,7 @@
         ack_mode = Integer.getInteger("ack_mode",Session.AUTO_ACKNOWLEDGE);
         msg_count = Integer.getInteger("msg_count",msg_count);
         warmup_count = Integer.getInteger("warmup_count",warmup_count);
+        random_msg_size = Boolean.getBoolean("random_msg_size");
     }
 
     public int getAckMode()
@@ -156,5 +159,10 @@
     {
         return disableTimestamp;
     }
+    
+    public boolean isRandomMsgSize()
+    {
+        return random_msg_size;
+    }
 
 }



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org