You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2009/06/22 23:44:16 UTC
svn commit: r787415 - in /qpid/trunk/qpid/cpp/src/tests/cluster_test: ./
README.txt cluster_check cluster_start cluster_stop config_example.sh
perftest
Author: aconway
Date: Mon Jun 22 21:44:15 2009
New Revision: 787415
URL: http://svn.apache.org/viewvc?rev=787415&view=rev
Log:
Test script to run distributed perftest against a cluster.
Added:
qpid/trunk/qpid/cpp/src/tests/cluster_test/
qpid/trunk/qpid/cpp/src/tests/cluster_test/README.txt (with props)
qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_check (with props)
qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_start (with props)
qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_stop (with props)
qpid/trunk/qpid/cpp/src/tests/cluster_test/config_example.sh (with props)
qpid/trunk/qpid/cpp/src/tests/cluster_test/perftest (with props)
Added: qpid/trunk/qpid/cpp/src/tests/cluster_test/README.txt
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/cluster_test/README.txt?rev=787415&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/cluster_test/README.txt (added)
+++ qpid/trunk/qpid/cpp/src/tests/cluster_test/README.txt Mon Jun 22 21:44:15 2009
@@ -0,0 +1,20 @@
+Cluster test scripts.
+
+A set of scripts to start and stop cluster and test clients on
+multiple hosts using ssh.
+
+Pre-requisites: You must be
+ - set up for password-free ssh access to the test hosts.
+ - a member of the ais group on all the test hosts.
+
+Configuration:
+
+Copy defaults.sh to config.sh and edit the values as necessary.
+
+Test scripts:
+
+Test scripts use the functions in functions.sh to start & monitor
+cluster and clients.
+A test script can collect other scripts.
+
+
Propchange: qpid/trunk/qpid/cpp/src/tests/cluster_test/README.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: qpid/trunk/qpid/cpp/src/tests/cluster_test/README.txt
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_check
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_check?rev=787415&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_check (added)
+++ qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_check Mon Jun 22 21:44:15 2009
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Check that all members of a cluster are running
+
+source config.sh
+
+HOSTS=(`cat $CLUSTER_HOME/hosts`)
+PORTS=(`cat $CLUSTER_HOME/ports`)
+
+for ((i=0; i<${#HOSTS[*]}; ++i)); do
+ host=${HOSTS[$i]}
+ port=${PORTS[$i]}
+ ssh $host "$QPIDD -cp $port" > /dev/null || {
+ ret=1
+ echo "ERROR: broker not running $host:$port"
+ }
+done
+exit $ret
Propchange: qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_check
------------------------------------------------------------------------------
svn:executable = *
Added: qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_start
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_start?rev=787415&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_start (added)
+++ qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_start Mon Jun 22 21:44:15 2009
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Start a cluster
+#
+# Arguments: NAME HOST [host...]
+# Start a cluster called NAME with N nodes running on the given HOSTs
+# repeat the host name to run multiple brokers on one host. Use dynamic
+# ports.
+#
+# Log files, data directories and hosts/ports files are all stored under
+# $HOME/cluster_test/$NAME
+#
+
+source config.sh
+
+CLUSTER_NAME=`date +"${USER}_%F_%T"`
+HOSTS=($BROKER_HOSTS)
+for ((i = 0; i < ${#HOSTS[*]}; ++i)) ; do
+ host=${HOSTS[$i]}
+ datadir=$CLUSTER_HOME/broker$i
+ log=$datadir/qpidd.log
+ ssh $host "rm -rf $datadir; mkdir -p $datadir" || {
+ echo "ERROR: can't make data dir $datadir"; exit 1
+ }
+ port=`ssh $host "echo $QPIDD -dp0 --cluster-name=$CLUSTER_NAME \
+ --data-dir=$datadir \
+ --log-to-file=$log --log-prefix=broker$i \
+ $QPIDD_OPTS | newgrp ais"` || {
+ error "ERROR: can't start broker $i on $host"; exit 1;
+ }
+ PORTS="$PORTS $port"
+done
+
+echo "$BROKER_HOSTS" > $CLUSTER_HOME/hosts
+echo "$PORTS" > $CLUSTER_HOME/ports
+
+`dirname $0`/cluster_check $NAME
Propchange: qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_start
------------------------------------------------------------------------------
svn:executable = *
Added: qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_stop
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_stop?rev=787415&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_stop (added)
+++ qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_stop Mon Jun 22 21:44:15 2009
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Stop the cluster.
+
+source config.sh
+
+HOSTS=(`cat $CLUSTER_HOME/hosts`)
+PORTS=(`cat $CLUSTER_HOME/ports`)
+
+for ((i=0; i<${#HOSTS[*]}; ++i)); do
+ host=${HOSTS[$i]}
+ port=${PORTS[$i]}
+ ssh $host "$QPIDD -qp $port" > /dev/null || {
+ ret=1
+ echo "ERROR: stopping broker at $host:$port"
+ }
+done
+
+exit $ret
Propchange: qpid/trunk/qpid/cpp/src/tests/cluster_test/cluster_stop
------------------------------------------------------------------------------
svn:executable = *
Added: qpid/trunk/qpid/cpp/src/tests/cluster_test/config_example.sh
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/cluster_test/config_example.sh?rev=787415&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/cluster_test/config_example.sh (added)
+++ qpid/trunk/qpid/cpp/src/tests/cluster_test/config_example.sh Mon Jun 22 21:44:15 2009
@@ -0,0 +1,25 @@
+# Cluster configuration.
+
+# All output stored under $HOME/$CLUSTER_HOME.
+CLUSTER_HOME=$HOME/cluster_test
+
+# Hosts where brokers will be run. Repeat hostname to run multiple brokers on 1 host.
+BROKER_HOSTS="mrg22 mrg23 mrg24 mrg25 mrg26"
+
+# Hosts where clients will be run.
+CLIENT_HOSTS="$BROKER_HOSTS"
+
+# Paths to executables
+QPIDD=qpidd
+PERFTEST=perftest
+
+# Directory containing tests
+TESTDIR=/usr/bin
+
+# Options for qpidd, must be sufficient to load the cluster plugin.
+# Scripts will add --cluster-name, --daemon, --port and --log-to-file options here.
+QPIDD_OPTS=" \
+--auth=no \
+--log-enable=notice+ \
+--log-enable=debug+:cluster \
+"
Propchange: qpid/trunk/qpid/cpp/src/tests/cluster_test/config_example.sh
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: qpid/trunk/qpid/cpp/src/tests/cluster_test/config_example.sh
------------------------------------------------------------------------------
svn:executable = *
Added: qpid/trunk/qpid/cpp/src/tests/cluster_test/perftest
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/cluster_test/perftest?rev=787415&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/cluster_test/perftest (added)
+++ qpid/trunk/qpid/cpp/src/tests/cluster_test/perftest Mon Jun 22 21:44:15 2009
@@ -0,0 +1,34 @@
+#!/bin/sh
+# Run a distributed perftest against a cluster.
+# Args: npubs nsubs [perftest-options]
+
+source config.sh
+
+NPUBS=${1:-4} ; shift
+NSUBS=${1:-4} ; shift
+OPTS="--npubs $NPUBS --nsubs $NSUBS $*"
+
+CLIENTS=($CLIENT_HOSTS)
+BROKERS=(`cat $CLUSTER_HOME/hosts`)
+PORTS=(`cat $CLUSTER_HOME/ports`)
+
+start() {
+ client=${CLIENTS[i % ${#CLIENTS[*]}]}
+ broker=${BROKERS[i % ${#BROKERS[*]}]}
+ port=${PORTS[i % ${#PORTS[*]}]}
+ ssh -n $client $PERFTEST $OPTS $* -b $broker -p $port &
+ PIDS="$PIDS $!"
+}
+
+ssh ${CLIENTS[0]} $PERFTEST $OPTS --setup -b ${BROKERS[0]} -p${PORTS[0]}
+for (( i=0 ; i < $NPUBS ; ++i)); do start --publish; done
+for (( ; i < $NPUBS+$NSUBS ; ++i)); do start --subscribe; done
+ssh ${CLIENTS[0]} $PERFTEST $OPTS --control -b ${BROKERS[0]} -p${PORTS[0]}
+
+for pid in $PIDS; do
+ wait $pid || echo "ERROR: client process $pid failed"
+done
+
+`dirname $0`/cluster_check
+
+
Propchange: qpid/trunk/qpid/cpp/src/tests/cluster_test/perftest
------------------------------------------------------------------------------
svn:executable = *
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org