summaryrefslogtreecommitdiff
path: root/cpp/src/tests/start_cluster_hosts
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/tests/start_cluster_hosts')
-rwxr-xr-xcpp/src/tests/start_cluster_hosts41
1 files changed, 41 insertions, 0 deletions
diff --git a/cpp/src/tests/start_cluster_hosts b/cpp/src/tests/start_cluster_hosts
new file mode 100755
index 0000000000..1c32247050
--- /dev/null
+++ b/cpp/src/tests/start_cluster_hosts
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Start a cluster of brokers on local host, put the list of host port addresses
+# in cluster.ports
+#
+# Arguments: [-k] [-p port] HOST [HOST...]
+# -p port to start broker on, can be 0. Actual ports recorded in cluster.addr.
+# -k kill any qpidd processes owned by this user before starting.
+# Start a broker on each named host. Name a host twice to start multiple brokers.
+#
+# You must be able to ssh to each host and have primary group ais.
+# qpidd must exist in the same directory `pwd`/.. as on this host.
+#
+
+ADDR_FILE=cluster.addr
+
+while getopts "kp:" ARG ; do
+ case $ARG in
+ k) KILL=yes ; rm -f $ADDR_FILE ;;
+ p) PORT="$OPTARG" ;;
+ *) echo "Error parsing options: $ARG"; exit 1 ;;
+ esac
+done
+shift `expr $OPTIND - 1`
+test -n "$PORT" && PORTOPT="-p $PORT"
+test -n $KILL && KILL="../qpidd -q $PORTOPT ;"
+
+test -z "$*" && { echo Must specify at least one host; exit 1; }
+test -f $ADDR_FILE && { echo "$ADDR_FILE file already exists" ; exit 1; }
+CLUSTER=$USER # User name is cluster name.
+OPTS="-d $PORTOPT --load-module ../.libs/libqpidcluster.so --cluster-name=$CLUSTER --no-data-dir --auth=no --log-output=syslog"
+
+num=0
+for h in $*; do
+ num=`expr $num + 1` # Give a unique log prefix to each node.
+ cmd="cd $PWD; $KILL ../qpidd $OPTS --log-prefix $num.$h"
+ out=`ssh $h "$cmd"` || { echo $out ; exit 1; }
+ if [ "$PORT" = 0 ] ; then p=$out; else p=$PORT; fi
+ echo "$h $p" | tee -a $ADDR_FILE
+done
+