make test: kill all remaining subprocesses on exit
This change introduces a wrapper script which kills all processes in the same process group as itself (with the exception of the script). Using this script to run the unit tests should prevent stale processes left behind in some cases (e.g. when test framework crashes). Change-Id: If3b9201c06b87fa6be095721436893207d09b5e4 Signed-off-by: Klement Sekera <ksekera@cisco.com>
This commit is contained in:

committed by
Dave Wallace

parent
5391e19c9c
commit
94384e4d3a
@ -76,7 +76,7 @@ $(PAPI_INSTALL_DONE): $(PIP_PATCH_DONE)
|
||||
@touch $@
|
||||
|
||||
define retest-func
|
||||
@bash -c "source $(PYTHON_VENV_PATH)/bin/activate && python run_tests.py -d $(TEST_DIR) $(UNITTEST_EXTRA_OPTS)"
|
||||
@bash -c "source $(PYTHON_VENV_PATH)/bin/activate && setsid scripts/run_with_cleanup.sh python run_tests.py -d $(TEST_DIR) $(UNITTEST_EXTRA_OPTS)"
|
||||
endef
|
||||
|
||||
.PHONY: sanity
|
||||
|
25
test/scripts/run_with_cleanup.sh
Executable file
25
test/scripts/run_with_cleanup.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
rv=0
|
||||
|
||||
atexit() {
|
||||
group_id=`ps -p $$ -o pgid=`
|
||||
my_id=$$
|
||||
ids=`pgrep -g $group_id -d ' ' | sed "s/\b$my_id\b//g"`
|
||||
echo "Killing possible remaining process IDs: $ids"
|
||||
for id in $ids
|
||||
do
|
||||
if ps -p $id > /dev/null
|
||||
then
|
||||
kill -9 $id
|
||||
fi
|
||||
done
|
||||
exit $rv
|
||||
}
|
||||
|
||||
trap "atexit" SIGINT SIGTERM
|
||||
|
||||
$*
|
||||
rv=$?
|
||||
atexit
|
||||
exit $rv
|
Reference in New Issue
Block a user