make test: properly handle ctrl-c 97/7997/5
authorKlement Sekera <ksekera@cisco.com>
Fri, 11 Aug 2017 08:06:15 +0000 (10:06 +0200)
committerDave Wallace <dwallacelf@gmail.com>
Mon, 14 Aug 2017 15:21:43 +0000 (15:21 +0000)
Change-Id: Iab88886ebc1582626813777ea45ce97fc8e36443
Signed-off-by: Klement Sekera <ksekera@cisco.com>
test/Makefile
test/scripts/run_in_venv_with_cleanup.sh [moved from test/scripts/run_with_cleanup.sh with 67% similarity]
test/scripts/setsid_wrapper.sh [new file with mode: 0755]

index d48a6b5..33779dc 100644 (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
similarity index 67%
rename from test/scripts/run_with_cleanup.sh
rename to test/scripts/run_in_venv_with_cleanup.sh
index dcaa58b..541f584 100755 (executable)
@@ -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
diff --git a/test/scripts/setsid_wrapper.sh b/test/scripts/setsid_wrapper.sh
new file mode 100755 (executable)
index 0000000..e18b6ad
--- /dev/null
@@ -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