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