X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2FMakefile;h=d4d74bb62b4765d0c8d8333be8fcbdee60e8dcc9;hb=5dffd84188855c1096fcd6d8bc4ed77a9de6debc;hp=7d9d4e92e89862210d0c7e08adb0c8705cf5b08b;hpb=4830e4f78fb8e46b23a1a0711cd06969a77d8d95;p=vpp.git diff --git a/test/Makefile b/test/Makefile index 7d9d4e92e89..d4d74bb62b4 100644 --- a/test/Makefile +++ b/test/Makefile @@ -20,7 +20,7 @@ FAILED_DIR=/tmp/vpp-failed-unittests/ PLUGIN_TEST_DIRS=$(shell find $(PLUGIN_SRC_DIR) -type d -name test -exec echo -n " -d {}" \;) CORE_TEST_DIRS=$(shell find $(WS_ROOT)/src -not \( -path $(INTERN_PLUGIN_SRC_DIR) -prune \) -type d -name test -exec echo -n " -d {}" \;) VPP_TEST_DIRS=$(shell ls -d $(TEST_DIR)$(PLUGIN_TEST_DIRS)$(CORE_TEST_DIRS) $(EXTERN_TESTS)) -VPP_TEST_SRC=$(shell for dir in $(VPP_TEST_DIRS) ; do ls $$dir/*.py; done) +VPP_TEST_SRC=$(shell for dir in $(VPP_TEST_DIRS) ; do ls $$dir/*.py 2>/dev/null; done) .PHONY: verify-no-running-vpp @@ -98,15 +98,21 @@ else PYTHON_INTERP=$(PYTHON) endif +empty:= +space:= $(empty) $(empty) +export PYTHONPATH=$(subst $(space),:,$(VPP_TEST_DIRS)) +export PYTHONPYCACHEPREFIX=$(TEST_BR)/pycache + PYTHON_VERSION=$(shell $(PYTHON_INTERP) -c 'import sys; print(sys.version_info.major)') -PIP_VERSION=19.1.1 -PIP_TOOLS_VERSION=3.8.0 # Keep in sync with requirements.txt +PIP_VERSION=20.1.1 +# Keep in sync with requirements.txt +PIP_TOOLS_VERSION=5.1.2 PYTHON_DEPENDS=requirements-$(PYTHON_VERSION).txt SCAPY_SOURCE=$(shell find $(VENV_PATH)/lib/python* -name site-packages) BUILD_COV_DIR=$(TEST_BR)/coverage -PIP_TOOLS_INSTALL_DONE=$(VENV_RUN_DIR)/pip-tools-install-$(PYTHON_VERSION).done -PIP_INSTALL_DONE=$(VENV_RUN_DIR)/pip-install-$(PYTHON_VERSION).done +PIP_TOOLS_INSTALL_DONE=$(VENV_RUN_DIR)/pip-tools-install-$(PYTHON_VERSION)-$(PIP_TOOLS_VERSION).done +PIP_INSTALL_DONE=$(VENV_RUN_DIR)/pip-install-$(PYTHON_VERSION)-$(PIP_VERSION).done PIP_PATCH_DONE=$(VENV_RUN_DIR)/pip-patch-$(PYTHON_VERSION).done PAPI_INSTALL_DONE=$(VENV_RUN_DIR)/papi-install-$(PYTHON_VERSION).done PAPI_PYTHON_SRC_DIR=$(WS_ROOT)/src/vpp-api/python @@ -115,12 +121,10 @@ PAPI_WIPE_DIST=$(WS_ROOT)/src/vpp-api/vapi/__pycache__ \ $(PAPI_PYTHON_SRC_DIR)/vpp_papi.egg-info \ $(PAPI_PYTHON_SRC_DIR)/vpp_papi/__pycache__ -PAPI_INSTALL_FLAGS=$(PIP_INSTALL_DONE) $(PIP_PATCH_DONE) $(PAPI_INSTALL_DONE) - $(PIP_TOOLS_INSTALL_DONE): @rm -rf $(VENV_PATH) @mkdir -p $(VENV_RUN_DIR) - @virtualenv $(VENV_PATH) -p $(PYTHON_INTERP) + @$(PYTHON_INTERP) -m venv $(VENV_PATH) # pip version pinning @bash -c "source $(VENV_PATH)/bin/activate && \ $(PYTHON_INTERP) -m pip install pip===$(PIP_VERSION)" @@ -128,12 +132,12 @@ $(PIP_TOOLS_INSTALL_DONE): $(PYTHON_INTERP) -m pip install pip-tools===$(PIP_TOOLS_VERSION)" @touch $@ -$(PYTHON_DEPENDS): $(PIP_TOOLS_INSTALL_DONE) requirements.txt +$(PYTHON_DEPENDS): requirements.txt @bash -c "source $(VENV_PATH)/bin/activate && \ CUSTOM_COMPILE_COMMAND='make test-refresh-deps (or update requirements.txt)' \ $(PYTHON_INTERP) -m piptools compile -q --generate-hashes requirements.txt --output-file $@" -$(PIP_INSTALL_DONE): $(PYTHON_DEPENDS) +$(PIP_INSTALL_DONE): $(PIP_TOOLS_INSTALL_DONE) $(PYTHON_DEPENDS) @bash -c "source $(VENV_PATH)/bin/activate && \ $(PYTHON_INTERP) -m piptools sync $(PYTHON_DEPENDS)" @touch $@ @@ -145,7 +149,7 @@ $(PIP_PATCH_DONE): $(PIP_INSTALL_DONE) echo Applying patch: $$(basename $$f) ; \ patch --forward -p1 -d $(SCAPY_SOURCE) < $$f ; \ retCode=$$?; \ - [ $$retCode -gt 0 ] && exit $$retCode; \ + [ $$retCode -gt 1 ] && exit $$retCode; \ done; \ touch $@ @@ -178,7 +182,7 @@ SANITY_IMPORT_VPP_PAPI_CMD=true SANITY_RUN_VPP_CMD=true else SANITY_IMPORT_VPP_PAPI_CMD=source $(VENV_PATH)/bin/activate && $(PYTHON_INTERP) $(BUILD_TEST_SRC)/sanity_import_vpp_papi.py -SANITY_RUN_VPP_CMD=source $(VENV_PATH)/bin/activate && PYTHONPATH=$(BUILD_TEST_SRC) $(PYTHON_INTERP) $(BUILD_TEST_SRC)/sanity_run_vpp.py +SANITY_RUN_VPP_CMD=source $(VENV_PATH)/bin/activate && $(PYTHON_INTERP) $(BUILD_TEST_SRC)/sanity_run_vpp.py endif ifndef TEST_JOBS @@ -194,7 +198,6 @@ PARALLEL_ILLEGAL=1 endif sanity: test-dep verify-no-running-vpp - @sys_req/dev_shm_size.sh @bash -c "test $(PARALLEL_ILLEGAL) -eq 0 ||\ (echo \"*******************************************************************\" &&\ echo \"* Sanity check failed, TEST_JOBS is not 1 or 'auto' and DEBUG, STEP or PROFILE is set\" &&\ @@ -219,8 +222,9 @@ ext-test-apps: make -C ext test-apps $(BUILD_TEST_SRC): verify-env + @rm -rf $@ @mkdir -p $@ - @for file in $(VPP_TEST_SRC); do if [ ! -e $(BUILD_TEST_SRC)/$$(basename $$file) ] ; then ln -s $$file $(BUILD_TEST_SRC) ; fi ; done + @for file in $(VPP_TEST_SRC); do if [ ! -L $$file ] && [ ! -e $(BUILD_TEST_SRC)/$$(basename $$file) ] ; then ln -s $$file $(BUILD_TEST_SRC) ; fi ; done $(FAILED_DIR): reset @mkdir -p $@ @@ -240,10 +244,10 @@ retest: verify-env sanity $(FAILED_DIR) shell: test-dep @echo "source $(VENV_PATH)/bin/activate;\ cd $(BUILD_TEST_SRC);\ - export PYTHONPATH=$(BUILD_TEST_SRC);\ + export PYTHONPATH=$(PYTHONPATH);\ export RND_SEED=$(RND_SEED);\ echo '***';\ - echo PYTHONPATH=$(BUILD_TEST_SRC);\ + echo PYTHONPATH=$(PYTHONPATH);\ echo RND_SEED=$(RND_SEED);\ echo VPP_BUILD_DIR=$(VPP_BUILD_DIR);\ echo VPP_BIN=$(VPP_BIN);\ @@ -268,7 +272,8 @@ reset: wipe: reset @make -C ext clean @rm -rf $(VENV_PATH) - @rm -rf $(patsubst %,%/__pycache__, $(VPP_TEST_DIRS) $(BUILD_TEST_SRC)) + @rm -rf $(patsubst %,%/__pycache__, $(VPP_TEST_DIRS)) + @rm -rf $(BUILD_TEST_SRC) $(TEST_DOC_BR): $(PIP_INSTALL_DONE) @mkdir -p $@ @@ -313,6 +318,21 @@ wipe-papi: wipe-all: wipe wipe-papi wipe-doc wipe-cov @rm -rf $(TEST_BR) +.PHONY: checkstyle-diff +checkstyle-diff: $(BUILD_TEST_SRC) $(PIP_INSTALL_DONE) + @bash -c "source $(VENV_PATH)/bin/activate &&\ + $(PYTHON_INTERP) -m pip install pycodestyle" + @bash -c "source $(VENV_PATH)/bin/activate &&\ + cd $(WS_ROOT) && git diff --name-only --no-color --relative HEAD~1 ':!*.patch' | grep '.py$$' | xargs -n 1 -I XXX \ + pycodestyle --show-source --ignore=W504,E126,E241,E226,E305,E704,E741,E722 -v XXX ||\ + (echo \"*********************************************************************\" &&\ + echo \"* Test framework PEP8 compliance check FAILED (checked changed files)\" &&\ + echo \"*********************************************************************\" &&\ + false)" + @echo "*********************************************************************" + @echo "* Test framework PEP8 compliance check passed (checked changed files)" + @echo "*********************************************************************" + .PHONY: checkstyle checkstyle: $(BUILD_TEST_SRC) $(PIP_INSTALL_DONE) @bash -c "source $(VENV_PATH)/bin/activate &&\ @@ -320,11 +340,11 @@ checkstyle: $(BUILD_TEST_SRC) $(PIP_INSTALL_DONE) @bash -c "source $(VENV_PATH)/bin/activate &&\ pycodestyle --show-source --ignore=W504,E126,E241,E226,E305,E704,E741,E722 -v $(BUILD_TEST_SRC)/*.py ||\ (echo \"*******************************************************************\" &&\ - echo \"* Test framework PEP8 compliance check FAILED \" &&\ + echo \"* Test framework PEP8 compliance check FAILED (checked all files)\" &&\ echo \"*******************************************************************\" &&\ false)" @echo "*******************************************************************" - @echo "* Test framework PEP8 compliance check passed" + @echo "* Test framework PEP8 compliance check passed (checked all files)" @echo "*******************************************************************" .PHONY: help @@ -381,8 +401,8 @@ help: @echo " TEST='*.*.test_add_bfd' selects all test functions named test_add_bfd from all files/classes" @echo "" @echo " VARIANT= - specify which march node variant to unit test" - @echo " e.g. VARIANT=avx2 test the avx2 march variants" - @echo " e.g. VARIANT=avx512 test the avx512 march variants" + @echo " e.g. VARIANT=skx test the skx march variants" + @echo " e.g. VARIANT=icl test the icl march variants" @echo "" @echo " VPP_ZOMBIE_NOCHECK=1 - skip checking for vpp (zombie) processes (CAUTION)" @echo " COREDUMP_SIZE= - pass as unix { coredump-size } argument to vpp" @@ -401,8 +421,6 @@ help: @echo "" @echo " SKIP_AARCH64=1 - skip tests that are failing on the ARM platorm in FD.io CI" @echo "" - @echo " SOCKET=1 - Communicate with VPP over Unix domain socket instead of SHM" - @echo "" @echo " RND_SEED=seed - Seed RND with given seed" @echo "" @echo "Creating test documentation"