blob: 041352259783a40f67f008535770b59c660ec16b [file] [log] [blame]
#!/bin/bash
# -----------------------------------------------------------------------------
# Executes a command on the given ONOS instance and matches the output
# to the passed after X retries.
# First argument is the IP address of the machine to run the command on,
# then you pass the command and it's arguments if needed, then --expect and
# after it the string of what the output should be or --retry and the maximum
# retries with 5 seconds delay between them
# Example:
# onos-execute-expect 1.1.1.1 fooCommand fooParamenter --retry 5 --expect fooOutputString
# -----------------------------------------------------------------------------
[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
. $ONOS_ROOT/tools/build/envDefaults
aux=/tmp/stc/stc-$$.log
trap "rm -f $aux 2>/dev/null" EXIT
retry=0
cmd=""
expct=""
for ((i=1; i<=$#; i++))
do
if [ "${!i}" = "--expect" ]; then
next=$((i+1))
expct="${!next}"
i=$i+1
elif [ "${!i}" = "--retry" ]; then
next=$((i+1))
retry="${!next}"
i=$i+1
else
cmd="$cmd ${!i}";
fi
done
until [ $retry -eq -1 ]
do
onos $cmd > $aux
cat $aux
grep -q $expct $aux && echo "expected value found" && exit 0
retry=$[$retry-1]
sleep 5
done
exit 1