summaryrefslogtreecommitdiff
path: root/qpid/java/tools/bin
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/tools/bin')
-rwxr-xr-xqpid/java/tools/bin/Profile-run-from-source71
-rwxr-xr-xqpid/java/tools/bin/check-qpid-java-env38
-rw-r--r--qpid/java/tools/bin/controller132
-rwxr-xr-xqpid/java/tools/bin/perf-report (renamed from qpid/java/tools/bin/perf_report.sh)45
-rwxr-xr-x[-rw-r--r--]qpid/java/tools/bin/qpid-bench16
-rwxr-xr-xqpid/java/tools/bin/qpid-python-testkit11
-rwxr-xr-x[-rw-r--r--]qpid/java/tools/bin/run-pub (renamed from qpid/java/tools/bin/run_sub.sh)9
-rwxr-xr-x[-rw-r--r--]qpid/java/tools/bin/run-sub (renamed from qpid/java/tools/bin/run_pub.sh)14
-rw-r--r--qpid/java/tools/bin/set-testkit-env.sh88
-rw-r--r--qpid/java/tools/bin/setenv.sh49
-rw-r--r--qpid/java/tools/bin/start-consumers119
-rw-r--r--qpid/java/tools/bin/start-producers136
12 files changed, 543 insertions, 185 deletions
diff --git a/qpid/java/tools/bin/Profile-run-from-source b/qpid/java/tools/bin/Profile-run-from-source
new file mode 100755
index 0000000000..f8ec45ccff
--- /dev/null
+++ b/qpid/java/tools/bin/Profile-run-from-source
@@ -0,0 +1,71 @@
+#
+# 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.
+#
+
+# Sets the environment for running the scripts from a source checkout.
+txtbld=$(tput bold) # Bold
+txtrst=$(tput sgr0) # Reset
+txtred=$(tput setaf 1) # red
+txtgreen=$(tput setaf 2) # green
+
+echo "${txtbld}Setting the environment to run qpid java tools from a source checkout${txtrst}"
+
+abs_path()
+{
+ D=`dirname "$1"`
+ echo "`cd \"$D\" 2>/dev/null && pwd`"
+}
+
+export QPID_CHECKOUT=`abs_path "../../../../"`
+echo "${txtgreen}Using source checkout at $QPID_CHECKOUT${txtrst}"
+
+export PATH=$QPID_CHECKOUT/java/tools/bin:$PATH
+
+if [ "$JAVA" = "" ] ; then
+ export JAVA=$(which java)
+fi
+
+#------------- Required for perf_report, qpid-bench & qpid-python-testkit ----------------
+
+export VENDOR_LIB=$QPID_CHECKOUT/java/build/lib
+export CLASSPATH=`find $VENDOR_LIB -name '*.jar' | tr '\n' ':'`
+export LOG_CONFIG="-Dlog4j.configuration=file:///$QPID_CHECKOUT/java/tools/etc/test.log4j"
+
+
+#------------- Required for qpid-python-testkit -----------------------------------------
+
+PYTHONPATH=$QPID_CHECKOUT/python/qpid:$QPID_CHECKOUT/cpp/src/test/brokertest.py:$PYTHONPATH
+export PATH=$QPID_CHECKOUT/python:$PATH
+
+if [ -x $QPID_CHECKOUT/cpp/src/qpidd ]; then
+ QPIDD_EXEC=$QPID_CHECKOUT/cpp/src/qpidd
+else
+ echo "${txtred}WARNING: Qpid CPP broker executable not found. You will not be able to run qpid-python-testkit${txtrst}"
+fi
+
+if [ -x $QPID_CHECKOUT/cpp/src/.libs/cluster.so ]; then
+ CLUSTER_LIB=$QPID_CHECKOUT/cpp/src/.libs/cluster.so
+else
+ echo "${txtred}WARNING: Qpid cluster.so not found.You will not be able to run qpid-python-testkit${txtrst}"
+fi
+
+if [ "$STORE_LIB" = "" ] ; then
+ echo "${txtred}WARNING: Please point the STORE_LIB variable to the message store module. If not persistence tests will not write messages to disk.${txtrst}"
+fi
+
+export PYTHONPATH QPIDD_EXEC CLUSTER_LIB
diff --git a/qpid/java/tools/bin/check-qpid-java-env b/qpid/java/tools/bin/check-qpid-java-env
new file mode 100755
index 0000000000..dedd6e06ea
--- /dev/null
+++ b/qpid/java/tools/bin/check-qpid-java-env
@@ -0,0 +1,38 @@
+#!/bin/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.
+#
+
+if [ -z "$LOG_CONFIG" ]; then
+ echo "Please set the appropriate parameters for logging as it may affect performance. Ex log4j defaults to DEBUG if not configured properly"
+ exit -1
+fi
+
+if [ -z "$JAVA_MEM" ]; then
+ JAVA_MEM=-Xmx1024m
+fi
+
+if [ -z "$JAVA" ]; then
+ echo "Please set the path to the correct java executable to JAVA"
+ exit -1
+fi
+
+if [ -z "$CLASSPATH" ]; then
+ echo "Please set the $CLASSPATH variable to point to the jar/class files"
+ exit -1
+fi
diff --git a/qpid/java/tools/bin/controller b/qpid/java/tools/bin/controller
new file mode 100644
index 0000000000..fab8614039
--- /dev/null
+++ b/qpid/java/tools/bin/controller
@@ -0,0 +1,132 @@
+#!/bin/sh
+#
+# 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 starts the controller for coordinating perf tests/
+
+. check-qpid-java-env
+
+PROGRAM_NAME=controller
+CONSUMER_COUNT=1
+PRODUCER_COUNT=1
+DURATION=-1
+TEST_NAME="TEST_NAME"
+EXTRA_JVM_ARGS=""
+
+TEMP=$(getopt -n $PROGRAM_NAME -o c:p:d:n:a:h --long consumers:,producers:,jvm-args:help -- "$@")
+
+usage()
+{
+ printf "\n%s\n" "Usage: controller [option].."
+
+ printf "\n%31s\n%52s\n" "-c, --consumer-count=count" "No of consumers participating in the test"
+
+ printf "\n%31s\n%52s\n" "-p, --producer-count=count" "No of producers participating in the test"
+
+ printf "\n%24s\n%94s\n" "-d, --duration=mins" "The duration of the test in mins. If not specified, it will just run one iteration."
+
+ printf "\n%27s\n%32s\n" "-n, --name=<test-name>" "The name of the test."
+
+ printf "\n%19s\n%50s\n" "-a, --jvm-args" "Extra jvm arguments you want to specify"
+}
+
+eval set -- "$TEMP"
+while true; do
+ case $1 in
+ -c|--consumer-count)
+ CONSUMER_COUNT="$2"; shift; shift; continue
+ ;;
+ -p|--producer-count)
+ PRODUCER_COUNT="$2"; shift; shift; continue
+ ;;
+ -d|--duration)
+ DURATION="$2"; shift; shift; continue
+ ;;
+ -n|--name)
+ TEST_NAME="$2"; shift; shift; continue
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ -a|--jvm-args)
+ EXTRA_JVM_ARGS="$2"; shift; shift; continue
+ ;;
+ --)
+ # no more arguments to parse
+ break
+ ;;
+ *)
+ # no more arguments to parse
+ break
+ ;;
+ esac
+done
+
+CONTROLLER_ARGS="-server -Durl=amqp://guest:guest@clientid/testpath?brokerlist='tcp://localhost:5672' -Dprecision=mili -Dprod_count=$PRODUCER_COUNT -Dcons_count=$CONSUMER_COUNT -Dprint_std_dev=true -Dduration=${DURATION}"
+
+
+waitfor() { until grep -a -l "$2" $1 >/dev/null 2>&1 ; do sleep 1 ; done ; }
+cleanup()
+{
+ pids=`ps aux | grep java | grep PerfTestController | awk '{print $2}'`
+ if [ "$pids" != "" ]; then
+ kill -3 $pids
+ kill -9 $pids >/dev/null 2>&1
+ fi
+}
+
+run_controller()
+{
+ TEST_ARGS="$LOG_CONFIG $JAVA_MEM $CONTROLLER_ARGS $EXTRA_JVM_ARGS"
+ echo "Running controller with : $TEST_ARGS" > test.out
+ $JAVA -cp $CLASSPATH $TEST_ARGS org.apache.qpid.tools.PerfTestController >> test.out &
+ waitfor test.out "Controller: Completed the test"
+ sleep 2 #give a grace period to shutdown
+ print_result $TEST_NAME
+}
+
+print_result()
+{
+ prod_rate=`cat test.out | grep "Avg Producer rate" | awk '{print $5}'`
+ sys_rate=`cat test.out | grep "System Throughput" | awk '{print $4}'`
+ cons_rate=`cat test.out | grep "Avg Consumer rate" | awk '{print $5}'`
+ avg_latency=`cat test.out | grep "Avg System Latency" | awk '{print $5}'`
+ min_latency=`cat test.out | grep "Min System Latency" | awk '{print $5}'`
+ max_latency=`cat test.out | grep "Max System Latency" | awk '{print $5}'`
+ std_dev=`cat test.out | grep "Avg System Std Dev" | awk '{print $6}'`
+
+ printf "|%-15s|%15.2f|%13.2f|%13.2f|%11.2f|%11.2f|%11.2f|%7.2f|\n" $1 $sys_rate $prod_rate $cons_rate $avg_latency $min_latency $max_latency $std_dev
+ echo "--------------------------------------------------------------------------------------------------------"
+}
+
+trap cleanup EXIT
+
+rm -rf *.out
+
+if [ "$DURATION" = -1 ]; then
+ echo "Test report on " `date +%F`
+ echo "========================================================================================================"
+ echo "|Test |System throuput|Producer rate|Consumer Rate|Avg Latency|Min Latency|Max Latency|Std Dev|"
+ echo "--------------------------------------------------------------------------------------------------------"
+else
+ echo "Test in progress....Tail stats-csv.log to see results being printed for each iteration."
+fi
+
+run_controller
diff --git a/qpid/java/tools/bin/perf_report.sh b/qpid/java/tools/bin/perf-report
index e6b4c987e5..7de3f2b602 100755
--- a/qpid/java/tools/bin/perf_report.sh
+++ b/qpid/java/tools/bin/perf-report
@@ -18,23 +18,19 @@
# under the License.
#
-# This will run the 8 use cases defined below and produce
-# a report in tabular format. Refer to the documentation
-# for more details.
+# This will run the following test cases defined below and produce
+# a report in tabular format.
-SUB_MEM=-Xmx1024M
-PUB_MEM=-Xmx1024M
-LOG_CONFIG="-Damqj.logging.level=WARN"
QUEUE="queue;{create:always,node:{x-declare:{auto-delete:true}}}"
DURA_QUEUE="dqueue;{create:always,node:{durable:true,x-declare:{auto-delete:true}}}"
TOPIC="amq.topic/test"
DURA_TOPIC="amq.topic/test;{create:always,link:{durable:true}}"
-. setenv.sh
+COMMON_CONFIG="-server -Durl=amqp://guest:guest@clientid/testpath?brokerlist='tcp://localhost:5672'"
waitfor() { until grep -a -l "$2" $1 >/dev/null 2>&1 ; do sleep 1 ; done ; }
cleanup()
-{
+{
pids=`ps aux | grep java | grep Perf | awk '{print $2}'`
if [ "$pids" != "" ]; then
kill -3 $pids
@@ -46,30 +42,31 @@ cleanup()
# $2 consumer options
# $3 producer options
run_testcase()
-{
- sh run_sub.sh $LOG_CONFIG $SUB_MEM $2 > sub.out &
- waitfor sub.out "Warming up"
- sh run_pub.sh $LOG_CONFIG $PUB_MEM $3 > pub.out &
- waitfor sub.out "Completed the test"
- waitfor pub.out "Consumer has completed the test"
+{
+ sh run-sub $COMMON_CONFIG $2 > sub.out &
+ sh run-pub $COMMON_CONFIG $3 > pub.out &
+ waitfor pub.out "Controller: Completed the test"
sleep 2 #give a grace period to shutdown
- print_result $1
+ print_result $1
+ mv pub.out $1.pub.out
+ mv sub.out $1.sub.out
}
print_result()
{
- prod_rate=`cat pub.out | grep "Producer rate" | awk '{print $3}'`
- sys_rate=`cat sub.out | grep "System Throughput" | awk '{print $4}'`
- cons_rate=`cat sub.out | grep "Consumer rate" | awk '{print $4}'`
- avg_latency=`cat sub.out | grep "Avg Latency" | awk '{print $4}'`
- min_latency=`cat sub.out | grep "Min Latency" | awk '{print $4}'`
- max_latency=`cat sub.out | grep "Max Latency" | awk '{print $4}'`
-
- printf "|%-15s|%15.2f|%13.2f|%13.2f|%11.2f|%11d|%11d|\n" $1 $sys_rate $prod_rate $cons_rate $avg_latency $min_latency $max_latency
+ prod_rate=`cat pub.out | grep "Avg Producer rate" | awk '{print $5}'`
+ sys_rate=`cat pub.out | grep "System Throughput" | awk '{print $4}'`
+ cons_rate=`cat pub.out | grep "Avg Consumer rate" | awk '{print $5}'`
+ avg_latency=`cat pub.out | grep "Avg System Latency" | awk '{print $5}'`
+ min_latency=`cat pub.out | grep "Min System Latency" | awk '{print $5}'`
+ max_latency=`cat pub.out | grep "Max System Latency" | awk '{print $5}'`
+
+ printf "|%-15s|%15.2f|%13.2f|%13.2f|%11.2f|%11.2f|%11.2f|\n" $1 $sys_rate $prod_rate $cons_rate $avg_latency $min_latency $max_latency
echo "------------------------------------------------------------------------------------------------"
}
trap cleanup EXIT
+rm -rf *.out #cleanup old files.
echo "Test report on " `date +%F`
echo "================================================================================================"
@@ -82,7 +79,7 @@ echo "--------------------------------------------------------------------------
# setting very low values to start with and experiment while increasing them slowly.
# Test 1 Trans Queue
-#run_testcase "Trans_Queue" "-Daddress=$QUEUE" "-Daddress=$QUEUE -Dwarmup_count=1 -Dmsg_count=10"
+run_testcase "Trans_Queue" "-Daddress=$QUEUE" "-Daddress=$QUEUE -Dwarmup_count=1 -Dmsg_count=10"
# Test 2 Dura Queue
run_testcase "Dura_Queue" "-Daddress=$DURA_QUEUE -Ddurable=true" "-Daddress=$DURA_QUEUE -Ddurable=true -Dwarmup_count=1 -Dmsg_count=10"
diff --git a/qpid/java/tools/bin/qpid-bench b/qpid/java/tools/bin/qpid-bench
index c982e64efd..cd894b607f 100644..100755
--- a/qpid/java/tools/bin/qpid-bench
+++ b/qpid/java/tools/bin/qpid-bench
@@ -18,18 +18,6 @@
# under the License.
#
-if [ -z "$QPID_HOME" ]; then
- export QPID_HOME=$(dirname $(dirname $(readlink -f $0)))
- export PATH=${PATH}:${QPID_HOME}/bin
-fi
+. check-qpid-java-env
-# Set classpath to include Qpid jar with all required jars in manifest
-QPID_LIBS=$QPID_HOME/lib/qpid-all.jar
-
-# Set other variables used by the qpid-run script before calling
-export JAVA=java \
- JAVA_VM=-server \
- JAVA_MEM=-Xmx1024m \
- QPID_CLASSPATH=$QPID_LIBS
-
-. qpid-run org.apache.qpid.tools.QpidBench "$@"
+$JAVA -cp $CLASSPATH -server $JAVA_MEM $LOG_CONFIG org.apache.qpid.tools.QpidBench "$@"
diff --git a/qpid/java/tools/bin/qpid-python-testkit b/qpid/java/tools/bin/qpid-python-testkit
index cbe7972421..7233d0d075 100755
--- a/qpid/java/tools/bin/qpid-python-testkit
+++ b/qpid/java/tools/bin/qpid-python-testkit
@@ -22,9 +22,12 @@
# via the python test runner. The defaults are set for a running
# from an svn checkout
-. ./set-testkit-env.sh
+. check-qpid-java-env
export PYTHONPATH=./:$PYTHONPATH
-rm -rf $OUTDIR
-qpid-python-test -DOUTDIR=$OUTDIR -m testkit "$@"
-
+echo $PYTHONPATH
+if [ "$OUTDIR" = "" ] ; then
+ OUTDIR=$PWD
+fi
+testdir=$OUTDIR/testkit-out-`date +%F-%H-%M-%S`
+qpid-python-test -m testkit -DOUTDIR=$testdir"$@"
diff --git a/qpid/java/tools/bin/run_sub.sh b/qpid/java/tools/bin/run-pub
index c9ad2fed74..9efe58c4b8 100644..100755
--- a/qpid/java/tools/bin/run_sub.sh
+++ b/qpid/java/tools/bin/run-pub
@@ -18,8 +18,11 @@
# under the License.
#
-. $QPID_TEST_HOME/bin/setenv.sh
+. check-qpid-java-env
-echo "$@"
-$JAVA_HOME/bin/java -cp $CLASSPATH $@ org.apache.qpid.tools.PerfConsumer
+JVM_ARGS="$1"
+PROGRAM_ARGS="$2"
+echo "JVM ARGS : $JAVA_MEM $JVM_ARGS"
+echo "PROGRAM ARGS : $PROGRAM_ARGS"
+$JAVA -cp $CLASSPATH $LOG_CONFIG $JAVA_MEM $JVM_ARGS org.apache.qpid.tools.PerfProducer $PROGRAM_ARGS
diff --git a/qpid/java/tools/bin/run_pub.sh b/qpid/java/tools/bin/run-sub
index 91b9287dea..8449563f7f 100644..100755
--- a/qpid/java/tools/bin/run_pub.sh
+++ b/qpid/java/tools/bin/run-sub
@@ -18,7 +18,15 @@
# under the License.
#
-. $QPID_TEST_HOME/bin/setenv.sh
+. check-qpid-java-env
+
+echo "All args $@"
+
+JVM_ARGS="$1"
+PROGRAM_ARGS="$2"
+
+echo "JVM ARGS : $JAVA_MEM $JVM_ARGS"
+echo "PROGRAM ARGS : $PROGRAM_ARGS"
+
+$JAVA -cp $CLASSPATH $LOG_CONFIG $JAVA_MEM $JVM_ARGS org.apache.qpid.tools.PerfConsumer $PROGRAM_ARGS
-echo "$@"
-$JAVA_HOME/bin/java -cp $CLASSPATH $@ org.apache.qpid.tools.PerfProducer
diff --git a/qpid/java/tools/bin/set-testkit-env.sh b/qpid/java/tools/bin/set-testkit-env.sh
deleted file mode 100644
index 051dad8179..0000000000
--- a/qpid/java/tools/bin/set-testkit-env.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#
-# 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.
-#
-
-# If QPIDD_EXEC ..etc is not set, it will first check to see
-# if this is run from a qpid svn check out, if not it will look
-# for installed rpms.
-
-abs_path()
-{
- D=`dirname "$1"`
- B=`basename "$1"`
- echo "`cd \"$D\" 2>/dev/null && pwd || echo \"$D\"`/$B"
-}
-
-# Environment for python tests
-
-if [ -d ../../../python ] ; then
- PYTHON_DIR=../../../python
- PYTHONPATH=$PYTHON_DIR:$PYTHON_DIR/qpid
-elif [ -z `echo $PYTHONPATH | awk '$0 ~ /qpid/'` ]; then
- echo "WARNING: skipping test, no qpid python scripts found ."; exit 0;
-fi
-
-
-if [ "$QPIDD_EXEC" = "" ] ; then
- if [ -x ../../../cpp/src/qpidd ]; then
- QPIDD_EXEC=`abs_path "../../../cpp/src/qpidd"`
- elif [ -n "$(which qpidd)" ] ; then
- QPIDD_EXEC=$(which qpidd)
- else
- echo "WARNING: skipping test, QPIDD_EXEC not set and qpidd not found."; exit 0;
- fi
-fi
-
-if [ "$CLUSTER_LIB" = "" ] ; then
- if [ -x ../../../cpp/src/.libs/cluster.so ]; then
- CLUSTER_LIB=`abs_path "../../../cpp/src/.libs/cluster.so"`
- elif [ -e /usr/lib64/qpid/daemon/cluster.so ] ; then
- CLUSTER_LIB="/usr/lib64/qpid/daemon/cluster.so"
- elif [ -e /usr/lib/qpid/daemon/cluster.so ] ; then
- CLUSTER_LIB="/usr/lib/qpid/daemon/cluster.so"
- else
- echo "WARNING: skipping test, CLUSTER_LIB not set and cluster.so not found."; exit 0;
- fi
-fi
-
-if [ "$STORE_LIB" = "" ] ; then
- if [ -e /usr/lib64/qpid/daemon/msgstore.so ] ; then
- STORE_LIB="/usr/lib64/qpid/daemon/msgstore.so"
- elif [ -e /usr/lib/qpid/daemon/msgstore.so ] ; then
- STORE_LIB="/usr/lib/qpid/daemon/msgstore.so"
- #else
- # echo "WARNING: skipping test, STORE_LIB not set and msgstore.so not found."; exit 0;
- fi
-fi
-
-if [ "$QP_CP" = "" ] ; then
- if [ -d ../../build/lib/ ]; then
- QP_JAR_PATH=`abs_path "../../build/lib/"`
- elif [ -d /usr/share/java/qpid-deps ]; then
- QP_JAR_PATH=`abs_path "/usr/share/java"`
- else
- "WARNING: skipping test, QP_CP not set and the Qpid jars are not present."; exit 0;
- fi
- QP_CP=`find $QP_JAR_PATH -name '*.jar' | tr '\n' ':'`
-fi
-
-if [ "$OUTDIR" = "" ] ; then
- OUTDIR=`abs_path "./output"`
-fi
-
-export PYTHONPATH PYTHON_DIR QPIDD_EXEC CLUSTER_LIB QP_CP OUTDIR
diff --git a/qpid/java/tools/bin/setenv.sh b/qpid/java/tools/bin/setenv.sh
deleted file mode 100644
index 24135e711b..0000000000
--- a/qpid/java/tools/bin/setenv.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-#
-# 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.
-#
-
-# Compiles the test classes and sets the CLASSPATH
-
-# check for QPID_TEST_HOME
-if [ "$QPID_TEST_HOME" = "" ] ; then
- echo "ERROR: Please set QPID_TEST_HOME ...."
- exit 1
-fi
-
-# check for JAVA_HOME
-if [ "$JAVA_HOME" = "" ] ; then
- echo "ERROR: Please set JAVA_HOME ...."
- exit 1
-fi
-
-# VENDOR_LIB path needs to be set
-# for Qpid set this to {qpid_checkout}/java/build/lib
-if [ "$VENDOR_LIB" = "" ] ; then
- echo "ERROR: Please set VENDOR_LIB path in the script ...."
- exit 1
-fi
-
-
-[ -d $QPID_TEST_HOME/classes ] || mkdir $QPID_TEST_HOME/classes
-
-CLASSPATH=`find $VENDOR_LIB -name *.jar* | tr '\n' ":"`
-$JAVA_HOME/bin/javac -cp $CLASSPATH -d $QPID_TEST_HOME/classes -sourcepath $QPID_TEST_HOME/src `find $QPID_TEST_HOME/src -name '*.java'`
-
-export CLASSPATH=$QPID_TEST_HOME/classes:$CLASSPATH
-
diff --git a/qpid/java/tools/bin/start-consumers b/qpid/java/tools/bin/start-consumers
new file mode 100644
index 0000000000..c71fc0c21f
--- /dev/null
+++ b/qpid/java/tools/bin/start-consumers
@@ -0,0 +1,119 @@
+#!/bin/sh
+#
+# 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 starts the controller for coordinating perf tests/
+
+. check-qpid-java-env
+
+PROGRAM_NAME="start-consumers"
+PROCESS_COUNT=1
+CON_COUNT=1
+MSG_COUNT=10000
+ADDRESS="queue;{create:always}"
+UNIQUE_DEST="false"
+
+EXTRA_JVM_ARGS=" -Dmax_prefetch=500 "
+
+TEST_ID=`echo ${HOSTNAME} | awk -F . '{print $1}'`
+
+TEMP=$(getopt -n $PROGRAM_NAME -o C:P:uc:p:a:s:t:w:h\
+ --long connection-count:,process-count:,create-unique-queues-topics,\
+jvm-args:,queue:,topic:,address:,\
+msg-count:,help -- "$@")
+
+usage()
+{
+ printf "\n%s\n" "Usage: start-producers [option].."
+
+ printf "\n%32s\n%51s\n" "-C, --connection-count=count" "No of consumers participating in the test"
+
+ printf "\n%29s\n%51s\n" "-P, --process-count=count" "No of producers participating in the test"
+
+ printf "\n%37s\n%105s\n" "-u, --create-unique-queues-topics" "This will create unique queue names and topics based on what you specify for --queue or --topic"
+
+ printf "\n%11s\n%55s\n" "--queue" "The Queue you want to publish to. Ex my-queue"
+
+ printf "\n%11s\n%84s\n" "--topic" "The Topic you want to publish to in amq.topic exchange. Ex amq.topic/topic"
+
+ printf "\n%13s\n%44s\n" "--address" "The address you want to publish to"
+
+ printf "\n%25s\n%50s\n" "-c, --msg-count=count" "message count per test (default 500,000)"
+
+ printf "\n%18s\n%49s\n" "-a, --jvm-args" "Extra jvm arguments you want to specify"
+}
+
+eval set -- "$TEMP"
+while true; do
+ case $1 in
+ -C|--connection-count)
+ CON_COUNT="$2"; shift; shift; continue
+ ;;
+ -P|--process-count)
+ PROCESS_COUNT="$2"; shift; shift; continue
+ ;;
+ -u|--create-unique-queues-topics)
+ UNIQUE_DEST="true"; shift; continue
+ ;;
+ --queue)
+ ADDRESS="$2;{create: always}"; shift; shift; continue
+ ;;
+ --topic)
+ ADDRESS="amq.topic/$2"; shift; shift; continue
+ ;;
+ --address)
+ ADDRESS="$2"; shift; shift; continue
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ -a|--jvm-args)
+ EXTRA_JVM_ARGS="$2"; shift; shift; continue
+ ;;
+ -c|--msg-count)
+ MSG_COUNT="$2"; shift; shift; continue
+ ;;
+ --)
+ # no more arguments to parse
+ break
+ ;;
+ *)
+ # no more arguments to parse
+ break
+ ;;
+ esac
+done
+
+CONSUMER_ARGS="-server -Durl=amqp://guest:guest@clientid/testpath?brokerlist='tcp://localhost:5672' -Dprecision=mili -Dcon_count=$CON_COUNT -Dprint_std_dev=true"
+
+start_consumers()
+{
+ for ((i=0; i<$PROCESS_COUNT; i++))
+ do
+ if [ "$UNIQUE_DEST" = "true" ]; then
+ sh run-sub "$CONSUMER_ARGS $@" "${TEST_ID}_$i" > ${TEST_ID}_$i.sub.out 2>&1 &
+ else
+ sh run-sub "$CONSUMER_ARGS $@" > ${TEST_ID}_$i.sub.out 2>&1 &
+ fi
+ done
+}
+
+start_consumers "-Daddress=$ADDRESS -Duse_unique_dest=$UNIQUE_DEST -Dmsg_count=$MSG_COUNT -Dcon_count=$CON_COUNT $EXTRA_JVM_ARGS"
+
diff --git a/qpid/java/tools/bin/start-producers b/qpid/java/tools/bin/start-producers
new file mode 100644
index 0000000000..7ba0286f7c
--- /dev/null
+++ b/qpid/java/tools/bin/start-producers
@@ -0,0 +1,136 @@
+#!/bin/sh
+#
+# 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 starts the controller for coordinating perf tests/
+
+. check-qpid-java-env
+
+PROGRAM_NAME="start-producers"
+PROCESS_COUNT=1
+CON_COUNT=1
+MSG_TYPE="bytes"
+WARMUP_MSG_COUNT=1000
+MSG_COUNT=10000
+MSG_SIZE=1024
+ADDRESS="queue;{create:always}"
+UNIQUE_DEST="false"
+
+EXTRA_JVM_ARGS=""
+TEST_ID=`echo ${HOSTNAME} | awk -F . '{print $1}'`
+
+TEMP=$(getopt -n $PROGRAM_NAME -o C:P:uc:p:a:s:t:w:h\
+ --long connection-count:,process-count:,create-unique-queues-topics,\
+jvm-args:,queue:,topic:,address:,\
+msg-count:,msg-size:msg-type:,warmup-msg-count,help -- "$@")
+
+usage()
+{
+ printf "\n%s\n" "Usage: start-producers [option].."
+
+ printf "\n%32s\n%51s\n" "-C, --connection-count=count" "No of consumers participating in the test"
+
+ printf "\n%29s\n%51s\n" "-P, --process-count=count" "No of producers participating in the test"
+
+ printf "\n%37s\n%105s\n" "-u, --create-unique-queues-topics" "This will create unique queue names and topics based on what you specify for --queue or --topic"
+
+ printf "\n%11s\n%55s\n" "--queue" "The Queue you want to publish to. Ex my-queue"
+
+ printf "\n%11s\n%84s\n" "--topic" "The Topic you want to publish to in amq.topic exchange. Ex amq.topic/topic"
+
+ printf "\n%13s\n%44s\n" "--address" "The address you want to publish to"
+
+ printf "\n%23s\n%37s\n" "-s, --msg-size=size" "message size (default 1024)"
+
+ printf "\n%25s\n%50s\n" "-c, --msg-count=count" "message count per test (default 500,000)"
+
+ printf "\n%18s\n%38s\n" "-t, --msg-type" "{bytes|text} (default bytes)"
+
+ printf "\n%26s\n%49s\n" "-w, --warmup-msg-count" "warm up message count (default 100,000)"
+
+ printf "\n%18s\n%49s\n" "-a, --jvm-args" "Extra jvm arguments you want to specify"
+}
+
+eval set -- "$TEMP"
+while true; do
+ case $1 in
+ -C|--connection-count)
+ CON_COUNT="$2"; shift; shift; continue
+ ;;
+ -P|--process-count)
+ PROCESS_COUNT="$2"; shift; shift; continue
+ ;;
+ -u|--create-unique-queues-topics)
+ UNIQUE_DEST="true"; shift; continue
+ ;;
+ --queue)
+ ADDRESS="$2;{create: always}"; shift; shift; continue
+ ;;
+ --topic)
+ ADDRESS="amq.topic/$2"; shift; shift; continue
+ ;;
+ --address)
+ ADDRESS="$2"; shift; shift; continue
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ -a|--jvm-args)
+ EXTRA_JVM_ARGS="$2"; shift; shift; continue
+ ;;
+ -s|--msg-size)
+ MSG_SIZE="$2"; shift; shift; continue
+ ;;
+ -c|--msg-count)
+ MSG_COUNT="$2"; shift; shift; continue
+ ;;
+ -t|--msg_type)
+ MSG_TYPE="$2"; shift; shift; continue
+ ;;
+ -w|--warmup-msg-count)
+ WARMUP_MSG_COUNT="$2"; shift; shift; continue
+ ;;
+ --)
+ # no more arguments to parse
+ break
+ ;;
+ *)
+ # no more arguments to parse
+ break
+ ;;
+ esac
+done
+
+PRODUCER_ARGS="-server -Durl=amqp://guest:guest@clientid/testpath?brokerlist='tcp://localhost:5672' -Dext_controller=true -Dprecision=mili -Dcon_count=$CON_COUNT"
+
+start_producers()
+{
+ for ((i=0; i<$PROCESS_COUNT; i++))
+ do
+ if [ "$UNIQUE_DEST" = "true" ]; then
+ sh run-pub "$PRODUCER_ARGS $@" "${TEST_ID}_$i" > ${TEST_ID}_$i.pub.out 2>&1 &
+ else
+ sh run-pub "$PRODUCER_ARGS $@" > ${TEST_ID}_$i.pub.out 2>&1 &
+ fi
+ done
+}
+
+start_producers "-Daddress=$ADDRESS -Duse_unique_dest=$UNIQUE_DEST -Dmsg_count=$MSG_COUNT -Dmsg_size=$MSG_SIZE -Dwarmup_count=$WARMUP_MSG_COUNT -Dmsg_type=$MSG_TYPE -Dcon_count=$CON_COUNT $EXTRA_JVM_ARGS"
+