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:

committed by
Andrew Yourtchenko

parent
8ccc6b3507
commit
b23ffd7ef2
71
test/scripts/run.sh
Executable file
71
test/scripts/run.sh
Executable 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 $*
|
@ -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}
|
||||
|
Reference in New Issue
Block a user