diff options
Diffstat (limited to 'qpid/java/perftests')
10 files changed, 308 insertions, 83 deletions
diff --git a/qpid/java/perftests/etc/chartdefs/1015-VaryingNumberOfProducers-SessionTrans.chartdef b/qpid/java/perftests/etc/chartdefs/1015-VaryingNumberOfProducers-SessionTrans.chartdef index 7561ea33f6..0d11f7014b 100644 --- a/qpid/java/perftests/etc/chartdefs/1015-VaryingNumberOfProducers-SessionTrans.chartdef +++ b/qpid/java/perftests/etc/chartdefs/1015-VaryingNumberOfProducers-SessionTrans.chartdef @@ -20,7 +20,7 @@ chartType=XYLINE chartTitle=Varying number of producers - transacted chartSubtitle=Persistent 1KB messages -chartDescription=1,2,5,10 P/Cs, single queue, persistent, transacted, with message payload 1KB. +chartDescription=1,2,5,10,20,40 P/Cs, single queue, persistent, transacted, with message payload 1KB. xAxisTitle=Producers yAxisTitle=Throughput (messages/s) @@ -40,8 +40,18 @@ series.3.legend=10 Consumer series.3.dir=${csvCurrentDir} series.3.colourName=green -series.4.statement=SELECT totalNumberOfProducers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfConsumers = '1' and acknowledgeMode = '0' -series.4.legend=1 Consumer (baseline ${baselineName}) -series.4.dir=${csvBaselineDir} -series.4.colourName=dark_red -series.4.strokeWidth=-1 +series.4.statement=SELECT totalNumberOfProducers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfConsumers = '20' and acknowledgeMode = '0' +series.4.legend=20 Consumer +series.4.dir=${csvCurrentDir} +series.4.colourName=magenta + +series.5.statement=SELECT totalNumberOfProducers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfConsumers = '40' and acknowledgeMode = '0' +series.5.legend=40 Consumer +series.5.dir=${csvCurrentDir} +series.5.colourName=orange + +series.6.statement=SELECT totalNumberOfProducers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfConsumers = '1' and acknowledgeMode = '0' +series.6.legend=1 Consumer (baseline ${baselineName}) +series.6.dir=${csvBaselineDir} +series.6.colourName=dark_red +series.6.strokeWidth=-1 diff --git a/qpid/java/perftests/etc/chartdefs/1016-VaryingNumberOfConsumers-SessionTrans.chartdef b/qpid/java/perftests/etc/chartdefs/1016-VaryingNumberOfConsumers-SessionTrans.chartdef index f567ffade6..bd3f6a457a 100644 --- a/qpid/java/perftests/etc/chartdefs/1016-VaryingNumberOfConsumers-SessionTrans.chartdef +++ b/qpid/java/perftests/etc/chartdefs/1016-VaryingNumberOfConsumers-SessionTrans.chartdef @@ -20,7 +20,7 @@ chartType=XYLINE chartTitle=Varying number of consumers - transacted chartSubtitle=Persistent 1KB messages -chartDescription=1,2,5,10 P/Cs, single queue, persistent, transacted, with message payload 1KB. +chartDescription=1,2,5,10,20,40 P/Cs, single queue, persistent, transacted, with message payload 1KB. xAxisTitle=Consumers yAxisTitle=Throughput (messages/s) @@ -40,8 +40,18 @@ series.3.legend=10 Producers series.3.dir=${csvCurrentDir} series.3.colourName=red -series.4.statement=SELECT totalNumberOfConsumers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfProducers = '10' and acknowledgeMode = '0' -series.4.legend=10 Producers (baseline ${baselineName}) -series.4.dir=${csvBaselineDir} -series.4.colourName=dark_red -series.4.strokeWidth=-1 +series.4.statement=SELECT totalNumberOfConsumers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfProducers = '20' and acknowledgeMode = '0' +series.4.legend=20 Producers +series.4.dir=${csvCurrentDir} +series.4.colourName=magenta + +series.5.statement=SELECT totalNumberOfConsumers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfProducers = '40' and acknowledgeMode = '0' +series.5.legend=40 Producers +series.5.dir=${csvCurrentDir} +series.5.colourName=yellow + +series.6.statement=SELECT totalNumberOfConsumers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfProducers = '10' and acknowledgeMode = '0' +series.6.legend=10 Producers (baseline ${baselineName}) +series.6.dir=${csvBaselineDir} +series.6.colourName=dark_red +series.6.strokeWidth=-1 diff --git a/qpid/java/perftests/etc/chartdefs/1060-SSLConnections.chartdef b/qpid/java/perftests/etc/chartdefs/1060-SSLConnections.chartdef new file mode 100644 index 0000000000..90cb06d5c7 --- /dev/null +++ b/qpid/java/perftests/etc/chartdefs/1060-SSLConnections.chartdef @@ -0,0 +1,49 @@ +# +# 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. +# + +chartType=LINE +chartTitle=Effect of SSL - transacted +chartSubtitle=Persistent 1KB messages +chartDescription=Matching number of P/Cs, single queue, persistent, transacted, with message payload 1KB. + +xAxisTitle=Number of producers and consumers on separate connections +yAxisTitle=Throughput (messages/s) + +series.1.statement=SELECT totalNumberOfProducers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfConsumers = totalNumberOfProducers and acknowledgeMode = '0' +series.1.legend=Plain +series.1.dir=${csvCurrentDir} +series.1.colourName=red + +series.2.statement=SELECT totalNumberOfProducers, throughputMessagesPerS FROM VaryingNumberOfParticipants WHERE participantName = 'All' and totalNumberOfConsumers = totalNumberOfProducers and acknowledgeMode = '0' +series.2.legend=Plain (baseline ${baselineName}) +series.2.dir=${csvBaselineDir} +series.2.colourName=dark_red +series.2.strokeWidth=-1 + +series.3.statement=SELECT totalNumberOfProducers, throughputMessagesPerS FROM VaryingNumberOfParticipantsSSL WHERE participantName = 'All' and totalNumberOfConsumers = totalNumberOfProducers and acknowledgeMode = '0' +series.3.legend=SSL +series.3.dir=${csvCurrentDir} +series.3.colourName=blue + +series.4.statement=SELECT totalNumberOfProducers, throughputMessagesPerS FROM VaryingNumberOfParticipantsSSL WHERE participantName = 'All' and totalNumberOfConsumers = totalNumberOfProducers and acknowledgeMode = '0' +series.4.legend=SSL (baseline ${baselineName}) +series.4.dir=${csvBaselineDir} +series.4.colourName=dark_blue +series.4.strokeWidth=-1 + 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..38a994f81b --- /dev/null +++ b/qpid/java/perftests/etc/json_config_tool.py @@ -0,0 +1,74 @@ +#!/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 + +objname = None +attrname = None +attrvalue = None + +try: + import argparse + + 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 +except ImportError: + objname = sys.argv[1] + attrname = sys.argv[2] + attrvalue = sys.argv[3] + pass + + +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 + +# 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..1e04a89383 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, 40]; +var numbersOfConsumers = [1, 2, 5, 10, 20, 40]; 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..03d94c5ed6 --- /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, 40]; +var numbersOfConsumers = [1, 2, 5, 10, 20, 40]; + +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); + + } +} diff --git a/qpid/java/perftests/etc/visualisation-timeseries.sh b/qpid/java/perftests/etc/visualisation-timeseries.sh deleted file mode 100755 index 3f35b9047c..0000000000 --- a/qpid/java/perftests/etc/visualisation-timeseries.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash -# -# 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. -# - -# Runs the visualisation tool against perftest output assumed to be in a Derby database in the current directory - -BASE_DIR=`dirname $0` - -# Uncomment to read perftest data from a Derby database -JDBC_URL=jdbcUrl=jdbc:derby:perftestResultsDb -JDBC_DRIVER=jdbcDriverClass=org.apache.derby.jdbc.EmbeddedDriver - -java -cp "${BASE_DIR}:${BASE_DIR}/../../build/lib/*" \ - -Djava.awt.headless=true -Dlog4j.configuration=file:log4j.properties \ - org.apache.qpid.disttest.charting.ChartingUtil \ - chart-defs=chartdefs/timeseries \ - ${JDBC_DRIVER} ${JDBC_URL} diff --git a/qpid/java/perftests/etc/visualisation.sh b/qpid/java/perftests/etc/visualisation.sh deleted file mode 100755 index 4c10d7e2e2..0000000000 --- a/qpid/java/perftests/etc/visualisation.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash -# -# 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. -# - -# Runs the visualisation tool against perftest CSV output assumed to be in the current directory - -BASE_DIR=`dirname $0` - -# Uncomment to read perftest data from a Derby database -# JDBC_URL=jdbcUrl=jdbc:derby:perftestResultsDb -# JDBC_DRIVER=jdbcDriverClass=org.apache.derby.jdbc.EmbeddedDriver - -java -cp "${BASE_DIR}:${BASE_DIR}/../../build/lib/*" \ - -Djava.awt.headless=true -Dlog4j.configuration=file:log4j.properties \ - -DcsvCurrentDir=/home/V510279/tasks/_old/PerfTestDryRun/etc/ \ - -DcsvBaselineDir=/home/V510279/tasks/_old/PerfTestDryRun/etc/ \ - -DbaselineName=${BASELINE_NAME} \ - org.apache.qpid.disttest.charting.ChartingUtil \ - chart-defs=chartdefs \ - ${JDBC_DRIVER} ${JDBC_URL} diff --git a/qpid/java/perftests/visualisation-jfc/pom.xml b/qpid/java/perftests/visualisation-jfc/pom.xml index e99bde0102..2d0ccb60c3 100644 --- a/qpid/java/perftests/visualisation-jfc/pom.xml +++ b/qpid/java/perftests/visualisation-jfc/pom.xml @@ -120,6 +120,52 @@ <skip>true</skip> </configuration> </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>1.3.2</version> + <executions> + <execution> + <goals> + <goal>java</goal> + </goals> + </execution> + </executions> + <configuration> + <mainClass>org.apache.qpid.disttest.charting.ChartingUtil</mainClass> + <includePluginDependencies>true</includePluginDependencies> + <arguments> + <argument>chart-defs=${basedir}/../etc/chartdefs</argument> + </arguments> + <systemProperties> + <systemProperty> + <key>log4j.configuration</key><value>file:log4j.properties</value> + </systemProperty> + <systemProperty> + <key>java.awt.headless</key><value>true</value> + </systemProperty> + <systemProperty> + <key>csvCurrentDir</key><value>${basedir}/../target/data/current</value> + </systemProperty> + <systemProperty> + <key>csvBaselineDir</key><value>${basedir}/../target/data/baseline</value> + </systemProperty> + </systemProperties> + </configuration> + <dependencies> + <dependency> + <groupId>net.sourceforge.csvjdbc</groupId> + <artifactId>csvjdbc</artifactId> + <version>${csvjdbc-version}</version> + </dependency> + <dependency> + <groupId>jfree</groupId> + <artifactId>jfreechart</artifactId> + <version>${jfreechart-version}</version> + </dependency> + </dependencies> + </plugin> </plugins> </build> |
