summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2012-04-10 11:16:32 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2012-04-10 11:16:32 +0000
commitb63633658b48684de34d9bf421474caf30501850 (patch)
treef1b60f10f05e2431cf54cd0e9032998d2152a8e1
parentcf00c9069b84d6de78b7507ac2fa4b0f6770fb6f (diff)
downloadqpid-python-b63633658b48684de34d9bf421474caf30501850.tar.gz
QPID-3941 Test configuration is now accessed via the TestConfiguration
interface. This would allow the various test tools to easily add/change the configuration mechanism. The existing jvm arg based system is now implemented via the JVMArgConfiguration class. Some tools will prefer program arguments and you could implement a ProgramArgConfiguration class. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1311674 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/tools/src/main/java/org/apache/qpid/tools/JVMArgConfiguration.java247
-rw-r--r--qpid/java/tools/src/main/java/org/apache/qpid/tools/TestConfiguration.java126
2 files changed, 348 insertions, 25 deletions
diff --git a/qpid/java/tools/src/main/java/org/apache/qpid/tools/JVMArgConfiguration.java b/qpid/java/tools/src/main/java/org/apache/qpid/tools/JVMArgConfiguration.java
index d73be0181b..c6abdf6c84 100644
--- a/qpid/java/tools/src/main/java/org/apache/qpid/tools/JVMArgConfiguration.java
+++ b/qpid/java/tools/src/main/java/org/apache/qpid/tools/JVMArgConfiguration.java
@@ -20,9 +20,14 @@
*/
package org.apache.qpid.tools;
+import java.text.DecimalFormat;
+
+import javax.jms.Connection;
import javax.jms.Session;
-public class TestParams
+import org.apache.qpid.client.AMQConnection;
+
+public class JVMArgConfiguration implements TestConfiguration
{
/*
* By default the connection URL is used.
@@ -53,9 +58,7 @@ public class TestParams
private boolean durable = false;
- private boolean transacted = false;
-
- private int transaction_size = 1000;
+ private int transaction_size = 0;
private int ack_mode = Session.AUTO_ACKNOWLEDGE;
@@ -69,13 +72,33 @@ public class TestParams
private boolean printStdDev = false;
- private long rate = -1;
+ private int sendRate = 0;
private boolean externalController = false;
private boolean useUniqueDest = false; // useful when using multiple connections.
- public TestParams()
+ private int ackFrequency = 100;
+
+ private DecimalFormat df = new DecimalFormat("###.##");
+
+ private int reportEvery = 0;
+
+ private boolean isReportTotal = false;
+
+ private boolean isReportHeader = true;
+
+ private boolean isReportLatency = false;
+
+ private int sendEOS = 0;
+
+ private int connectionCount = 1;
+
+ private int rollbackFrequency = 0;
+
+ private boolean printHeaders;
+
+ public JVMArgConfiguration()
{
url = System.getProperty("url",url);
@@ -83,120 +106,208 @@ public class TestParams
port = Integer.getInteger("port", -1);
address = System.getProperty("address",address);
- msg_size = Integer.getInteger("msg_size", 1024);
- cacheMessage = Boolean.getBoolean("cache_msg");
- disableMessageID = Boolean.getBoolean("disableMessageID");
- disableTimestamp = Boolean.getBoolean("disableTimestamp");
+ msg_size = Integer.getInteger("msg-size", 1024);
+ cacheMessage = Boolean.getBoolean("cache-msg");
+ disableMessageID = Boolean.getBoolean("disable-message-id");
+ disableTimestamp = Boolean.getBoolean("disable-timestamp");
durable = Boolean.getBoolean("durable");
- transacted = Boolean.getBoolean("transacted");
- transaction_size = Integer.getInteger("trans_size",1000);
- 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");
- msgType = System.getProperty("msg_type","bytes");
- printStdDev = Boolean.getBoolean("print_std_dev");
- rate = Long.getLong("rate",-1);
- externalController = Boolean.getBoolean("ext_controller");
- useUniqueDest = Boolean.getBoolean("use_unique_dest");
- random_msg_size_start_from = Integer.getInteger("random_msg_size_start_from", 1);
+ transaction_size = Integer.getInteger("tx",1000);
+ 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");
+ msgType = System.getProperty("msg-type","bytes");
+ printStdDev = Boolean.getBoolean("print-std-dev");
+ sendRate = Integer.getInteger("rate",0);
+ externalController = Boolean.getBoolean("ext-controller");
+ useUniqueDest = Boolean.getBoolean("use-unique-dest");
+ random_msg_size_start_from = Integer.getInteger("random-msg-size-start-from", 1);
+ reportEvery = Integer.getInteger("report-every");
+ isReportTotal = Boolean.getBoolean("report-total");
+ isReportHeader = (System.getProperty("report-header") == null) ? true : Boolean.getBoolean("report-header");
+ isReportLatency = Boolean.getBoolean("report-latency");
+ sendEOS = Integer.getInteger("send-eos");
+ connectionCount = Integer.getInteger("con_count",1);
+ ackFrequency = Integer.getInteger("ack-frequency");
+ rollbackFrequency = Integer.getInteger("rollback-frequency");
+ printHeaders = Boolean.getBoolean("print-headers");
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getUrl()
+ */
+ @Override
public String getUrl()
{
return url;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getHost()
+ */
+ @Override
public String getHost()
{
return host;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getPort()
+ */
+ @Override
public int getPort()
{
return port;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getAddress()
+ */
+ @Override
public String getAddress()
{
return address;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getAckMode()
+ */
+ @Override
public int getAckMode()
{
return ack_mode;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getMsgCount()
+ */
+ @Override
public int getMsgCount()
{
return msg_count;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getMsgSize()
+ */
+ @Override
public int getMsgSize()
{
return msg_size;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getRandomMsgSizeStartFrom()
+ */
+ @Override
public int getRandomMsgSizeStartFrom()
{
return random_msg_size_start_from;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#isDurable()
+ */
+ @Override
public boolean isDurable()
{
return durable;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#isTransacted()
+ */
+ @Override
public boolean isTransacted()
{
- return transacted;
+ return transaction_size > 0;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getTransactionSize()
+ */
+ @Override
public int getTransactionSize()
{
return transaction_size;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getWarmupCount()
+ */
+ @Override
public int getWarmupCount()
{
return warmup_count;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#isCacheMessage()
+ */
+ @Override
public boolean isCacheMessage()
{
return cacheMessage;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#isDisableMessageID()
+ */
+ @Override
public boolean isDisableMessageID()
{
return disableMessageID;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#isDisableTimestamp()
+ */
+ @Override
public boolean isDisableTimestamp()
{
return disableTimestamp;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#isRandomMsgSize()
+ */
+ @Override
public boolean isRandomMsgSize()
{
return random_msg_size;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getMessageType()
+ */
+ @Override
public String getMessageType()
{
return msgType;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#isPrintStdDev()
+ */
+ @Override
public boolean isPrintStdDev()
{
return printStdDev;
}
- public long getRate()
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getSendRate()
+ */
+ @Override
+ public int getSendRate()
{
- return rate;
+ return sendRate;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#isExternalController()
+ */
+ @Override
public boolean isExternalController()
{
return externalController;
@@ -207,8 +318,94 @@ public class TestParams
address = addr;
}
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#isUseUniqueDests()
+ */
+ @Override
public boolean isUseUniqueDests()
{
return useUniqueDest;
}
+
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getAckFrequency()
+ */
+ @Override
+ public int getAckFrequency()
+ {
+ return ackFrequency;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#createConnection()
+ */
+ @Override
+ public Connection createConnection() throws Exception
+ {
+ if (getHost().equals("") || getPort() == -1)
+ {
+ return new AMQConnection(getUrl());
+ }
+ else
+ {
+ return new AMQConnection(getHost(),getPort(),"guest","guest","test","test");
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.qpid.tools.TestConfiguration#getDecimalFormat()
+ */
+ @Override
+ public DecimalFormat getDecimalFormat()
+ {
+ return df;
+ }
+
+ @Override
+ public int reportEvery()
+ {
+ return reportEvery;
+ }
+
+ @Override
+ public boolean isReportTotal()
+ {
+ return isReportTotal;
+ }
+
+ @Override
+ public boolean isReportHeader()
+ {
+ return isReportHeader;
+ }
+
+ @Override
+ public boolean isReportLatency()
+ {
+ return isReportLatency;
+ }
+
+ @Override
+ public int getSendEOS()
+ {
+ return sendEOS;
+ }
+
+ @Override
+ public int getConnectionCount()
+ {
+ return connectionCount;
+ }
+
+ @Override
+ public int getRollbackFrequency()
+ {
+ return rollbackFrequency;
+ }
+
+ @Override
+ public boolean isPrintHeaders()
+ {
+ return printHeaders;
+ }
}
diff --git a/qpid/java/tools/src/main/java/org/apache/qpid/tools/TestConfiguration.java b/qpid/java/tools/src/main/java/org/apache/qpid/tools/TestConfiguration.java
new file mode 100644
index 0000000000..7f7df0e5e6
--- /dev/null
+++ b/qpid/java/tools/src/main/java/org/apache/qpid/tools/TestConfiguration.java
@@ -0,0 +1,126 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.tools;
+
+import java.text.DecimalFormat;
+
+import javax.jms.Connection;
+
+public interface TestConfiguration
+{
+ enum MessageType {
+ BYTES, TEXT, MAP, OBJECT;
+
+ public static MessageType getType(String s) throws Exception
+ {
+ if ("text".equalsIgnoreCase(s))
+ {
+ return TEXT;
+ }
+ else if ("bytes".equalsIgnoreCase(s))
+ {
+ return BYTES;
+ }
+ /*else if ("map".equalsIgnoreCase(s))
+ {
+ return MAP;
+ }
+ else if ("object".equalsIgnoreCase(s))
+ {
+ return OBJECT;
+ }*/
+ else
+ {
+ throw new Exception("Unsupported message type");
+ }
+ }
+ };
+
+ public final static String TIMESTAMP = "ts";
+
+ public final static String EOS = "eos";
+
+ public final static String SEQUENCE_NUMBER = "sn";
+
+ public String getUrl();
+
+ public String getHost();
+
+ public int getPort();
+
+ public String getAddress();
+
+ public int getAckMode();
+
+ public int getMsgCount();
+
+ public int getMsgSize();
+
+ public int getRandomMsgSizeStartFrom();
+
+ public boolean isDurable();
+
+ public boolean isTransacted();
+
+ public int getTransactionSize();
+
+ public int getWarmupCount();
+
+ public boolean isCacheMessage();
+
+ public boolean isDisableMessageID();
+
+ public boolean isDisableTimestamp();
+
+ public boolean isRandomMsgSize();
+
+ public String getMessageType();
+
+ public boolean isPrintStdDev();
+
+ public int getSendRate();
+
+ public boolean isExternalController();
+
+ public boolean isUseUniqueDests();
+
+ public int getAckFrequency();
+
+ public Connection createConnection() throws Exception;
+
+ public DecimalFormat getDecimalFormat();
+
+ public int reportEvery();
+
+ public boolean isReportTotal();
+
+ public boolean isReportHeader();
+
+ public boolean isReportLatency();
+
+ public int getSendEOS();
+
+ public int getConnectionCount();
+
+ public int getRollbackFrequency();
+
+ public boolean isPrintHeaders();
+} \ No newline at end of file