aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/tools/test/bin/onos-check-apps
blob: 5d83e416aca2aeab4be9469a2bc8f52e83ceb9d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash
# -----------------------------------------------------------------------------
# Checks whether all and only the ONOS apps configured in ONOS_APPS are active.
# -----------------------------------------------------------------------------

[ ! -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 $aux.1 $aux.2 2>/dev/null" EXIT

for attempt in {1..3}; do
    onos ${1:-$OCI} "onos:apps -s -a" | grep -v /bin/client > $aux
    cat $aux

    # Normalize the installed apps
    cut -c7- $aux | grep -v '/bin/client' | cut -d\  -f1 | sort > $aux.1

    # Normalize the expected apps
    apps=${2:-$ONOS_APPS}
    apps=${apps:-drivers,openflow}
    (for app in ${apps//,/ }; do echo org.onosproject.$app; done) | sort > $aux.2

    # Check for differences
    case ${3:-equals} in
    equals) diff $aux.1 $aux.2;;
    includes) [ $(egrep -c -f $aux.2 $aux.1) -ge $(wc -l $aux.2 | sed "s|$aux.2||g") ];;
    excludes) ! egrep -f $aux.2 $aux.1;;
    esac

    [ $? -eq 0 ] && exit 0 || sleep 1
done

exit 1;