104 lines
2.1 KiB
Bash
104 lines
2.1 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
CURDIR=`/bin/pwd`
|
||
|
BASEDIR=$(dirname $0)
|
||
|
ABSPATH=$(readlink -f $0)
|
||
|
ABSDIR=$(dirname $ABSPATH)
|
||
|
|
||
|
|
||
|
# set -x # to enable debug and verbose printing of each and every command
|
||
|
_DEBUG="on"
|
||
|
function DEBUG()
|
||
|
{
|
||
|
[ "$_DEBUG" == "on" ] && $@
|
||
|
}
|
||
|
|
||
|
|
||
|
function check_errs()
|
||
|
{
|
||
|
# Function. Parameter 1 is the return code
|
||
|
# Para. 2 is text to display on failure.
|
||
|
|
||
|
if [ "${1}" -ne "0" ]; then
|
||
|
echo "ERROR # ${1} : ${2}"
|
||
|
|
||
|
# if [ "$#" -eq "3"]; then
|
||
|
echo "logs "
|
||
|
cat /dev/shm/dtest/log.txt
|
||
|
# cat "${3}"
|
||
|
# fi
|
||
|
# as a bonus, make our script exit with the right error code.
|
||
|
# rm -rf /dev/shm/dtest >/dev/null 2>&1
|
||
|
killall -9 simulator >/dev/null 2>&1
|
||
|
exit ${1}
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
function run_single_test()
|
||
|
{
|
||
|
test=${1}
|
||
|
killall -9 simulator >/dev/null 2>&1
|
||
|
rm -rf /dev/shm/dtest >/dev/null 2>&1
|
||
|
mkdir /dev/shm/dtest
|
||
|
cd /dev/shm/dtest
|
||
|
|
||
|
/tmp/simulator --clog-level 2 $disableautomine >/dev/shm/dtest/dero.log 2>&1 &
|
||
|
disown
|
||
|
check_errs $? "Could not run simulator"
|
||
|
echo "Simulator started"
|
||
|
sleep 4
|
||
|
|
||
|
DEBUG echo "running test $test"
|
||
|
rm /dev/shm/dtest/log.txt >/dev/null 2>&1
|
||
|
rm /dev/shm/dtest/log.txt >/dev/null 2>&1
|
||
|
|
||
|
cd $test
|
||
|
$test/run_test.sh >/dev/shm/dtest/log.txt 2>&1
|
||
|
|
||
|
check_errs $? "test failed $test"
|
||
|
killall -9 simulator >/dev/null 2>&1
|
||
|
cd $CURDIR
|
||
|
}
|
||
|
|
||
|
function run_tests()
|
||
|
{
|
||
|
tests=$(find ${1} -mindepth 1 -maxdepth 1 -type d)
|
||
|
for test in $tests; do
|
||
|
run_single_test "$test"
|
||
|
done
|
||
|
}
|
||
|
|
||
|
cd $ABSDIR
|
||
|
go build -o /tmp/ ./cmd/...
|
||
|
check_errs $? "Could not build binaries"
|
||
|
cd $CURDIR
|
||
|
|
||
|
|
||
|
|
||
|
if [[ $# -eq 1 ]]; then # if user requsted single test
|
||
|
|
||
|
if [ -d "$ABSDIR/tests/normal/${1}" ]; then
|
||
|
run_single_test "$ABSDIR/tests/normal/${1}"
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
if [ -d "$ABSDIR/tests/specific/${1}" ]; then
|
||
|
disableautomine="--noautomine"
|
||
|
run_single_test "$ABSDIR/tests/specific/${1}"
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
echo "no such test found ${1}"
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
#we will first run specific/special test cases
|
||
|
disableautomine="--noautomine"
|
||
|
run_tests $ABSDIR/tests/specific
|
||
|
|
||
|
#we will first run normal test cases
|
||
|
disableautomine=""
|
||
|
run_tests $ABSDIR/tests/normal
|
||
|
|