From 8e9e60370dba3439ac1f448d300335fce66c3be5 Mon Sep 17 00:00:00 2001 From: Bhupendra Bhusman Bhardwaj Date: Wed, 24 Jan 2007 16:14:36 +0000 Subject: added some constant values git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@499461 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/qpid/ping/TestPingItself.java | 33 +++------- .../apache/qpid/requestreply/PingPongProducer.java | 75 +++++++++++++++------- 2 files changed, 63 insertions(+), 45 deletions(-) (limited to 'java/perftests') diff --git a/java/perftests/src/main/java/org/apache/qpid/ping/TestPingItself.java b/java/perftests/src/main/java/org/apache/qpid/ping/TestPingItself.java index e7515b0f78..acb0135b86 100644 --- a/java/perftests/src/main/java/org/apache/qpid/ping/TestPingItself.java +++ b/java/perftests/src/main/java/org/apache/qpid/ping/TestPingItself.java @@ -20,13 +20,11 @@ package org.apache.qpid.ping; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.ObjectMessage; -import javax.jms.MessageListener; import org.apache.log4j.Logger; import org.apache.qpid.requestreply.PingPongProducer; import org.apache.qpid.topic.Config; -import org.apache.qpid.util.concurrent.BooleanLatch; /** * This class is used to test sending and receiving messages to (pingQueue) and from a queue (replyQueue). @@ -72,7 +70,7 @@ public class TestPingItself extends PingPongProducer messageSize, verbose, afterCommit, beforeCommit, afterSend, beforeSend, failOnce, batchSize, noOfDestinations, rate, pubsub); - if (noOfDestinations > 0) + if (noOfDestinations > DEFAULT_DESTINATION_COUNT) { createDestinations(noOfDestinations); _persistent = persistent; @@ -119,9 +117,9 @@ public class TestPingItself extends PingPongProducer boolean persistent = config.usePersistentMessages(); int messageSize = (config.getPayload() != 0) ? config.getPayload() : DEFAULT_MESSAGE_SIZE; int messageCount = config.getMessages(); - int destCount = (config.getDestinationsCount() != 0) ? config.getDestinationsCount() : 1; - int batchSize = (config.getBatchSize() != 0) ? config.getBatchSize() : BATCH_SIZE; - int rate = (config.getRate() != 0) ? config.getRate() : 0; + int destCount = (config.getDestinationsCount() != 0) ? config.getDestinationsCount() : DEFAULT_DESTINATION_COUNT; + int batchSize = (config.getBatchSize() != 0) ? config.getBatchSize() : DEFAULT_BATCH_SIZE; + int rate = (config.getRate() != 0) ? config.getRate() : DEFAULT_RATE; boolean pubsub = config.isPubSub(); String destName = config.getDestination(); @@ -129,16 +127,6 @@ public class TestPingItself extends PingPongProducer { destName = PING_DESTINATION_NAME; } - if (destCount > 1) - { - _logger.info("Destination Count:" + destCount + ", Transacted:" + transacted + ", persistent:" + - persistent + ",Message Size:" + messageSize + " bytes, pubsub:" + pubsub); - } - else - { - _logger.info("Destination:" + destName + ", Transacted:" + transacted + ", persistent:" + - persistent + ",Message Size:" + messageSize + " bytes, pubsub:" + pubsub); - } boolean afterCommit = false; boolean beforeCommit = false; @@ -193,17 +181,16 @@ public class TestPingItself extends PingPongProducer // Ensure that the ping pong producer is registered to listen for exceptions on the connection too. pingItself.getConnection().setExceptionListener(pingItself); - if ((destCount > 1) || (messageCount > 0)) + if ((destCount > DEFAULT_DESTINATION_COUNT) || (messageCount > 0)) { - ObjectMessage msg = pingItself.getTestMessage(null, messageSize, persistent); - - // Send the message and wait for a reply. - int numReplies = pingItself.pingAndWaitForReply(msg, messageCount, TIMEOUT); - - _logger.info(("Messages Sent = " + messageCount + ", MessagesReceived = " + numReplies)); + _logger.info("Destinations Count:" + destCount + ", Transacted:" + transacted + ", persistent:" + + persistent + ",Message Size:" + messageSize + " bytes, pubsub:" + pubsub); + pingItself.pingLoop(); } else { + _logger.info("Destination:" + destName + ", Transacted:" + transacted + ", persistent:" + + persistent + ",Message Size:" + messageSize + " bytes, pubsub:" + pubsub); // set the message count to 0 to run this loop // Run a few priming pings to remove warm up time from test results. pingItself.prime(PRIMING_LOOPS); diff --git a/java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java b/java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java index da63a6ae96..be46c1805b 100644 --- a/java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java +++ b/java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java @@ -40,6 +40,7 @@ import org.apache.qpid.jms.MessageProducer; import org.apache.qpid.jms.Session; import org.apache.qpid.ping.AbstractPingProducer; import org.apache.qpid.ping.Throttle; +import org.apache.qpid.topic.Config; /** * PingPongProducer is a client that sends pings to a queue and waits for pongs to be bounced back by a bounce back @@ -75,6 +76,11 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, */ protected static final int DEFAULT_MESSAGE_SIZE = 0; + /** This is set and used when the test is for multiple-destinations */ + protected static final int DEFAULT_DESTINATION_COUNT = 0; + + protected static final int DEFAULT_RATE = 0; + /** * Used to define how long to wait between pings. */ @@ -93,7 +99,7 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, /** * The batch size. */ - protected static final int BATCH_SIZE = 100; + protected static final int DEFAULT_BATCH_SIZE = 100; protected static final int PREFETCH = 100; protected static final boolean NO_LOCAL = true; @@ -187,7 +193,7 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, // total rate = throttle rate * batch size. // 1 < throttle rate < 100 // 1 < total rate < 20000 - if (rate > 0) + if (rate > DEFAULT_RATE) { // Log base 10 over 2 is used here to get a feel for what power of 100 the total rate is. // As the total rate goes up the powers of 100 the batch size goes up by powers of 100 to keep the @@ -228,7 +234,7 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, _destinationCount = noOfDestinations; setPubSub(pubsub); - if (noOfDestinations == 0) + if (noOfDestinations == DEFAULT_DESTINATION_COUNT) { if (destinationName != null) { @@ -265,7 +271,7 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, */ public void createProducer() throws JMSException { - if (getDestinationsCount() > 1) + if (getDestinationsCount() > DEFAULT_DESTINATION_COUNT) { // create producer with initial destination as null for test with multiple-destinations // In this case, a different destination will be used while sending the message @@ -354,23 +360,33 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, public static void main(String[] args) throws Exception { // Extract the command line. - if (args.length < 2) + Config config = new Config(); + config.setOptions(args); + if (args.length == 0) { - System.err.println("Usage: TestPingPublisher [verbose (true/false)] " + - "[transacted (true/false)] [persistent (true/false)] [message size in bytes] [batchsize]" + - " [rate] [pubsub(true/false)]"); - System.exit(0); + _logger.info("Running test with default values..."); + //usage(); + //System.exit(0); } - String brokerDetails = args[0]; - String virtualpath = args[1]; - boolean verbose = (args.length >= 3) ? Boolean.parseBoolean(args[2]) : true; - boolean transacted = (args.length >= 4) ? Boolean.parseBoolean(args[3]) : false; - boolean persistent = (args.length >= 5) ? Boolean.parseBoolean(args[4]) : false; - int messageSize = (args.length >= 6) ? Integer.parseInt(args[5]) : DEFAULT_MESSAGE_SIZE; - int batchSize = (args.length >= 7) ? Integer.parseInt(args[6]) : 1; - int rate = (args.length >= 8) ? Integer.parseInt(args[7]) : 0; - boolean ispubsub = (args.length >= 9) ? Boolean.parseBoolean(args[8]) : false; + String brokerDetails = config.getHost() + ":" + config.getPort(); + String virtualpath = "/test"; + String selector = config.getSelector(); + boolean verbose = true; + boolean transacted = config.isTransacted(); + boolean persistent = config.usePersistentMessages(); + int messageSize = (config.getPayload() != 0) ? config.getPayload() : DEFAULT_MESSAGE_SIZE; + //int messageCount = config.getMessages(); + int destCount = (config.getDestinationsCount() != 0) ? config.getDestinationsCount() : DEFAULT_DESTINATION_COUNT; + int batchSize = (config.getBatchSize() != 0) ? config.getBatchSize() : DEFAULT_BATCH_SIZE; + int rate = (config.getRate() != 0) ? config.getRate() : DEFAULT_RATE; + boolean pubsub = config.isPubSub(); + + String destName = config.getDestination(); + if (destName == null) + { + destName = PING_DESTINATION_NAME; + } boolean afterCommit = false; boolean beforeCommit = false; @@ -412,9 +428,9 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, // Create a ping producer to handle the request/wait/reply cycle. PingPongProducer pingProducer = new PingPongProducer(brokerDetails, "guest", "guest", virtualpath, - PING_DESTINATION_NAME, null, transacted, persistent, messageSize, verbose, + destName, selector, transacted, persistent, messageSize, verbose, afterCommit, beforeCommit, afterSend, beforeSend, failOnce, batchSize, - 0, rate, ispubsub); + destCount, rate, pubsub); pingProducer.getConnection().start(); @@ -432,6 +448,21 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, pingThread.join(); } + private static void usage() + { + System.err.println("Usage: TestPingPublisher \n" + "-host : broker host" + "-port : broker port" + + "-destinationname : queue/topic name\n" + + "-transacted : (true/false). Default is false\n" + + "-persistent : (true/false). Default is false\n" + + "-pubsub : (true/false). Default is false\n" + + "-selector : selector string\n" + + "-payload : paylaod size. Default is 0\n" + + //"-messages : no of messages to be sent (if 0, the ping loop will run indefinitely)\n" + + "-destinationscount : no of destinations for multi-destinations test\n" + + "-batchsize : batch size\n" + + "-rate : thruput rate\n"); + } + /** * Primes the test loop by sending a few messages, then introduces a short wait. This allows the bounce back client * on the other end a chance to configure its reply producer on the reply to destination. It is also worth calling @@ -605,7 +636,7 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, // Check if the test is with multiple-destinations, in which case round robin the destinations // as the messages are sent. - if (getDestinationsCount() > 1) + if (getDestinationsCount() > DEFAULT_DESTINATION_COUNT) { sendMessage(getDestination(i % getDestinationsCount()), message); } @@ -656,7 +687,7 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable, msg.setLongProperty("timestamp", System.currentTimeMillis()); // Send the message and wait for a reply. - pingAndWaitForReply(msg, BATCH_SIZE, TIMEOUT); + pingAndWaitForReply(msg, DEFAULT_BATCH_SIZE, TIMEOUT); // Introduce a short pause if desired. pause(SLEEP_TIME); -- cgit v1.2.1