summaryrefslogtreecommitdiff
path: root/qpid/java/perftests/example
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2012-04-05 16:04:10 +0000
committerRobert Gemmell <robbie@apache.org>2012-04-05 16:04:10 +0000
commiteb58a828676bf1fad33c317f86a909f18cadacbc (patch)
treeaef0634df4867e761ea65792d5e19eacbc029f49 /qpid/java/perftests/example
parent347ee6bc0e71ca79d729ccf53c134fbe01289621 (diff)
downloadqpid-python-eb58a828676bf1fad33c317f86a909f18cadacbc.tar.gz
QPID-3936: initial checkin of new testing framework, initially to be used for performance testing but later to be expanded for use with other testing scenarios.
Applied patch from Philip Harvey <phil@philharveyonline.com>, Oleksandr Rudyy <orudyy@gmail.com>, Andrew MacBean <andymacbean@gmail.com>, Keith Wall <kwall@apache.org>, and myself. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1309918 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/perftests/example')
-rw-r--r--qpid/java/perftests/example/brokerconfig/log4j.xml125
-rw-r--r--qpid/java/perftests/example/brokerconfig/passwd23
-rw-r--r--qpid/java/perftests/example/brokerconfig/virtualhosts.xml67
-rw-r--r--qpid/java/perftests/example/config-one-test.json55
-rw-r--r--qpid/java/perftests/example/config-stress-testing-manyp-c1-with-psfc.json162
-rw-r--r--qpid/java/perftests/example/config-stress-testing.json84
-rw-r--r--qpid/java/perftests/example/config-two-tests.json117
-rw-r--r--qpid/java/perftests/example/log4j-client.properties29
-rw-r--r--qpid/java/perftests/example/log4j.properties35
-rw-r--r--qpid/java/perftests/example/perftests-jndi.properties26
-rwxr-xr-xqpid/java/perftests/example/run-client.sh1
-rwxr-xr-xqpid/java/perftests/example/run.sh2
12 files changed, 726 insertions, 0 deletions
diff --git a/qpid/java/perftests/example/brokerconfig/log4j.xml b/qpid/java/perftests/example/brokerconfig/log4j.xml
new file mode 100644
index 0000000000..7dbb1bc87d
--- /dev/null
+++ b/qpid/java/perftests/example/brokerconfig/log4j.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ -
+ - 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.
+ -
+ --><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="null" threshold="null">
+ <appender class="org.apache.log4j.QpidCompositeRollingAppender" name="ArchivingFileAppender">
+ <!-- Ensure that logs always have the DatePattern appended to the filename.
+ DEFAULT IF NOT CONFIGURED: true -->
+ <param name="StaticLogFileName" value="true"/>
+ <param name="file" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/>
+ <!-- Style of rolling to use, by:
+ File Size(1)
+ Date(2)
+ Both(3)
+
+ When Date (or Both) is enabled then the value of DatePattern will determine
+ when the new file is made. e.g. a DatePattern of "'.'yyyy-MM-dd-HH-mm"
+ which includes minutes will cause a new backup file to be made every minute.
+
+ DEFAULT IF NOT CONFIGURED: 3 -->
+ <param name="RollingStyle" value="1"/>
+ <!-- Set the count direction:
+ Negative numbers mean backups are numbered <latest>, .0, .1, .2,..., .n
+ 0 means backup is DatePattern stamped and followed with a Positive number
+ if the DatePattern stamp clashes with other existing backups.
+ Positive numbers mean backups are numbered 0, 1, 2, ..., n, <latest>
+
+ DEFAULT IF NOT CONFIGURED: -1 -->
+ <param name="CountDirection" value="0"/>
+ <!-- Maximum File Size:
+ DEFAULT IF NOT CONFIGURED: 10MB -->
+ <param name="MaxFileSize" value="1MB"/>
+ <!-- Date Pattern:
+ DEFAULT IF NOT CONFIGURED: "'.'yyyy-MM-dd" -->
+ <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm"/>
+ <!-- Maximum number of backup files:
+ 0 means no backups
+ -1 means infinite backups
+
+ DEFAULT IF NOT CONFIGURED: 0 -->
+ <param name="MaxSizeRollBackups" value="-1"/>
+ <!-- Compress(gzip) the backup files to the backup location:
+ DEFAULT IF NOT CONFIGURED: FALSE -->
+ <param name="CompressBackupFiles" value="true"/>
+ <!-- Compress the backup files using a second thread:
+ DEFAULT IF NOT CONFIGURED: FALSE -->
+ <param name="CompressAsync" value="true"/>
+ <!-- Backup Location:
+ DEFAULT IF NOT CONFIGURED: same dir as log file -->
+ <param name="backupFilesToPath" value="${QPID_WORK}/backup/log"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %-5p [%t] (%F:%L) - %m%n"/>
+ </layout>
+ </appender>
+
+ <appender class="org.apache.log4j.FileAppender" name="FileAppender">
+ <param name="File" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/>
+ <param name="Append" value="false"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %-5p [%t] (%F:%L) - %m%n"/>
+ </layout>
+ </appender>
+
+ <appender class="org.apache.log4j.ConsoleAppender" name="STDOUT">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %-5p [%t] (%F:%L) - %m%n"/>
+ </layout>
+ </appender>
+
+ <category additivity="true" name="org.apache.qpid.server.queue.AMQQueueMBean">
+ <priority value="info"/>
+ </category>
+
+ <!-- Provide warnings to standard output -->
+ <category additivity="true" name="org.apache.qpid">
+ <priority value="warn"/>
+ </category>
+
+ <!-- Enable info messages for the status-logging hierarchy -->
+ <logger additivity="true" name="qpid.message">
+ <level value="info"/>
+ </logger>
+
+
+
+ <!-- Examples of additional logging settings -->
+ <!-- Used to generate extra debug. See debug.log4j.xml -->
+
+ <!--<category additivity="true" name="org.apache.qpid.server.store">
+ <priority value="debug"/>
+ </category-->
+
+ <!-- Set the commons logging that the XML parser uses to WARN, it is very chatty at debug -->
+ <logger name="org.apache.commons">
+ <level value="WARN"/>
+ </logger>
+
+ <!-- Log all info events to file -->
+ <root>
+ <priority value="info"/>
+ <appender-ref ref="FileAppender"/>
+ <!--appender-ref ref="ArchivingFileAppender"/-->
+ </root>
+
+</log4j:configuration>
diff --git a/qpid/java/perftests/example/brokerconfig/passwd b/qpid/java/perftests/example/brokerconfig/passwd
new file mode 100644
index 0000000000..99f0f05c6a
--- /dev/null
+++ b/qpid/java/perftests/example/brokerconfig/passwd
@@ -0,0 +1,23 @@
+#
+# 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.
+#
+guest:guest
+client:guest
+server:guest
+admin:admin
+
diff --git a/qpid/java/perftests/example/brokerconfig/virtualhosts.xml b/qpid/java/perftests/example/brokerconfig/virtualhosts.xml
new file mode 100644
index 0000000000..b0dbc89833
--- /dev/null
+++ b/qpid/java/perftests/example/brokerconfig/virtualhosts.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ -
+ - 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.
+ -
+ -->
+<virtualhosts>
+ <default>test</default>
+
+ <virtualhost>
+ <name>test</name>
+ <test>
+ <store>
+ <!-- class>org.apache.qpid.server.store.MemoryMessageStore</class -->
+
+ <class>org.apache.qpid.server.store.berkeleydb.BDBMessageStore</class>
+ <environment-path>/home/V510279/dev/qpid/qpid/java/build/work/bdbstore/test-store</environment-path>
+ </store>
+
+ <queues>
+ <minimumAlertRepeatGap>30000</minimumAlertRepeatGap>
+ <maximumMessageCount>50</maximumMessageCount>
+ <queue>
+ <name>queue</name>
+ <queue>
+ <exchange>amq.direct</exchange>
+ <maximumQueueDepth>4235264</maximumQueueDepth>
+ <!-- 4Mb -->
+ <maximumMessageSize>2117632</maximumMessageSize>
+ <!-- 2Mb -->
+ <maximumMessageAge>600000</maximumMessageAge>
+ <!-- 10 mins -->
+ </queue>
+ </queue>
+ <queue>
+ <name>ping</name>
+ <ping>
+ <exchange>amq.direct</exchange>
+ <maximumQueueDepth>4235264</maximumQueueDepth>
+ <!-- 4Mb -->
+ <maximumMessageSize>2117632</maximumMessageSize>
+ <!-- 2Mb -->
+ <maximumMessageAge>600000</maximumMessageAge>
+ <!-- 10 mins -->
+ </ping>
+ </queue>
+ </queues>
+ </test>
+ </virtualhost>
+</virtualhosts>
+
+
diff --git a/qpid/java/perftests/example/config-one-test.json b/qpid/java/perftests/example/config-one-test.json
new file mode 100644
index 0000000000..8f4e577d49
--- /dev/null
+++ b/qpid/java/perftests/example/config-one-test.json
@@ -0,0 +1,55 @@
+{
+ "_tests":[
+ {
+ "_name": "One producer to one consumer";
+ "_queues":[
+ {
+ "_name": "direct://amq.direct//testQueue"
+ }
+ ];
+ "_clients":[
+ {
+ "_name": "producingClient",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_producers": [
+ {
+ "_name": "Producer1",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 5000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "consumingClient",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_consumers": [
+ {
+ "_name": "Consumer1",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 5000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }]
+}
diff --git a/qpid/java/perftests/example/config-stress-testing-manyp-c1-with-psfc.json b/qpid/java/perftests/example/config-stress-testing-manyp-c1-with-psfc.json
new file mode 100644
index 0000000000..42c0f4a155
--- /dev/null
+++ b/qpid/java/perftests/example/config-stress-testing-manyp-c1-with-psfc.json
@@ -0,0 +1,162 @@
+{
+ "_tests":[
+ {
+ "_name": "Many producers to one consumer w/producer flow-control";
+ "_queues":[
+ {
+ "_name": "direct://amq.direct//testQueue",
+ "_attributes":
+ {
+ "comment": "does not work yet - configure in virtualhost.xml",
+ "x-qpid-capacity": 10485760,
+ "x-qpid-flow-resume-capacity": 8388608
+ }
+ }
+ ];
+ "_clients":[
+ {
+ "_name": "producingClient1",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_acknowledgeMode": 1,
+ "_producers": [
+ {
+ "_name": "Producer1",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 1000000,
+ "_deliveryMode": 1,
+ "_messageSize": 10000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "producingClient2",
+ "_connections":[
+ {
+ "_name": "connection2",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session2",
+ "_acknowledgeMode": 1,
+ "_producers": [
+ {
+ "_name": "Producer2",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 1000000,
+ "_deliveryMode": 1,
+ "_messageSize": 10000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "producingClient3",
+ "_connections":[
+ {
+ "_name": "connection3",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session3",
+ "_acknowledgeMode": 1,
+ "_producers": [
+ {
+ "_name": "Producer3",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 1000000,
+ "_deliveryMode": 1,
+ "_messageSize": 10000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "producingClient4",
+ "_connections":[
+ {
+ "_name": "connection4",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session4",
+ "_acknowledgeMode": 1,
+ "_producers": [
+ {
+ "_name": "Producer4",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 1000000,
+ "_deliveryMode": 1,
+ "_messageSize": 10000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "producingClient5",
+ "_connections":[
+ {
+ "_name": "connection5",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session5",
+ "_acknowledgeMode": "1",
+ "_producers": [
+ {
+ "_name": "Producer5",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 1000000,
+ "_deliveryMode": 1,
+ "_messageSize": 10000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "consumingClient",
+ "_connections":[
+ {
+ "_name": "connection5",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session5",
+ "_acknowledgeMode": 1,
+ "_consumers": [
+ {
+ "_name": "Consumer1",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 5000000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/qpid/java/perftests/example/config-stress-testing.json b/qpid/java/perftests/example/config-stress-testing.json
new file mode 100644
index 0000000000..f6029b848d
--- /dev/null
+++ b/qpid/java/perftests/example/config-stress-testing.json
@@ -0,0 +1,84 @@
+{
+ "_tests":[
+ {
+ "_name": "One producer to one consumer";
+ "_iterations":[
+ {
+ "_messageSize": 10000
+ },
+ {
+ "_messageSize": 10000
+ },
+ {
+ "_messageSize": 10000
+ },
+ {
+ "_messageSize": 10000
+ },
+ {
+ "_messageSize": 10000
+ },
+ {
+ "_messageSize": 10000
+ },
+ {
+ "_messageSize": 10000
+ },
+ {
+ "_messageSize": 10000
+ }
+ ],
+ "_queues":[
+ {
+ "_name": "direct://amq.direct//testQueue"
+ }
+ ],
+ "_clients":[
+ {
+ "_name": "producingClient",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_acknowledgeMode": 1,
+ "_producers": [
+ {
+ "_name": "Producer1",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 1000000,
+ "_deliveryMode": 1
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "consumingClient",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_acknowledgeMode": 1,
+ "_consumers": [
+ {
+ "_name": "Consumer1",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 1000000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }]
+}
diff --git a/qpid/java/perftests/example/config-two-tests.json b/qpid/java/perftests/example/config-two-tests.json
new file mode 100644
index 0000000000..79d305b100
--- /dev/null
+++ b/qpid/java/perftests/example/config-two-tests.json
@@ -0,0 +1,117 @@
+{
+ "_tests":[
+ {
+ "_name": "One producer to one consumer";
+ "_queues":[
+ {
+ "_name": "direct://amq.direct//testQueue"
+ }
+ ];
+ "_clients":[
+ {
+ "_name": "producingClient",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_producers": [
+ {
+ "_name": "Producer1",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 5000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "consumingClient",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_consumers": [
+ {
+ "_name": "Consumer1",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 5000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "One producer to two consumers";
+ "_queues":[
+ {
+ "_name": "direct://amq.direct//testQueue"
+ }
+ ];
+ "_clients":[
+ {
+ "_name": "producingClient",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_producers": [
+ {
+ "_name": "Producer",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 5000
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_name": "consumingClient",
+ "_connections":[
+ {
+ "_name": "connection1",
+ "_factory": "connectionfactory",
+ "_sessions": [
+ {
+ "_sessionName": "session1",
+ "_consumers": [
+ {
+ "_name": "Consumer1",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 2500
+ }
+ ]
+ },
+ {
+ "_sessionName": "session2",
+ "_consumers": [
+ {
+ "_name": "Consumer2",
+ "_destinationName": "direct://amq.direct//testQueue",
+ "_numberOfMessages": 2500
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }]
+}
diff --git a/qpid/java/perftests/example/log4j-client.properties b/qpid/java/perftests/example/log4j-client.properties
new file mode 100644
index 0000000000..b724cbf5f2
--- /dev/null
+++ b/qpid/java/perftests/example/log4j-client.properties
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+log4j.rootLogger=ERROR,console
+
+log4j.logger.org.apache.qpid=WARN
+log4j.logger.org.apache.qpid.disttest=INFO
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.Threshold=all
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+
+log4j.appender.console.layout.ConversionPattern=%d %p [%c{1}] %m%n
+
diff --git a/qpid/java/perftests/example/log4j.properties b/qpid/java/perftests/example/log4j.properties
new file mode 100644
index 0000000000..8af70ebef2
--- /dev/null
+++ b/qpid/java/perftests/example/log4j.properties
@@ -0,0 +1,35 @@
+#
+# 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.
+#
+log4j.rootLogger=ERROR,console,fileApp
+
+log4j.logger.org.apache.qpid=WARN
+log4j.logger.org.apache.qpid.disttest=INFO
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.Threshold=all
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+
+log4j.appender.console.layout.ConversionPattern=%d %p [%c{1}] %m%n
+
+log4j.appender.fileApp=org.apache.log4j.FileAppender
+log4j.appender.fileApp.file=perftests.log
+log4j.appender.fileApp.Threshold=info
+log4j.appender.fileApp.append=false
+log4j.appender.fileApp.layout=org.apache.log4j.PatternLayout
+log4j.appender.fileApp.layout.ConversionPattern=%d %p [%c{1}] %m%n \ No newline at end of file
diff --git a/qpid/java/perftests/example/perftests-jndi.properties b/qpid/java/perftests/example/perftests-jndi.properties
new file mode 100644
index 0000000000..8ad0decaad
--- /dev/null
+++ b/qpid/java/perftests/example/perftests-jndi.properties
@@ -0,0 +1,26 @@
+# 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.
+
+# this file is used for running system tests of the performance test framework,
+# (i.e. not for running the performance tests themselves!)
+
+java.naming.factory.initial = org.apache.qpid.jndi.PropertiesFileInitialContextFactory
+
+# use QpidBrokerTestCase's default port
+connectionfactory.connectionfactory = amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672'
+
+destination.controllerqueue = direct://amq.direct//controllerqueue
diff --git a/qpid/java/perftests/example/run-client.sh b/qpid/java/perftests/example/run-client.sh
new file mode 100755
index 0000000000..7d2d33bb83
--- /dev/null
+++ b/qpid/java/perftests/example/run-client.sh
@@ -0,0 +1 @@
+java -cp ".:${QPID_HOME}/lib/*" -Dlog4j.configuration=log4j-client.properties -Dqpid.dest_syntax=BURL org.apache.qpid.disttest.ClientRunner jndi-config=perftests-jndi.properties
diff --git a/qpid/java/perftests/example/run.sh b/qpid/java/perftests/example/run.sh
new file mode 100755
index 0000000000..0290e0a3b4
--- /dev/null
+++ b/qpid/java/perftests/example/run.sh
@@ -0,0 +1,2 @@
+java -cp ".:${QPID_HOME}/lib/*" -Dqpid.dest_syntax=BURL org.apache.qpid.disttest.ControllerRunner jndi-config=perftests-jndi.properties test-config=$1 distributed=true
+