| #!/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 |
| |
| |