make test: don't run if other vpp process runs 92/5592/3
authorKlement Sekera <ksekera@cisco.com>
Thu, 2 Mar 2017 07:16:20 +0000 (08:16 +0100)
committerOle Trøan <otroan@employees.org>
Mon, 6 Mar 2017 12:29:45 +0000 (12:29 +0000)
Check if there are existing vpp processes before running the test suite
and refuse to run if there are. This prevents the removal of other test
suite temporary files and also makes sure that if the machine is loaded
by (zombie) vpp processes, interactive tests (like bfd) won't fail.

Change-Id: I88a74098188cb3f51966de5db19d7f80f39e51e2
Signed-off-by: Klement Sekera <ksekera@cisco.com>
test/Makefile

index fd1bc0a..25c8e0a 100644 (file)
@@ -5,6 +5,24 @@ ifndef VPP_PYTHON_PREFIX
        $(error VPP_PYTHON_PREFIX is not set)
 endif
 
+.PHONY: verify-no-running-vpp
+
+ifdef VPP_ZOMBIE_NOCHECK
+VPP_PIDS=
+else
+VPP_PIDS=$(shell pgrep -d, -x vpp_main)
+endif
+
+verify-no-running-vpp:
+       @if [ "$(VPP_PIDS)" != "" ]; then \
+               echo; \
+               echo "*** Existing vpp processes detected (PID(s): $(VPP_PIDS)). Running tests under these conditions is not supported. ***"; \
+               echo; \
+               ps -fp $(VPP_PIDS);\
+               echo; \
+               false; \
+       fi
+
 UNITTEST_EXTRA_OPTS=""
 
 ifeq ($(FAILFAST),1)
@@ -44,10 +62,10 @@ define retest-func
        @bash -c "source $(PYTHON_VENV_PATH)/bin/activate && python run_tests.py discover $(UNITTEST_EXTRA_OPTS) -p test_\"*.py\""
 endef
 
-test: reset verify-python-path $(PAPI_INSTALL_DONE)
+test: verify-python-path verify-no-running-vpp reset $(PAPI_INSTALL_DONE)
        $(call retest-func)
 
-retest: reset verify-python-path
+retest: verify-python-path verify-no-running-vpp reset
        $(call retest-func)
 
 .PHONY: wipe doc
@@ -128,6 +146,8 @@ help:
        @echo "                             TEST='bfd.BFDAPITestCase.test_add_bfd' selects a single test named test_add_bfd from test_bfd.py/BFDAPITestCase"
        @echo "                             TEST='*.*.test_add_bfd' selects all test functions named test_add_bfd from all files/classes"
        @echo ""
+       @echo " VPP_ZOMBIE_NOCHECK=1 - skip checking for vpp (zombie) processes (CAUTION)"
+       @echo ""
        @echo "Creating test documentation"
        @echo " test-doc            - generate documentation for test framework"
        @echo " test-wipe-doc       - wipe documentation for test framework"