tests: make tests less make dependent

Implement command line argument parsing instead of passing arguments via
environment variables. Add script for running tests without having to
invoke make. Deprecate running tests via make.

Type: improvement
Change-Id: I2e3054a61a2ae25d460e9be00be7d7705fbf943e
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
This commit is contained in:
Klement Sekera
2021-05-31 16:08:53 +02:00
committed by Andrew Yourtchenko
parent 8ccc6b3507
commit b23ffd7ef2
48 changed files with 805 additions and 516 deletions

71
test/scripts/run.sh Executable file
View File

@ -0,0 +1,71 @@
#!/bin/bash
ff="0"
items=
for i in "$@"
do
case $i in
--venv-dir=*)
venv_dir="${i#*=}"
if [ -d $venv_dir ]
then
venv_dir=$(cd $venv_dir; pwd)
else
echo "ERROR: '$venv_dir' is not a directory"
exit 1
fi
items="$items --venv-dir=\"$venv_dir\""
;;
--vpp-ws-dir=*)
ws_dir="${i#*=}"
if [ -d $ws_dir ]
then
ws_dir=$(cd $ws_dir; pwd)
else
echo "ERROR: '$ws_dir' is not a directory"
exit 1
fi
items="$items --vpp-ws-dir=\"$ws_dir\""
;;
--force-foreground)
ff="1"
items="$items \"$i\""
;;
--vpp-tag=*)
tag="${i#*=}"
items="$items \"$i\""
;;
--python-opts=*)
python_opts="${i#*=}"
;;
*)
# unknown option - skip
items="$items \"$i\""
;;
esac
done
extra_args=""
if [ -z "$ws_dir" ]
then
ws_dir=$(pwd)
echo "Argument --vpp-ws-dir not specified, defaulting to '$ws_dir'"
extra_args="$extra_args --vpp-ws-dir=$ws_dir"
fi
if [ -z "$venv_dir" ]
then
venv_dir="$ws_dir/test/venv"
echo "Argument --venv-path not specified, defaulting to '$venv_dir'"
extra_args="$extra_args --venv-dir=$venv_dir"
fi
if [ -z "$tag" ]
then
tag="vpp_debug"
echo "Argument --vpp-tag not specified, defaulting to '$tag'"
extra_args="$extra_args --vpp-tag=$tag"
fi
eval set -- $items
$ws_dir/test/scripts/setsid_wrapper.sh $ws_dir/test/scripts/run_in_venv_with_cleanup.sh $ff $venv_dir/bin/activate python3 $python_opts $ws_dir/test/run_tests.py $extra_args $*

View File

@ -1,10 +1,15 @@
#!/bin/bash
if [[ "$1" == "1" ]]
cmd=$1
force_foreground=$2
shift
shift
if [[ "$force_foreground" == "1" ]]
then
setsid scripts/run_in_venv_with_cleanup.sh $*
setsid $cmd $force_foreground $*
else
setsid scripts/run_in_venv_with_cleanup.sh $* &
setsid $cmd $force_foreground $* &
pid=$!
trap "echo setsid_wrapper.sh: got signal, killing child pid ${pid}; kill ${pid}; sleep .1;" SIGINT SIGTERM
wait ${pid}