#!/bin/bash
# -----------------------------------------------------------------------------
# Checks that all intents in the system have a given state.
# -----------------------------------------------------------------------------

[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
. $ONOS_ROOT/tools/build/envDefaults

aux=/tmp/stc-$$.log
trap "rm -f $aux 2>/dev/null" EXIT
target=${1:-$OCI}

echo onos-check-intent: $*

set -x

# $1: target host
# $2: intent key
# $3: intent state
# $4: number of expected intents
re='^[0-9]+$'
[[ $4 =~ $re ]] && numIntentsExpected=$4 # silently ignore if not positive

for i in {1..15}; do
    echo "Attempt #$i"
    onos $target "onos:intents" | tee $aux
    if  [ -z "$numIntentsExpected" ]; then
        ( cat $aux | grep "key=$2" | grep "state=$3" ) && cat $aux && exit 0
    else 
        # exit 0 only if expected number of intents (with required key)
        # are present and all intents match state (if expected no. of intents > 0)
        numIntents=`grep "key=$2" $aux | wc -l`
        numIntentsOfState=0
        [ $numIntentsExpected -gt 0 ] && numIntentsOfState=`grep "key=$2" $aux | grep "state=$3" | wc -l`
        [ $numIntents -eq $numIntentsOfState ] \
            && [ $numIntents -eq $numIntentsExpected ] \
            && cat $aux && exit 0
    fi 
    sleep 1
done

cat $aux
exit 1

