#!/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"
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:$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
