summaryrefslogtreecommitdiff
path: root/qpid/java/perftests
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-12-23 09:50:14 +0000
committerKeith Wall <kwall@apache.org>2014-12-23 09:50:14 +0000
commit018bdbaedeb39743dce1024a6064636b19810610 (patch)
treeacb0be55fab46c6af7aa335e2184517c398574b6 /qpid/java/perftests
parent5e0175cee706d931b12968004e61e5ed0aac071a (diff)
downloadqpid-python-018bdbaedeb39743dce1024a6064636b19810610.tar.gz
QPID-6284: [Java Broker Tests] Add system test demonstrating the effect of using SSL on a connection.
* VaryingNumberOfParticipants x axis extended to 20 participants as on current test hardware, existing maximum parameter (10) did not show the point at which returns begin to diminish. * Cloned VaryingNumberOfParticipants for the SSL test. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1647521 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/perftests')
-rwxr-xr-xqpid/java/perftests/etc/json_config_tool.py63
-rw-r--r--qpid/java/perftests/etc/perftests-jndi.properties1
-rw-r--r--qpid/java/perftests/etc/testdefs/VaryingNumberOfParticipants.js4
-rw-r--r--qpid/java/perftests/etc/testdefs/VaryingNumberOfParticipantsSSL.js104
4 files changed, 170 insertions, 2 deletions
diff --git a/qpid/java/perftests/etc/json_config_tool.py b/qpid/java/perftests/etc/json_config_tool.py
new file mode 100755
index 0000000000..21fc0aa786
--- /dev/null
+++ b/qpid/java/perftests/etc/json_config_tool.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from StringIO import StringIO
+import json
+import sys
+import re
+import argparse
+
+def transform(data):
+ if isinstance(data, tuple):
+ (k, v) = data;
+ return k, transform(v)
+ elif isinstance(data, list):
+ return [transform(i) for i in data]
+ elif isinstance(data, dict):
+ if "name" in data and data["name"] == objname:
+ data[attrname] = attrvalue
+ return data
+ else:
+ return data
+
+
+parser = argparse.ArgumentParser(description='Adds (or updates) a attribute name/value pair of an existing object within a Java Broker config.json')
+parser.add_argument("objectname", help='Name of the object e.g. httpManagement')
+parser.add_argument("attrname", help='Name of the attribute to add or update e.g. httpBasicAuthenticationEnabled')
+parser.add_argument("attrvalue", help='Value of the attribute e.g. true')
+args = parser.parse_args()
+
+objname = args.objectname
+attrname = args.attrname
+attrvalue = args.attrvalue
+
+# Expects a config.json to be provided on stdin, write the resulting json to stdout.
+
+lines = []
+for line in sys.stdin:
+ lines.append(line.rstrip())
+
+# naive strip C style comments - this deals with the Apache licence comment present on the default config
+input = re.sub("/\*.*?\*/", " ", "".join(lines), re.S)
+
+data = json.load(StringIO(input))
+data = dict([transform((k, v)) for k,v in data.items()])
+
+json.dump(data, sys.stdout, sort_keys=True, indent=2)
diff --git a/qpid/java/perftests/etc/perftests-jndi.properties b/qpid/java/perftests/etc/perftests-jndi.properties
index 173606cd9d..deb0a8d57b 100644
--- a/qpid/java/perftests/etc/perftests-jndi.properties
+++ b/qpid/java/perftests/etc/perftests-jndi.properties
@@ -18,6 +18,7 @@
java.naming.factory.initial = org.apache.qpid.jndi.PropertiesFileInitialContextFactory
connectionfactory.connectionfactory = amqp://guest:guest@clientid/?brokerlist='tcp://localhost:5672'
+connectionfactory.sslconnectionfactory = amqp://guest:guest@clientid/?ssl='true'&brokerlist='tcp://localhost:5671'
destination.controllerqueue = direct://amq.direct//controllerqueue?autodelete='true'
diff --git a/qpid/java/perftests/etc/testdefs/VaryingNumberOfParticipants.js b/qpid/java/perftests/etc/testdefs/VaryingNumberOfParticipants.js
index 4e557e3571..fd6c650e90 100644
--- a/qpid/java/perftests/etc/testdefs/VaryingNumberOfParticipants.js
+++ b/qpid/java/perftests/etc/testdefs/VaryingNumberOfParticipants.js
@@ -25,8 +25,8 @@ var jsonObject = {
var duration = 30000;
var queueName = "direct://amq.direct//varNumOfParticipants?durable='true'";
-var numbersOfProducers = [1, 2, 5, 10];
-var numbersOfConsumers = [1, 2, 5, 10];
+var numbersOfProducers = [1, 2, 5, 10, 20];
+var numbersOfConsumers = [1, 2, 5, 10, 20];
for(producersIndex=0; producersIndex < numbersOfProducers.length; producersIndex++)
{
diff --git a/qpid/java/perftests/etc/testdefs/VaryingNumberOfParticipantsSSL.js b/qpid/java/perftests/etc/testdefs/VaryingNumberOfParticipantsSSL.js
new file mode 100644
index 0000000000..0090b5aa8c
--- /dev/null
+++ b/qpid/java/perftests/etc/testdefs/VaryingNumberOfParticipantsSSL.js
@@ -0,0 +1,104 @@
+/*
+ *
+ * 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.
+ *
+ */
+var jsonObject = {
+ _tests:[]
+};
+
+var duration = 30000;
+var queueName = "direct://amq.direct//varNumOfParticipantsSsl?durable='true'";
+
+var numbersOfProducers = [1, 2, 5, 10, 20];
+var numbersOfConsumers = [1, 2, 5, 10, 20];
+
+for(producersIndex=0; producersIndex < numbersOfProducers.length; producersIndex++)
+{
+ for(consumersIndex=0; consumersIndex < numbersOfConsumers.length; consumersIndex++)
+ {
+ var numberOfProducers = numbersOfProducers[producersIndex];
+ var numberOfConsumers = numbersOfConsumers[consumersIndex];
+ var test = {
+ "_name": "Varying number of participants: " + numberOfConsumers + " consumers - " + numberOfProducers + " producers - PERSISTENT",
+ "_queues":[
+ {
+ "_name": queueName,
+ "_durable": true
+ }
+ ],
+ "_iterations":[
+ {
+ "_acknowledgeMode": 0
+ }
+ ],
+ "_clients":
+ QPID.times(numberOfProducers,
+ {
+ "_name": "producingClient__PRODUCING_CLIENT_INDEX",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "sslconnectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_producers": [
+ {
+ "_name": "Producer__PRODUCING_CLIENT_INDEX",
+ "_destinationName": queueName,
+ "_maximumDuration": duration,
+ "_deliveryMode": 2,
+ "_messageSize": 1024
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "__PRODUCING_CLIENT_INDEX")
+ .concat(QPID.times(numberOfConsumers,
+ {
+ "_name": "consumingClient__CONSUMING_CLIENT_INDEX",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "sslconnectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_consumers": [
+ {
+ "_name": "Consumer__CONSUMING_CLIENT_INDEX",
+ "_destinationName": queueName,
+ "_maximumDuration": duration
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "__CONSUMING_CLIENT_INDEX"))
+ };
+
+ jsonObject._tests= jsonObject._tests.concat(test);
+
+ }
+}