From cbcff85f12987d7a21052bb3d926f3e3ae1fc3dd Mon Sep 17 00:00:00 2001 From: Robert Greig Date: Fri, 6 Apr 2007 13:18:09 +0000 Subject: Added a test script git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@526150 13f79535-47bb-0310-9956-ffa450edef68 --- java/perftests/etc/scripts/bdbtest.sh | 13 +++++++ .../org/apache/qpid/ping/PingDurableClient.java | 41 ++++++++++++++++++---- 2 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 java/perftests/etc/scripts/bdbtest.sh (limited to 'java') diff --git a/java/perftests/etc/scripts/bdbtest.sh b/java/perftests/etc/scripts/bdbtest.sh new file mode 100644 index 0000000000..d91cf0a341 --- /dev/null +++ b/java/perftests/etc/scripts/bdbtest.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Parse arguments taking all - prefixed args as JAVA_OPTS +for arg in "$@"; do + if [[ $arg == -java:* ]]; then + JAVA_OPTS="${JAVA_OPTS}-`echo $arg|cut -d ':' -f 2` " + else + ARGS="${ARGS}$arg " + fi +done + +echo "Starting Persistend Messaging Test Script" +java -Dlog4j.configuration=backup-log4j.xml ${JAVA_OPTS} -cp qpid-perftests-1.0-incubating-M2-SNAPSHOT-all-test-deps.jar org.apache.qpid.ping.PingDurableClient ${ARGS} diff --git a/java/perftests/src/main/java/org/apache/qpid/ping/PingDurableClient.java b/java/perftests/src/main/java/org/apache/qpid/ping/PingDurableClient.java index d737114c40..d56d31a1df 100644 --- a/java/perftests/src/main/java/org/apache/qpid/ping/PingDurableClient.java +++ b/java/perftests/src/main/java/org/apache/qpid/ping/PingDurableClient.java @@ -58,10 +58,11 @@ import uk.co.thebadgerset.junit.extensions.util.ParsedProperties; * additionally accepts the following parameters: * *

- *
Parameters
Parameter Default Comments - *
numMessages 100 The total number of messages to send. - *
duration 30S The length of time to ping for. (Format dDhHmMsS, for d days, h hours, - * m minutes and s seconds). + *
Parameter Default Comments + *
numMessages 100 The total number of messages to send. + *
numMessagesToAction -1 The number of messages to send before taking a custom 'action'. + *
duration 30S The length of time to ping for. (Format dDhHmMsS, for d days, h hours, + * m minutes and s seconds). *
* *

This ping client also overrides some of the defaults of its parent class, to provide a reasonable set up @@ -81,12 +82,18 @@ import uk.co.thebadgerset.junit.extensions.util.ParsedProperties; * is reached. Reaching the limit will be interpreted as the first signal to stop sending, and the ping client will * wait for the second signal before receiving its pings. * + *

This class provides a mechanism for extensions to add arbitrary actions, after a particular number of messages + * have been sent. When the number of messages equal the value set in the 'numMessagesToAction' property is method, + * the {@link #takeAction} method is called. By default this does nothing, but extensions of this class can provide + * custom behaviour with alternative implementations of this method (for example taking a backup). + * *

*
CRC Card
Responsibilities Collaborations *
Send and receive pings. *
Accept user input to signal stop sending. *
Accept user input to signal start receiving. *
Provide feedback on pings sent versus pings received. + *
Provide extension point for arbitrary action on a particular message count. *
*/ public class PingDurableClient extends PingPongProducer implements ExceptionListener @@ -97,6 +104,8 @@ public class PingDurableClient extends PingPongProducer implements ExceptionList public static final String NUM_MESSAGES_DEFAULT = "100"; public static final String DURATION_PROPNAME = "duration"; public static final String DURATION_DEFAULT = "30S"; + public static final String NUM_MESSAGES_TO_ACTION_PROPNAME = "numMessagesToAction"; + public static final String NUM_MESSAGES_TO_ACTION_DEFAULT = "-1"; /** The maximum length of time to wait whilst receiving pings before assuming that no more are coming. */ private static final long TIME_OUT = 3000; @@ -111,11 +120,15 @@ public class PingDurableClient extends PingPongProducer implements ExceptionList defaults.setProperty(TX_BATCH_SIZE_PROPNAME, "10"); defaults.setProperty(RATE_PROPNAME, "20"); defaults.setProperty(DURABLE_DESTS_PROPNAME, "true"); + defaults.setProperty(NUM_MESSAGES_TO_ACTION_PROPNAME, NUM_MESSAGES_TO_ACTION_DEFAULT); } /** Specifies the number of pings to send, if larger than 0. 0 means send until told to stop. */ private int numMessages; + /** Holds the number of messages to send before taking triggering the action. */ + private int numMessagesToAction; + /** Sepcifies how long to ping for, if larger than 0. 0 means send until told to stop. */ private long duration; @@ -136,6 +149,7 @@ public class PingDurableClient extends PingPongProducer implements ExceptionList numMessages = properties.getPropertyAsInteger(NUM_MESSAGES_PROPNAME); String durationSpec = properties.getProperty(DURATION_PROPNAME); + numMessagesToAction = properties.getPropertyAsInteger(NUM_MESSAGES_TO_ACTION_PROPNAME); if (durationSpec != null) { @@ -180,7 +194,7 @@ public class PingDurableClient extends PingPongProducer implements ExceptionList /** * Performs the main test procedure implemented by this ping client. See the class level comment for details. */ - public int send() throws Exception + protected int send() throws Exception { log.debug("public void sendWaitReceive(): called"); @@ -245,6 +259,14 @@ public class PingDurableClient extends PingPongProducer implements ExceptionList _publish = false; } + // Perform the arbitrary action if the number of messages sent has reached the right number. + if (messagesSent == numMessagesToAction) + { + System.out.println("At action point, Messages sent = " + messagesSent + ", Messages Committed = " + + messagesCommitted + ", Messages not Committed = " + messagesNotCommitted); + takeAction(); + } + // Determine if the end condition has been met, based on the number of messages, time passed, errors on // the connection or user input. long now = System.nanoTime(); @@ -296,7 +318,7 @@ public class PingDurableClient extends PingPongProducer implements ExceptionList return messagesSent; } - private void receive(int messagesSent) throws Exception + protected void receive(int messagesSent) throws Exception { // Re-establish the connection and the message consumer. _queueJVMSequenceID = new AtomicInteger(); @@ -418,4 +440,11 @@ public class PingDurableClient extends PingPongProducer implements ExceptionList } }); } + + /** + * Performs an aribtrary action once the 'numMesagesToAction' count is reached on sending messages. This default + * implementation does nothing. + */ + public void takeAction() + { } } -- cgit v1.2.1