#!/bin/bash
# -----------------------------------------------------------------------------
# Starts or interacts with mininet in a remote screen session.
# -----------------------------------------------------------------------------

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

export MAX_WAIT=${ONOS_MN_TIMEOUT:-90}

cmd="$1" && shift
log="screenlog.0"
remote="$ONOS_USER@$OCN"
remote_scp="$ONOS_USER@[$OCN]"
screenversion=$(ssh $remote screen -v | sed -n -e 's/^Screen version \([0-9]*\.[0-9]*\).*$/\1/p')
# note: Screen version check for >4.04 may be inaccurate - The only sure thing is that v4.01
#       requires logname to NOT be given while in v4.05 it is optional (as long as -L is the
#       last parameter on the command line).
[[ $screenversion > "4.04" ]] && screenlog=$log
[[ $screenversion > "4.05" ]] && screenlog="-Logfile $log"
mininet="ssh -t -t $remote screen -L $screenlog -S mininet"

case $cmd in
send)
    $mininet -X "stuff \"$@\\n\"" 2>/dev/null
    ;;

sendAndExpect)
    cmd=""
    for a in $*; do shift; if [ "$a" = "--expect" ]; then break; fi; cmd="$cmd $a"; done
    $mininet -X "stuff \"$cmd\\n\"" 2>/dev/null
    onos-mininet expect "$@"
    ;;

wait)
    ssh $remote "
        let count=0
        sleep 1 && while test ! -f $log; do if test \$count -ge $MAX_WAIT; then exit 1; fi; sleep 1; let count=count+1; done
        while ! (tail -n1 $log | egrep -q '^[ ]*[0]*mininet>'); do if [ \$count -ge $MAX_WAIT ]; then exit 1; fi; sleep 1; done
        sleep ${1-:1}
    "
    ;;

expect)
    aux=/tmp/mininet.$$.log
    ssh $remote "
        sleep 1
        if [ ! -f $log ]; then exit 1; fi;
        let count=0
        while ! (tail -n1 $log | egrep -q '^[ ]*[0]*mininet>'); do if test \$count -ge $MAX_WAIT; then exit 1; fi; sleep 1; let count=count+1; done
        tac $log | awk '{ print \$0; } /^[ ]*[0]*mininet>/ { if (on) { exit 0; } on=1; }' | tac > $aux
        cat $aux
        set -x
        egrep \"$@\" $aux
    "
    ;;

attach)
    $mininet -x
    ;;

start)
    ssh $remote "rm -f $log; echo logfile flush 1 > ~/.screenrc"
    (
    $mininet "$@"
    scp $remote_scp:$log /tmp/mininet.log
    ssh $remote rm -f $log
    ) &
    ;;

stop)
    $mininet -X "stuff \"^C\\n\"" 2>/dev/null && \
        $mininet -X "stuff \"^C\\n\"" 2>/dev/null && \
        $mininet -X "stuff \"exit\\n\"" 2>/dev/null
    ssh -t -t $remote sudo mn -c

    ;;
cleanup)
    ssh -t -t $remote sudo mn -c
    ssh -t -t $remote "screen -list | grep mininet | cut -d. -f1 | tr -d '\t' | xargs kill -9; screen -wipe; exit 0"
    ;;
esac
