From: Marek VavruĊĦa Date: Thu, 19 Nov 2015 18:02:28 +0000 (+0100) Subject: tests: fixed deckard integration, doc, travis X-Git-Tag: v1.0.0-beta2~2^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa3b34655427c48e36a40412141c60cc1b04cf19;p=thirdparty%2Fknot-resolver.git tests: fixed deckard integration, doc, travis --- diff --git a/.travis.yml b/.travis.yml index 6b1185a64..2390bbe02 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,6 +35,7 @@ script: - make -j2 install COVERAGE=1 PREFIX=${HOME}/.local - ./daemon/kresd -h - make check COVERAGE=1 PREFIX=${HOME}/.local + - make check-integration COVERAGE=1 PREFIX=${HOME}/.local after_success: - test $TRAVIS_OS_NAME = linux && coveralls -i lib -i daemon -x ".c" --gcov-options '\-lp' sudo: false diff --git a/doc/build.rst b/doc/build.rst index 13e4d4a28..98407581f 100644 --- a/doc/build.rst +++ b/doc/build.rst @@ -151,6 +151,22 @@ Building extras The project can be built with code coverage tracking using the ``COVERAGE=1`` variable. +Running unit and integration tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The unit tests require cmocka_ and are executed with ``make check``. + +The integration tests use Deckard, the `DNS test harness `_. + +.. code-block:: bash + + $ make check-integration + +Note that the daemon and modules must be installed first before running integration tests, the reason is that the daemon +is otherwise unable to find and load modules. + +Read the `documentation `_ for more information about requirements, how to run it and extend it. + .. _Docker images: https://registry.hub.docker.com/u/cznic/knot-resolver .. _libuv: https://github.com/libuv/libuv .. _MSVC: https://msdn.microsoft.com/en-us/vstudio/hh386302.aspx @@ -172,3 +188,6 @@ The project can be built with code coverage tracking using the ``COVERAGE=1`` va .. _Python: https://www.python.org/ .. _boot2docker: http://boot2docker.io/ + +.. _deckard: https://gitlab.labs.nic.cz/knot/deckard +.. _deckard_doc: https://gitlab.labs.nic.cz/knot/resolver/blob/master/tests/README.rst diff --git a/tests/README.rst b/tests/README.rst index e540c9129..17f53e9f9 100644 --- a/tests/README.rst +++ b/tests/README.rst @@ -1,21 +1,19 @@ Unit tests ========== -The tests depend on cmocka_. +The unit tests depend on cmocka_. .. code-block:: bash - $ make check-unit - + $ make check .. todo:: Writing tests. Integration tests ================= -The tests depend on cwrap's `socket_wrapper`_, libfaketime_ and Python. -The libfaketime is included in ``contrib/libfaketime`` as it depends on rather latest version of it, -it is automatically synchronised with ``make``. +The integration tests are using Deckard, the `DNS test harness `_. +It requires Jinja2_ and Python, `socket_wrapper`_, libfaketime_ are embedded in the build (cmake is required for `socket_wrapper`_). Execute the tests by: @@ -23,8 +21,9 @@ Execute the tests by: $ make check-integration -.. todo:: Writing tests. +See deckard_ documentation on how to write additional tests. .. _cmocka: https://cmocka.org/ .. _`socket_wrapper`: https://cwrap.org/socket_wrapper.html .. _libfaketime: https://cwrap.org/socket_wrapper.html +.. _deckard: https://gitlab.labs.nic.cz/knot/deckard diff --git a/tests/integration.mk b/tests/integration.mk index b07920076..cf140f9d6 100644 --- a/tests/integration.mk +++ b/tests/integration.mk @@ -1,23 +1,12 @@ -# -# Integration tests -# - -# Path to scenario files +# Config TESTS=tests/integration/sets/resolver -# Path to daemon -DAEMON=kresd -# Template file name TEMPLATE=template/kresd.j2 -# Config file name -CONFIG=config # Targets deckard_DIR := tests/integration deckard := $(libfaketime_DIR)/deckard.py - libfaketime_DIR := contrib/libfaketime libfaketime := $(abspath $(libfaketime_DIR))/src/libfaketime$(LIBEXT).1 - libswrap_DIR := contrib/libswrap libswrap_cmake_DIR := $(libswrap_DIR)/obj libswrap=$(abspath $(libswrap_cmake_DIR))/src/libsocket_wrapper$(LIBEXT).0 @@ -36,19 +25,21 @@ $(deckard): @git submodule update --init $(libfaketime_DIR)/Makefile: @git submodule update --init -# Build libfaketime contrib + +# Build contrib libraries $(libfaketime): $(libfaketime_DIR)/Makefile @CFLAGS="" $(MAKE) -C $(libfaketime_DIR) $(libswrap_DIR): @git submodule update --init -$(libswrap_cmake_DIR):$(libswrap_DIR) - mkdir $(libswrap_cmake_DIR) +$(libswrap_cmake_DIR): $(libswrap_DIR) + @mkdir $(libswrap_cmake_DIR) $(libswrap_cmake_DIR)/Makefile: $(libswrap_cmake_DIR) @cd $(libswrap_cmake_DIR); cmake .. $(libswrap): $(libswrap_cmake_DIR)/Makefile - @CFLAGS="-O2 -g" $(MAKE) -C $(libswrap_cmake_DIR) + @CFLAGS="-O2 -g" $(MAKE) -s -C $(libswrap_cmake_DIR) +deckard: check-integration check-integration: $(deckard) $(libswrap) $(libfaketime) - $(preload_syms) tests/integration/deckard.py $(TESTS) $(DAEMON) $(TEMPLATE) $(CONFIG) $(ADDITIONAL) + @$(preload_LIBS) $(preload_syms) python tests/integration/deckard.py $(TESTS) $(abspath daemon/kresd) $(TEMPLATE) config -.PHONY: check-integration +.PHONY: deckard check-integration diff --git a/tests/tests.mk b/tests/tests.mk index b0fe33b9a..044cae309 100644 --- a/tests/tests.mk +++ b/tests/tests.mk @@ -17,12 +17,10 @@ endif # Integration tests ifeq ($(HAS_python)|$(HAS_socket_wrapper), yes|yes) include tests/integration.mk -else -$(warning python or socket_wrapper not found, skipping integration tests) endif # Targets -tests: check-unit check-integration +tests: check-unit tests-clean: $(foreach test,$(tests_BIN),$(test)-clean) .PHONY: tests tests-clean