| #!/bin/bash |
| # ----------------------------------------------------------------------------- |
| # Executes a command on all ONOS instances in a cluster and matches the output |
| # from each instance to the passed one. |
| # First argument is the command and it's arguments if needed, then --expect and |
| # after it the string of what the output should be. |
| # Example: |
| # onos-cluster-execute-expect fooCommand fooParamenter --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 |
| cmd="" |
| for a in ${*:1}; do shift; if [ "$a" = "--expect" ]; then break; fi; cmd="$cmd $a"; done |
| expect="${@: -1}" |
| echo $cmd |
| echo "expect ${expect}" |
| node_count=`onos $OC1 nodes | wc -l` |
| # FIMXE: This only works if nodes are sequential |
| # For dynamic clustering we could grab the IPs from 'nodes' |
| for i in `seq 1 $node_count`; do |
| node_var="OC$i" |
| onos ${!node_var} $cmd > $aux |
| cat $aux |
| grep -q $expect $aux || exit 1 |
| done |
| echo "expected value found" |
| exit 0 |