#!/bin/bash
# -----------------------------------------------------------------------------
# Executes validation build using onos-test.tar.gz and onos.tar.gz on a remote
# proxy. It assumes that the tar.gz files are already available.
# -----------------------------------------------------------------------------

. $ONOS_ROOT/tools/build/envDefaults

onos-push-test-bits $OCN
onos-push-bits $OCN

ssh -t -t $ONOS_USER@$OCN "
    # Unpack the test tools
    cd /tmp; rm -fr \$(ls -Fd onos-test-*/)
    tar xf \$(basename $ONOS_TEST_TAR)

    # Source in the cell environment
    $(onos-cell | sed 's/^/export /')
    unset OCT

    # Set ONOS root to the top of the unrolled test directory and
    # prime the environment.
    cd \$(ls -Fd onos-test-*/)
    export ONOS_ROOT=\$PWD
    export ONOS_STAGE_ROOT=/tmp
    source \$ONOS_ROOT/tools/dev/bash_profile
    setPrimaryInstance 1
    onos-verify-cell   # TODO: remove once warden does this for us

    # Finally, execute required STC scenario(s) using the default topology
    topo default
    export stcDumpLogs=true
    export stcColor=$stcColor
    export TERM=vt100
    stc $1
"
status=$?

mkdir -p /tmp/stc
scp -r ${ONOS_USER}@${OCN}:/tmp/stc/* /tmp/stc/

exit $status