blob: 984761eb5f47e02f7cca4b595efbc7cac17304f2 [file] [log] [blame]
#!/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.
#
# 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