]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
config-test: refactor config test framework, add keyfile tests
authorVítězslav Kříž <vitezslav.kriz@nic.cz>
Mon, 11 Dec 2017 14:11:46 +0000 (15:11 +0100)
committerPetr Špaček <petr.spacek@nic.cz>
Tue, 23 Jan 2018 14:54:35 +0000 (15:54 +0100)
Config tests now have ability to run daemon with different arguments and
to check exit code.

30 files changed:
.luacheckrc
daemon/lua/config.lua
daemon/lua/trust_anchors.lua.in
modules/hints/tests/hints.test.lua [moved from modules/hints/hints_test.lua with 85% similarity]
modules/hints/tests/hints_test.zone [moved from modules/hints/hints_test.zone with 100% similarity]
modules/policy/policy.test.lua [moved from modules/policy/policy_test.lua with 100% similarity]
modules/predict/tests/predict.test.lua [moved from modules/predict/predict_test.lua with 100% similarity]
tests/config/basic.test.lua [moved from tests/config/basic_test.lua with 100% similarity]
tests/config/cache.test.lua [moved from tests/config/cache_test.lua with 100% similarity]
tests/config/keyfile/bad_args.args [moved from tests/config/keyfile/bad_parameters.args with 100% similarity]
tests/config/keyfile/bad_args.returncode [moved from tests/config/keyfile/bad_parameters.returncode with 100% similarity]
tests/config/keyfile/bad_args.test.lua [new file with mode: 0644]
tests/config/keyfile/bad_parameters.cfg [deleted file]
tests/config/keyfile/load_ta.args [moved from tests/config/keyfile/test.args with 100% similarity]
tests/config/keyfile/load_ta.test.lua [new file with mode: 0644]
tests/config/keyfile/nonexist_keyfile1.args [new file with mode: 0644]
tests/config/keyfile/nonexist_keyfile1.returncode [new file with mode: 0644]
tests/config/keyfile/nonexist_keyfile1.test.lua [new file with mode: 0644]
tests/config/keyfile/nonexist_keyfile2.args [new file with mode: 0644]
tests/config/keyfile/nonexist_keyfile2.returncode [new file with mode: 0644]
tests/config/keyfile/nonexist_keyfile2.test.lua [new file with mode: 0644]
tests/config/keyfile/test.cfg [deleted file]
tests/config/runtest.sh
tests/config/test_config.mk
tests/config/tests/keyfile/nonexist_keyfile1.args [new file with mode: 0644]
tests/config/tests/keyfile/nonexist_keyfile1.returncode [new file with mode: 0644]
tests/config/tests/keyfile/nonexist_keyfile1.test.lua [new file with mode: 0644]
tests/config/tests/keyfile/nonexist_keyfile2.args [new file with mode: 0644]
tests/config/tests/keyfile/nonexist_keyfile2.returncode [new file with mode: 0644]
tests/config/tests/keyfile/nonexist_keyfile2.test.lua [new file with mode: 0644]

index 29e59a28e9edbde7acda7cba4852009b0214a69b..a6a3210868879005af1db100a6ab9a12a478ad69 100644 (file)
@@ -76,4 +76,4 @@ files['daemon/lua/kres-gen.lua'].ignore = {'631'} -- Allow overly long lines
 -- Tests and scripts can use global variables
 files['scripts'].ignore = {'111', '112', '113'}
 files['tests'].ignore = {'111', '112', '113'}
-files['modules/*/*_test.lua'].ignore = {'111', '112', '113', '122'}
\ No newline at end of file
+files['modules/**/*.test.lua'].ignore = {'111', '112', '113', '122'}
index 36f89e6727619ed61ae67457d574c0f7d7c7422f..7abf181845cad1a975e6e8c1d7633b3806dbeaf9 100644 (file)
@@ -22,7 +22,7 @@ end
 if not trust_anchors.keysets['\0'] and trust_anchors.keyfile_default then
        if io.open(trust_anchors.keyfile_default, 'r') then
                trust_anchors.config(trust_anchors.keyfile_default, true)
-       else 
+       else
                panic("cannot open default trust anchor file:'%s'",
                      trust_anchors.keyfile_default
                )
index d2755b80c8a6162b467cf92bece14c4e7cd9f5a0..43b8fb1f765e019297bd5665cca70c071a3b3df1 100644 (file)
@@ -401,7 +401,7 @@ local add_file = function (path, unmanaged)
        end
 
        -- Parse the file and check its sanity
-       local keyset, err = keyset_read(path)   
+       local keyset, err = keyset_read(path)
        if not keyset then
                panic("[ ta ] ERROR: failed to read anchors from '%s' (%s)", path, err)
        end
similarity index 85%
rename from modules/hints/hints_test.lua
rename to modules/hints/tests/hints.test.lua
index 2b8a1a73609ab70ecbdec0882f0a9254ab5e8a18..b60d2a364ef62236c182ebd6d2863c75eb52372d 100644 (file)
@@ -6,7 +6,7 @@ modules = { 'hints' }
 -- test for default configuration
 local function test_default()
        -- get loaded root hints and change names to lowercase
-       hints_data = utils.table_keys_to_lower(hints.root())
+       local hints_data = utils.table_keys_to_lower(hints.root())
 
        -- root hints loaded from default location
        -- check correct ip address of a.root-server.net
@@ -16,11 +16,11 @@ end
 -- test loading from config file
 local function test_custom()
        -- load custom root hints file with fake ip address for a.root-server.net
-       err_msg = hints.root_file(TEST_DIR .. 'hints_test.zone')
+       local err_msg = hints.root_file(TEST_DIR .. 'hints_test.zone')
        same(err_msg, '', 'load root hints from file')
 
        -- get loaded root hints and change names to lowercase
-       hints_data = utils.table_keys_to_lower(hints.root())
+       local hints_data = utils.table_keys_to_lower(hints.root())
        isnt(hints_data['a.root-servers.net.'], nil, 'can retrieve root hints')
 
        -- check loaded ip address of a.root-server.net
@@ -33,4 +33,4 @@ end
 return {
        test_default,
        test_custom
-}
\ No newline at end of file
+}
diff --git a/tests/config/keyfile/bad_args.test.lua b/tests/config/keyfile/bad_args.test.lua
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/config/keyfile/bad_parameters.cfg b/tests/config/keyfile/bad_parameters.cfg
deleted file mode 100644 (file)
index a45213d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-dofile('./test_utils.lua') -- load test utilities
-
-quit()
diff --git a/tests/config/keyfile/load_ta.test.lua b/tests/config/keyfile/load_ta.test.lua
new file mode 100644 (file)
index 0000000..bfe851b
--- /dev/null
@@ -0,0 +1,37 @@
+-- test fixtures
+
+-- count warning message, fail with other than allowed message
+warn_msg = {}
+overriding_msg="[ ta ] warning: overriding previously set trust anchors for ."
+warn_msg[overriding_msg] = 0
+function warn(fmt, ...)
+       msg = string.format(fmt, ...)
+       if warn_msg[msg] == nil then
+               fail(string.format("Not allowed warn message: %s", msg))
+       else
+               warn_msg[msg] = warn_msg[msg] + 1
+       end
+end
+
+-- tests
+
+boom(trust_anchors.add_file, {'nonwriteable/root.keys', false},
+     "Managed trust anchor in non-writeable directory")
+
+boom(trust_anchors.add_file, {'nonexist.keys', true},
+     "Nonexist unmanaged trust anchor file")
+
+trust_anchors.add_file('root2.keys', true)
+trust_anchors.add_file('root1.keys', true)
+is(warn_msg[overriding_msg], 1, "Warning message when override trust anchors")
+
+is(trust_anchors.keysets['\0'][1].key_tag, 19036,
+   "Loaded KeyTag from root1.keys")
+
+local function test_loading_from_cmdline()
+       is(trust_anchors.keysets['\0'][1].key_tag , 20326,
+          "Loaded KeyTag from cmdline file root2.keys")
+       is(warn_msg[overriding_msg], 2, "Warning message when override trust anchors")
+end
+
+return {test_loading_from_cmdline}
diff --git a/tests/config/keyfile/nonexist_keyfile1.args b/tests/config/keyfile/nonexist_keyfile1.args
new file mode 100644 (file)
index 0000000..6fead68
--- /dev/null
@@ -0,0 +1 @@
+--keyfile-ro nonexist
\ No newline at end of file
diff --git a/tests/config/keyfile/nonexist_keyfile1.returncode b/tests/config/keyfile/nonexist_keyfile1.returncode
new file mode 100644 (file)
index 0000000..56a6051
--- /dev/null
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/tests/config/keyfile/nonexist_keyfile1.test.lua b/tests/config/keyfile/nonexist_keyfile1.test.lua
new file mode 100644 (file)
index 0000000..be73f32
--- /dev/null
@@ -0,0 +1,2 @@
+-- simulate building without KEYFILE_DEFAULT
+trust_anchors.keyfile_default = nil
diff --git a/tests/config/keyfile/nonexist_keyfile2.args b/tests/config/keyfile/nonexist_keyfile2.args
new file mode 100644 (file)
index 0000000..6fead68
--- /dev/null
@@ -0,0 +1 @@
+--keyfile-ro nonexist
\ No newline at end of file
diff --git a/tests/config/keyfile/nonexist_keyfile2.returncode b/tests/config/keyfile/nonexist_keyfile2.returncode
new file mode 100644 (file)
index 0000000..56a6051
--- /dev/null
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/tests/config/keyfile/nonexist_keyfile2.test.lua b/tests/config/keyfile/nonexist_keyfile2.test.lua
new file mode 100644 (file)
index 0000000..bb2f98b
--- /dev/null
@@ -0,0 +1,2 @@
+-- simulate building with KEYFILE_DEFAULT
+trust_anchors.keyfile_default = "root1.keys"
diff --git a/tests/config/keyfile/test.cfg b/tests/config/keyfile/test.cfg
deleted file mode 100644 (file)
index 2f1ff20..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-dofile('./test_utils.lua') -- load test utilities
-
--- test fixtures
-
--- count warning message, fail with other than allowed message
-warn_msg = {}
-overriding_msg="[ ta ] warning: overriding previously set trust anchors for ."
-warn_msg[overriding_msg] = 0
-function warn(fmt, ...)        
-       msg = string.format(fmt, ...)
-       if warn_msg[msg] == nil then
-               fail("Not allowed warn message: %s", msg)
-       else 
-               warn_msg[msg] = warn_msg[msg] + 1
-       end
-end
-
--- test
-if pcall(trust_anchors.add_file, 'nonwriteable/root.keys', false) then
-       fail("Managed trsut anchor file in directory without write access should fail")
-end
-
-if pcall(trust_anchors.add_file, 'nonexist.keys', true) then
-       fail("Nonexist unmanaged file should fail")
-end
-
-trust_anchors.add_file('root2.keys', true)
-
-trust_anchors.add_file('root1.keys', true)
-if warn_msg[overriding_msg] ~= 1 then 
-       fail("Missing warning message for override: %s", overriding_msg)
-end
-
-if trust_anchors.keysets['\0'][1].key_tag ~= 19036 then
-       fail("Not loaded or loaded trust anchor from root1.keys")
-end
-
--- run test after processed config file
-ev = event.after(0, function (ev) 
-        -- check overiding trust anchor from cmdline args
-       if trust_anchors.keysets['\0'][1].key_tag ~= 20326 then
-               fail("Not loaded or loaded trust anchor from root2.keys")
-       end
-       if warn_msg[overriding_msg] ~= 2 then 
-               fail("Missing warning message for override: %s", overriding_msg)
-       end
-        quit()
-end)
index 48dad22e2fac474ab86419c881527d83e842db94..11d9b460b73e25679fdad11f25646fa8c5d7f7b5 100755 (executable)
@@ -1,6 +1,7 @@
 #!/bin/bash -e
-export SOURCE_PATH=$(cd "$(dirname "$0")" && pwd -P)
-export TEST_FILE=${2}
+export SOURCE_PATH="$(cd "$(dirname "$0")" && pwd -P)"
+export TEST_FILE="${2}"
+TEST_DIR="$(dirname $TEST_FILE)"
 export TMP_RUNDIR="$(mktemp -d)"
 export KRESD_NO_LISTEN=1
 function finish {
@@ -8,5 +9,15 @@ function finish {
 }
 trap finish EXIT
 
+
 echo "# $(basename ${TEST_FILE})"
-${DEBUGGER} ${1} -f 1 -c ${SOURCE_PATH}/test.cfg "${TMP_RUNDIR}"
\ No newline at end of file
+cp -a "${TEST_DIR}/"* "${TMP_RUNDIR}/"
+CMDLINE_ARGS="$(cat "${TEST_FILE%.test.lua}.args" 2>/dev/null || echo "")"
+EXPECTED_RETURNCODE="$(cat "${TEST_FILE%.test.lua}.returncode" 2>/dev/null || echo 0)"
+set +e
+${DEBUGGER} ${1} -f 1 -c ${SOURCE_PATH}/test.cfg $CMDLINE_ARGS "${TMP_RUNDIR}"
+RETCODE="$?"
+if [ "$RETCODE" -ne "$EXPECTED_RETURNCODE" ]; then
+       echo "Expected return code '$EXPECTED_RETURNCODE' got '$RETCODE'."
+fi
+test "$RETCODE" -eq "$EXPECTED_RETURNCODE"
index 28a34bfb481d8dc07da58fedc86dd842b8c4f4b1..58d7d1987d7f988740ca0f52ec1584b05d5182fa 100644 (file)
@@ -6,8 +6,10 @@
 # Check return code of kresd. Passed test have to call quit().
 
 tests_config := \
-       $(wildcard modules/*/*_test.lua) \
-       $(wildcard tests/config/*_test.lua)
+       $(wildcard modules/*/*.test.lua) \
+       $(wildcard modules/*/*/*.test.lua) \
+       $(wildcard tests/config/*.test.lua) \
+       $(wildcard tests/config/*/*.test.lua)
 
 define make_config_test
 $(1): check-install-precond
diff --git a/tests/config/tests/keyfile/nonexist_keyfile1.args b/tests/config/tests/keyfile/nonexist_keyfile1.args
new file mode 100644 (file)
index 0000000..6fead68
--- /dev/null
@@ -0,0 +1 @@
+--keyfile-ro nonexist
\ No newline at end of file
diff --git a/tests/config/tests/keyfile/nonexist_keyfile1.returncode b/tests/config/tests/keyfile/nonexist_keyfile1.returncode
new file mode 100644 (file)
index 0000000..56a6051
--- /dev/null
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/tests/config/tests/keyfile/nonexist_keyfile1.test.lua b/tests/config/tests/keyfile/nonexist_keyfile1.test.lua
new file mode 100644 (file)
index 0000000..be73f32
--- /dev/null
@@ -0,0 +1,2 @@
+-- simulate building without KEYFILE_DEFAULT
+trust_anchors.keyfile_default = nil
diff --git a/tests/config/tests/keyfile/nonexist_keyfile2.args b/tests/config/tests/keyfile/nonexist_keyfile2.args
new file mode 100644 (file)
index 0000000..6fead68
--- /dev/null
@@ -0,0 +1 @@
+--keyfile-ro nonexist
\ No newline at end of file
diff --git a/tests/config/tests/keyfile/nonexist_keyfile2.returncode b/tests/config/tests/keyfile/nonexist_keyfile2.returncode
new file mode 100644 (file)
index 0000000..56a6051
--- /dev/null
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/tests/config/tests/keyfile/nonexist_keyfile2.test.lua b/tests/config/tests/keyfile/nonexist_keyfile2.test.lua
new file mode 100644 (file)
index 0000000..bb2f98b
--- /dev/null
@@ -0,0 +1,2 @@
+-- simulate building with KEYFILE_DEFAULT
+trust_anchors.keyfile_default = "root1.keys"