Author: rgreig
Date: Fri Apr 6 06:18:09 2007
New Revision: 526150
URL: http://svn.apache.org/viewvc?view=rev&rev=526150
Log:
Added a test script
Added:
incubator/qpid/branches/M2/java/perftests/etc/scripts/bdbtest.sh
Modified:
incubator/qpid/branches/M2/java/perftests/src/main/java/org/apache/qpid/ping/PingDurableClient.java
Added: incubator/qpid/branches/M2/java/perftests/etc/scripts/bdbtest.sh
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/perftests/etc/scripts/bdbtest.sh?view=auto&rev=526150
==============================================================================
--- incubator/qpid/branches/M2/java/perftests/etc/scripts/bdbtest.sh (added)
+++ incubator/qpid/branches/M2/java/perftests/etc/scripts/bdbtest.sh Fri Apr 6
06:18:09 2007
@@ -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}
Modified:
incubator/qpid/branches/M2/java/perftests/src/main/java/org/apache/qpid/ping/PingDurableClient.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/perftests/src/main/java/org/apache/qpid/ping/PingDurableClient.java?view=diff&rev=526150&r1=526149&r2=526150
==============================================================================
---
incubator/qpid/branches/M2/java/perftests/src/main/java/org/apache/qpid/ping/PingDurableClient.java
(original)
+++
incubator/qpid/branches/M2/java/perftests/src/main/java/org/apache/qpid/ping/PingDurableClient.java
Fri Apr 6 06:18:09 2007
@@ -58,10 +58,11 @@
* additionally accepts the following parameters:
*
* <p/><table><caption>Parameters</caption>
- * <tr><th> Parameter <th> Default <th> Comments
- * <tr><td> numMessages <th> 100 <th> The total number of messages
to send.
- * <tr><td> duration <th> 30S <th> The length of time to ping
for. (Format dDhHmMsS, for d days, h hours,
- * m minutes and s seconds).
+ * <tr><th> Parameter <th> Default <th> Comments
+ * <tr><td> numMessages <td> 100 <td> The total number of
messages to send.
+ * <tr><td> numMessagesToAction <td> -1 <td> The number of messages to
send before taking a custom 'action'.
+ * <tr><td> duration <td> 30S <td> The length of time to ping
for. (Format dDhHmMsS, for d days, h hours,
+ * m minutes and s seconds).
* </table>
*
* <p/>This ping client also overrides some of the defaults of its parent
class, to provide a reasonable set up
@@ -81,12 +82,18 @@
* 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.
*
+ * <p/>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 [EMAIL PROTECTED] #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).
+ *
* <p><table id="crc"><caption>CRC Card</caption>
* <tr><th> Responsibilities <th> Collaborations
* <tr><td> Send and receive pings.
* <tr><td> Accept user input to signal stop sending.
* <tr><td> Accept user input to signal start receiving.
* <tr><td> Provide feedback on pings sent versus pings received.
+ * <tr><td> Provide extension point for arbitrary action on a particular
message count.
* </table>
*/
public class PingDurableClient extends PingPongProducer implements
ExceptionListener
@@ -97,6 +104,8 @@
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 @@
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 @@
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 @@
/**
* 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 @@
_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 @@
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 @@
}
});
}
+
+ /**
+ * Performs an aribtrary action once the 'numMesagesToAction' count is
reached on sending messages. This default
+ * implementation does nothing.
+ */
+ public void takeAction()
+ { }
}