]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
tests: fixed deckard integration, doc, travis
authorMarek Vavruša <marek.vavrusa@nic.cz>
Thu, 19 Nov 2015 18:02:28 +0000 (19:02 +0100)
committerMarek Vavruša <marek.vavrusa@nic.cz>
Thu, 19 Nov 2015 18:09:58 +0000 (19:09 +0100)
.travis.yml
doc/build.rst
tests/README.rst
tests/integration.mk
tests/tests.mk

index 6b1185a64f84a37db76ff2b3645178b19fabdd5b..2390bbe027590018c7bbd6e626c8c2eb8fa75775 100644 (file)
@@ -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
index 13e4d4a28aa2825db90233d193a2597ca18dbddb..98407581f350a0c26c59bcd32e85b62b0754243b 100644 (file)
@@ -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 <deckard>`_.
+
+.. 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 <deckard_doc>`_ 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
index e540c912986f5902899299ae508348eda379ed92..17f53e9f9b6b7a1f2e6ab635801779bed48d96bd 100644 (file)
@@ -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 <deckard>`_.
+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
index b079200761adbfffd31a5c04c28fb875737dba8c..cf140f9d6770bffc426c0e323ebc083c3c097ee2 100644 (file)
@@ -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
index b0fe33b9ad2889de43ebc2fb2656b4b75a866b9c..044cae309cd7442fc8b7312f05eed00db645ba9d 100644 (file)
@@ -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