vlib: improve vlib "make test" code coverage
[vpp.git] / Makefile
index 290ec50..7f5092b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -20,6 +20,7 @@ SAMPLE_PLUGIN?=no
 STARTUP_DIR?=$(PWD)
 MACHINE=$(shell uname -m)
 SUDO?=sudo
+DPDK_CONFIG?=no-pci
 
 ,:=,
 define disable_plugins
@@ -67,7 +68,7 @@ DEB_DEPENDS += lcov chrpath autoconf indent clang-format libnuma-dev
 DEB_DEPENDS += python-all python3-all python3-setuptools python-dev
 DEB_DEPENDS += python-virtualenv python-pip libffi6 check
 DEB_DEPENDS += libboost-all-dev libffi-dev python3-ply libmbedtls-dev
-DEB_DEPENDS += cmake ninja-build uuid-dev python3-jsonschema
+DEB_DEPENDS += cmake ninja-build uuid-dev python3-jsonschema python3-yaml yamllint
 ifeq ($(OS_VERSION_ID),14.04)
        DEB_DEPENDS += libssl-dev
 else ifeq ($(OS_ID)-$(OS_VERSION_ID),debian-8)
@@ -88,6 +89,7 @@ RPM_DEPENDS += selinux-policy selinux-policy-devel
 RPM_DEPENDS += ninja-build
 RPM_DEPENDS += libuuid-devel
 RPM_DEPENDS += mbedtls-devel
+RPM_DEPENDS += yamllint
 
 ifeq ($(OS_ID),fedora)
        RPM_DEPENDS += dnf-utils
@@ -101,7 +103,7 @@ else
        RPM_DEPENDS += yum-utils
        RPM_DEPENDS += openssl-devel
        RPM_DEPENDS += python-devel python36-ply
-       RPM_DEPENDS += python36-devel python36-pip
+       RPM_DEPENDS += python3-devel python3-pip
        RPM_DEPENDS += python-virtualenv python36-jsonschema
        RPM_DEPENDS += devtoolset-7
        RPM_DEPENDS += cmake3
@@ -178,61 +180,63 @@ endef
 
 help:
        @echo "Make Targets:"
-       @echo " install-dep         - install software dependencies"
-       @echo " wipe                - wipe all products of debug build "
-       @echo " wipe-release        - wipe all products of release build "
-       @echo " build               - build debug binaries"
-       @echo " build-release       - build release binaries"
-       @echo " build-coverity      - build coverity artifacts"
-       @echo " rebuild             - wipe and build debug binares"
-       @echo " rebuild-release     - wipe and build release binares"
-       @echo " run                 - run debug binary"
-       @echo " run-release         - run release binary"
-       @echo " debug               - run debug binary with debugger"
-       @echo " debug-release       - run release binary with debugger"
-       @echo " test                - build and run (basic) functional tests"
-       @echo " test-debug          - build and run (basic) functional tests (debug build)"
-       @echo " test-all            - build and run (all) functional tests"
-       @echo " test-all-debug      - build and run (all) functional tests (debug build)"
-       @echo " test-gcov           - build and run functional tests (gcov build)"
-       @echo " test-shell          - enter shell with test environment"
-       @echo " test-shell-debug    - enter shell with test environment (debug build)"
-       @echo " test-wipe           - wipe files generated by unit tests"
-       @echo " retest              - run functional tests"
-       @echo " retest-debug        - run functional tests (debug build)"
-       @echo " test-help           - show help on test framework"
-       @echo " run-vat             - run vpp-api-test tool"
-       @echo " pkg-deb             - build DEB packages"
-       @echo " pkg-deb-debug       - build DEB debug packages"
-       @echo " vom-pkg-deb         - build vom DEB packages"
-       @echo " vom-pkg-deb-debug   - build vom DEB debug packages"
-       @echo " pkg-rpm             - build RPM packages"
-       @echo " install-ext-deps    - install external development dependencies"
-       @echo " ctags               - (re)generate ctags database"
-       @echo " gtags               - (re)generate gtags database"
-       @echo " cscope              - (re)generate cscope database"
-       @echo " checkstyle          - check coding style"
-       @echo " fixstyle            - fix coding style"
-       @echo " doxygen             - (re)generate documentation"
-       @echo " bootstrap-doxygen   - setup Doxygen dependencies"
-       @echo " wipe-doxygen        - wipe all generated documentation"
-       @echo " checkfeaturelist    - check FEATURE.yaml according to schema"
-       @echo " featurelist         - dump feature list in markdown"
+       @echo " install-dep          - install software dependencies"
+       @echo " wipe                 - wipe all products of debug build "
+       @echo " wipe-release         - wipe all products of release build "
+       @echo " build                - build debug binaries"
+       @echo " build-release        - build release binaries"
+       @echo " build-coverity       - build coverity artifacts"
+       @echo " rebuild              - wipe and build debug binaries"
+       @echo " rebuild-release      - wipe and build release binaries"
+       @echo " run                  - run debug binary"
+       @echo " run-release          - run release binary"
+       @echo " debug                - run debug binary with debugger"
+       @echo " debug-release        - run release binary with debugger"
+       @echo " test                 - build and run (basic) functional tests"
+       @echo " test-debug           - build and run (basic) functional tests (debug build)"
+       @echo " test-all             - build and run functional and extended tests"
+       @echo " test-all-debug       - build and run functional and extended tests (debug build)"
+       @echo " test-gcov            - build and run functional tests (gcov build)"
+       @echo " test-shell           - enter shell with test environment"
+       @echo " test-shell-debug     - enter shell with test environment (debug build)"
+       @echo " test-wipe            - wipe files generated by unit tests"
+       @echo " retest               - run functional tests"
+       @echo " retest-debug         - run functional tests (debug build)"
+       @echo " test-help            - show help on test framework"
+       @echo " run-vat              - run vpp-api-test tool"
+       @echo " pkg-deb              - build DEB packages"
+       @echo " pkg-deb-debug        - build DEB debug packages"
+       @echo " vom-pkg-deb          - build vom DEB packages"
+       @echo " vom-pkg-deb-debug    - build vom DEB debug packages"
+       @echo " pkg-rpm              - build RPM packages"
+       @echo " install-ext-deps     - install external development dependencies"
+       @echo " ctags                - (re)generate ctags database"
+       @echo " gtags                - (re)generate gtags database"
+       @echo " cscope               - (re)generate cscope database"
+       @echo " checkstyle           - check coding style"
+       @echo " fixstyle             - fix coding style"
+       @echo " doxygen              - (re)generate documentation"
+       @echo " bootstrap-doxygen    - setup Doxygen dependencies"
+       @echo " wipe-doxygen         - wipe all generated documentation"
+       @echo " checkfeaturelist     - check FEATURE.yaml according to schema"
+       @echo " featurelist          - dump feature list in markdown"
+       @echo " json-api-files       - (re)-generate json api files"
+       @echo " json-api-files-debug - (re)-generate json api files for debug target"
        @echo " docs                 - Build the Sphinx documentation"
-       @echo " docs-venv         - Build the virtual environment for the Sphinx docs"
-       @echo " docs-clean        - Remove the generated files from the Sphinx docs"
-       @echo " test-doc            - generate documentation for test framework"
-       @echo " test-wipe-doc       - wipe documentation for test framework"
-       @echo " test-cov            - generate code coverage report for test framework"
-       @echo " test-wipe-cov       - wipe code coverage report for test framework"
-       @echo " test-checkstyle     - check PEP8 compliance for test framework"
-       @echo " test-refresh-deps   - refresh the Python dependencies for the tests"
+       @echo " docs-venv            - Build the virtual environment for the Sphinx docs"
+       @echo " docs-clean           - Remove the generated files from the Sphinx docs"
+       @echo " test-doc             - generate documentation for test framework"
+       @echo " test-wipe-doc        - wipe documentation for test framework"
+       @echo " test-cov             - generate code coverage report for test framework"
+       @echo " test-wipe-cov        - wipe code coverage report for test framework"
+       @echo " test-checkstyle      - check PEP8 compliance for test framework"
+       @echo " test-refresh-deps    - refresh the Python dependencies for the tests"
        @echo ""
        @echo "Make Arguments:"
        @echo " V=[0|1]                  - set build verbosity level"
        @echo " STARTUP_CONF=<path>      - startup configuration file"
        @echo "                            (e.g. /etc/vpp/startup.conf)"
-       @echo " STARTUP_DIR=<path>       - startup drectory (e.g. /etc/vpp)"
+       @echo " STARTUP_DIR=<path>       - startup directory (e.g. /etc/vpp)"
        @echo "                            It also sets STARTUP_CONF if"
        @echo "                            startup.conf file is present"
        @echo " GDB=<path>               - gdb binary to use for debugging"
@@ -421,6 +425,9 @@ test-all-debug:
        $(eval EXTENDED_TESTS=yes)
        $(call test,vpp,vpp_debug,test)
 
+papi-wipe:
+       @make -C test papi-wipe
+
 test-help:
        @make -C test help
 
@@ -534,6 +541,12 @@ dpdk-install-dev:
 install-ext-deps:
        make -C build/external install-$(PKG)
 
+json-api-files:
+       $(WS_ROOT)/src/tools/vppapigen/generate_json.py
+
+json-api-files-debug:
+       $(WS_ROOT)/src/tools/vppapigen/generate_json.py --debug-target
+
 ctags: ctags.files
        @ctags --totals --tag-relative -L $<
        @rm $<
@@ -546,14 +559,26 @@ cscope: cscope.files
 
 checkstyle:
        @build-root/scripts/checkstyle.sh
+       yamllint $(WS_ROOT)/src
 
 fixstyle:
        @build-root/scripts/checkstyle.sh --fix
 
-featurelist:
+# necessary because Bug 1696324 - Update to python3.6 breaks PyYAML dependencies
+# Status:      CLOSED CANTFIX
+# https://bugzilla.redhat.com/show_bug.cgi?id=1696324
+centos-pyyaml:
+ifeq ($(OS_ID)-$(OS_VERSION_ID),centos-7)
+       @python3 -m pip install pyyaml
+endif
+ifeq ($(OS_ID)-$(OS_VERSION_ID),centos-8)
+       @sudo -E yum install $(CONFIRM) python3-pyyaml
+endif
+
+featurelist: centos-pyyaml
        @build-root/scripts/fts.py --all --markdown
 
-checkfeaturelist:
+checkfeaturelist: centos-pyyaml
        @build-root/scripts/fts.py --validate --git-status
 
 #
@@ -594,7 +619,7 @@ docs: $(DOCS_DIR)
 docs-clean:
        @($(SPHINX_SCRIPTS_DIR)/sphinx-make.sh clean)
 
-verify: install-dep $(BR)/.deps.ok install-ext-deps
+pkg-verify: install-dep $(BR)/.deps.ok install-ext-deps
        $(call banner,"Building for PLATFORM=vpp using gcc")
        @make -C build-root PLATFORM=vpp TAG=vpp wipe-all install-packages
        $(call banner,"Building sample-plugin")
@@ -609,7 +634,14 @@ ifeq ($(OS_ID),ubuntu)
        $(call banner,"Building VOM $(PKG) package")
        @make vom-pkg-deb
 endif
-ifeq ($(OS_ID)-$(OS_VERSION_ID),ubuntu-18.04)
+
+MAKE_VERIFY_GATE_OS ?= ubuntu-18.04
+verify: pkg-verify
+ifeq ($(OS_ID)-$(OS_VERSION_ID),$(MAKE_VERIFY_GATE_OS))
+       $(call banner,"Testing vppapigen")
+       @src/tools/vppapigen/test_vppapigen.py
        $(call banner,"Running tests")
        @make COMPRESS_FAILED_TEST_LOGS=yes RETRIES=3 test
+else
+       $(call banner,"Skipping tests. Tests under 'make verify' supported on $(MAKE_VERIFY_GATE_OS)")
 endif