#==================================================================================
#
-# run all of the tests, building rmr before the first one if -B is on the command line.
+# Mnemonic: run_all.ksh (bash compatable)
+# Abstract: This script will drive all of the application tests and ensure
+# that the environment is set up as follows:
+#
+# Any deb packages which exist in BUILD_PATH are 'installed'
+# into a /tmp directory so that application builds can reference
+# them.
+#
+# References are set up to find the NNG library files in the
+# BUILD_PATH directory.
+#
+# The BUILD_PATH environment variable should be set, and if not the
+# two directories ../.build and ../build are checked for and used.
+# If the var is not set, and nether of these directories exists,
+# the tests will not be executed.
+#
+# At the moment, it assumes a deb based system for tests.
+#
+# Author: E. Scott Daniels
+# Date: 2019
+# -----------------------------------------------------------------------------------
function run_test {
if [[ -n $capture_file ]]
si_flag="" # eventually we'll default to -S to run SI tests over NNG tests
src_root="../.."
-if [[ -d $src_root/.build ]] # look for build directory in expected places
-then # run scripts will honour this
- export BUILD_PATH=$src_root/.build
+if [[ -z $BUILD_PATH ]] # if not explicitly set, assume one of our standard spots
+then
+ if [[ -d $src_root/.build ]] # look for build directory in expected places
+ then # run scripts will honour this
+ export BUILD_PATH=$src_root/.build
+ else
+ if [[ -d $src_root/build ]]
+ then
+ export BUILD_PATH=$src_root/build
+ else
+ echo "[ERR] BUILD_PATH not set and no logical build directory exists to use"
+ echo "[INFO] tried: $src_root/build and $src_root/.build"
+ exit 1
+ fi
+ fi
+ echo "[INFO] using discovered build directory: $BUILD_PATH"
else
- if [[ -d $src_root/build ]]
+ echo "[INFO] using externally supplied build directory: $BUILD_PATH"
+fi
+
+# when dpkg is present, unpack the debs in build so we can reference them. When not
+# we assume that the env vars are set properly.
+#
+if which dpkg >/dev/null 2>&1
+then
+ goober_dir=/tmp/PID$$.goober # private playpen for unpacking deb
+ rm -fr $goober_dir # this can fail and we don't care
+ if ! mkdir -p $goober_dir # but we care if this does
then
- export BUILD_PATH=$src_root/build
+ echo "[ERR] run_all: cannot set up working directory for lib/header files: $goober_dir"
+ exit 1
fi
+
+ for d in $BUILD_PATH/*.deb
+ do
+ echo "[INFO] run_all: unpacking $d"
+ dpkg -x $d ${goober_dir}
+ done
+
+ find ${goober_dir}
+
+ export C_INCLUDE_PATH=$BUILD_PATH/include:${goober_dir}/usr/local/include:$C_INCLUDE_PATH
+ export LIBRARY_PATH=$BUILD_PATH:$BUILD_PATH/.xbuild/lib:${goober_dir}/usr/local/lib:$LD_LIBRARY_PATH
+ export LD_LIBRARY_PATH=$LIBRARY_PATH
fi
+
if whence ksh >/dev/null 2>&1
then
shell=ksh
else
shell=bash
fi
+
+verbose=0
+purge=1
while [[ $1 == "-"* ]]
do
case $1 in
- -B) build="-B";;
+ -B) build="-b";; # build RMR without pulling
-e) capture_file=$2; >$capture_file; shift;;
-i) installed="-i";;
-N) si_flag="";; # turn on NNG tests (off si)
+ -P) build="-B";; # build RMR with a pull first
+ -p) purge=0;; # don't purge binaries to ensure rebuild happens
-S) si_flag="-S";; # turn on si based tests
-s) shell=$2; shift;;
+ -v) verbose=1;;
+
+ -\?) echo "usage: $0 [-B|-P] [-e err_file] [-i] [-N|-S] [-p] [-s shell] [-v]";;
*) echo "'$1' is not a recognised option and is ignored";;
esac
shift
done
+if (( verbose ))
+then
+ env | grep PATH
+ if [[ -n $goober_dir ]]
+ then
+ find $goober_dir
+ fi
+fi
+
export SHELL=$shell
+if (( purge ))
+then
+ rm -f sender sender_si receiver receiver_si
+fi
+
echo "----- app --------------------"
-if which ip >/dev/null 2>&1
+if which ip >/dev/null 2>&1 # ip command rquired for the app test; skip if not found
then
run_test run_app_test.ksh $si_flag -v $installed $build
+ build=""
fi
echo "----- multi ------------------"
-run_test run_multi_test.ksh $si_flag
+run_test run_multi_test.ksh $si_flag $build
echo "----- round robin -----------"
run_test run_rr_test.ksh $si_flag
echo "[FAIL] one or more application to application tests failed"
fi
+
+fm -fr goober_dir
exit $(( !! errors ))