blob: db9298e652ecff238822e75cbdb3bfa571326f55 [file] [log] [blame]
#!/bin/bash
# Simple script to time running the examples in various languages.
# Should be run in the build directory.
# Use command line to run different combinations.
# For example to run C broker, Go sender and C++ receiver pass arguments: C GO CPP
MESSAGES=100000
BLD=$(pwd)
C=$BLD/c/examples
C_BROKER="$C/broker"
C_SEND="$C/send localhost amqp x $MESSAGES"
C_RECV="$C/receive localhost amqp x $MESSAGES"
GO=$BLD/go/examples/electron
GO_BROKER="$GO/broker"
GO_SEND="$GO/send -count $MESSAGES /x"
GO_RECV="$GO/receive -count $MESSAGES -prefetch 100 /x"
CPP=$BLD/cpp/examples
CPP_BROKER="$CPP/broker"
CPP_SEND="$CPP/simple_send -a /x -m $MESSAGES"
CPP_RECV="$CPP/simple_recv -a /x -m $MESSAGES"
amqp_busy() { ss -tlp | grep $* amqp; }
start_broker() {
amqp_busy && { "amqp port busy"; exit 1; }
"$@" & BROKER_PID=$!
until amqp_busy -q; do sleep .1; done
}
stop_broker() {
kill $BROKER_PID
wait $BROKER_PID 2> /dev/null
}
run() {
echo
echo "run: $*"
BROKER=${!1}
SEND=${!2}
RECV=${!3}
start_broker $BROKER
time {
$RECV > /dev/null& RECV_PID=$!
$SEND
wait $RECV_PID
}
stop_broker
}
if test -z "$*"; then
# By default run the broker/sender/receiver combo for each language
run C_BROKER C_SEND C_RECV
run GO_BROKER GO_SEND GO_RECV
run CPP_BROKER CPP_SEND CPP_RECV
else
while test -n "$*"; do
run ${1}_BROKER ${2}_SEND ${3}_RECV
shift; shift; shift
done
fi