make test: properly handle ctrl-c

Change-Id: Iab88886ebc1582626813777ea45ce97fc8e36443
Signed-off-by: Klement Sekera <ksekera@cisco.com>
This commit is contained in:
Klement Sekera
2017-08-11 10:06:15 +02:00
committed by Dave Wallace
parent 3214dc3823
commit db4e84cf2f
3 changed files with 36 additions and 3 deletions

View File

@ -13,6 +13,14 @@ else
VPP_PIDS=$(shell pgrep -d, -x vpp_main)
endif
ifeq ($(DEBUG),gdb)
FORCE_FOREGROUND=1
else ifeq ($(DEBUG),gdbserver)
FORCE_FOREGROUND=1
else
FORCE_FOREGROUND=0
endif
verify-no-running-vpp:
@if [ "$(VPP_PIDS)" != "" ]; then \
echo; \
@ -76,7 +84,7 @@ $(PAPI_INSTALL_DONE): $(PIP_PATCH_DONE)
@touch $@
define retest-func
@bash -c "source $(PYTHON_VENV_PATH)/bin/activate && setsid scripts/run_with_cleanup.sh python run_tests.py -d $(TEST_DIR) $(UNITTEST_EXTRA_OPTS)"
@scripts/setsid_wrapper.sh $(FORCE_FOREGROUND) $(PYTHON_VENV_PATH)/bin/activate python run_tests.py -d $(TEST_DIR) $(UNITTEST_EXTRA_OPTS)
endef
.PHONY: sanity

View File

@ -17,9 +17,22 @@ atexit() {
exit $rv
}
trap "atexit" SIGINT SIGTERM
trap "atexit;" SIGINT SIGTERM
FORCE_FOREGROUND=$1
shift
source $1
shift
if [[ "${FORCE_FOREGROUND}" == "1" ]]
then
$*
else
$* &
wait
fi
$*
rv=$?
atexit
exit $rv

12
test/scripts/setsid_wrapper.sh Executable file
View File

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