#!/bin/bash

# Copyright 2016, EMC, Inc.

# This script is used to launch automated testing from Jenkins

# Note that we use `"$@"' to let each command-line parameter expand to a
# separate word. The quotes around `$@' are essential!
# We need TEMP as the `eval set --' would nuke the return value of getopt.
TEMP=`getopt -o dins:r:o:t: --long dryrun,install,no-install,stack,release:,template:,script: -n '$0' -- "$@"`

if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi

# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"

# inbound parameters from environment
DRYRUN=${DRYRUN-false}
INSTALL=${INSTALL-true}
STACK_NUMBER=${STACK_NUMBER-}
RELEASE_NAME=${RELEASE_NAME-onrack-devel}
OVA_NAME=${OVA_NAME-None}
TEST_SCRIPT=${TEST_SCRIPT-autotest/run_onrack_smoke_test.py}
TEST_RUN="smoketest"

while true ; do
        case "$1" in
                -s|--stack) STACK_NUMBER=$2 ; shift 2 ;;
                -r|--release) RELEASE_NAME=$2 ; shift 2 ;;
                -o|--template) OVA_NAME=$2 ; shift 2 ;;
                -n|--no-install) INSTALL=false ; shift ;;
                -d|--dryrun) DRYRUN=true ; shift ;;
                -t|--script) TEST_SCRIPT=$2 ; shift 2 ;;
                --) shift; break ;;
                *) echo "Internal error!" ; exit 1 ;;
        esac
done

if [ -z "$STACK_NUMBER" ]
then
   echo "Must specify a stack (-s N) or \$STACK_NUMBER"
   exit 1
fi

set -x
STACK_NUMBER=$(echo "$STACK_NUMBER" | sed -r 's/^([0-9]+)?.*$/\1/')
set +x

if [ "$STACK_NUMBER" = "" ]
then
  echo "Must specify a valid stack number"
  exit 1
fi


# create virtual environment in tests/myenv_hwimobuild
echo "Installing Virtual Environment..."
rm -rf myenv_hwimobuild
virtualenv --no-site-packages myenv_hwimobuild
source myenv_hwimobuild/bin/activate
echo "Installing Python Modules..."
pip install -r requirements.txt > pipinstall.log
if [ $? != 0 ]
then
  cat pipinstall.log
fi

set -x
set -o pipefail
python run_tests.py -v 9 -xunit -test "$TEST_SCRIPT" -stack "$STACK_NUMBER" -template "$OVA_NAME" -version "$RELEASE_NAME" | tee test_console.log
STATUS=${PIPESTATUS[0]}
set +x

exit $STATUS

