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