#!/bin/bash

# exit on errors
set -eu -o pipefail

# initialize build environment
ONOS_ROOT=`pwd`
. tools/build/envDefaults

# initialize development environment for STC
export JAVA_HOME=
. tools/dev/bash_profile

PATH=$PATH:/home/jenkins/bin

# always free the cell when exiting
function cleanup {
  cell return jenkins-${ONOS_VERSION}
}

trap cleanup EXIT

# grab a cell to run on
cell borrow 30 3+1 jenkins-${ONOS_VERSION}

# build onos bits
onos-buck build onos

# set up STC parameters
topo default
export stcDumpLogs="true"
export stcColor="false"
export stcHaltOnError="false"
export TERM="vt100"

# run STC
stc setup && stc net-trellis-hag-smoke
