diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2012-04-10 11:16:32 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2012-04-10 11:16:32 +0000 |
commit | b63633658b48684de34d9bf421474caf30501850 (patch) | |
tree | f1b60f10f05e2431cf54cd0e9032998d2152a8e1 | |
parent | cf00c9069b84d6de78b7507ac2fa4b0f6770fb6f (diff) | |
download | qpid-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.java | 247 | ||||
-rw-r--r-- | qpid/java/tools/src/main/java/org/apache/qpid/tools/TestConfiguration.java | 126 |
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 |