From: Vladimír Čunát Date: Fri, 22 Sep 2023 08:16:21 +0000 (+0200) Subject: tests: fix config.hints after view changes X-Git-Tag: v6.0.4~1^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ed882fb404c3f1eb68820d69a1ce28ca93f9ab3;p=thirdparty%2Fknot-resolver.git tests: fix config.hints after view changes It seems such an edge case that I chose to avoid the issue this way. --- diff --git a/daemon/lua/kres-gen-30.lua b/daemon/lua/kres-gen-30.lua index 60b023933..2e110d1c6 100644 --- a/daemon/lua/kres-gen-30.lua +++ b/daemon/lua/kres-gen-30.lua @@ -494,6 +494,7 @@ int kr_cache_remove_subtree(struct kr_cache *, const knot_dname_t *, _Bool, int) int kr_cache_commit(struct kr_cache *); uint32_t packet_ttl(const knot_pkt_t *); int kr_rules_init(const char *, size_t); +int kr_rules_commit(_Bool); int kr_view_insert_action(const char *, const char *, kr_proto_set, const char *); int kr_view_select_action(const struct kr_request *, knot_db_val_t *); int kr_rule_tag_add(const char *, kr_rule_tags_t *); diff --git a/daemon/lua/kres-gen-31.lua b/daemon/lua/kres-gen-31.lua index 8bbfbf67f..1b4e62bbc 100644 --- a/daemon/lua/kres-gen-31.lua +++ b/daemon/lua/kres-gen-31.lua @@ -494,6 +494,7 @@ int kr_cache_remove_subtree(struct kr_cache *, const knot_dname_t *, _Bool, int) int kr_cache_commit(struct kr_cache *); uint32_t packet_ttl(const knot_pkt_t *); int kr_rules_init(const char *, size_t); +int kr_rules_commit(_Bool); int kr_view_insert_action(const char *, const char *, kr_proto_set, const char *); int kr_view_select_action(const struct kr_request *, knot_db_val_t *); int kr_rule_tag_add(const char *, kr_rule_tags_t *); diff --git a/daemon/lua/kres-gen-32.lua b/daemon/lua/kres-gen-32.lua index 16b29d6d8..e6f7db459 100644 --- a/daemon/lua/kres-gen-32.lua +++ b/daemon/lua/kres-gen-32.lua @@ -495,6 +495,7 @@ int kr_cache_remove_subtree(struct kr_cache *, const knot_dname_t *, _Bool, int) int kr_cache_commit(struct kr_cache *); uint32_t packet_ttl(const knot_pkt_t *); int kr_rules_init(const char *, size_t); +int kr_rules_commit(_Bool); int kr_view_insert_action(const char *, const char *, kr_proto_set, const char *); int kr_view_select_action(const struct kr_request *, knot_db_val_t *); int kr_rule_tag_add(const char *, kr_rule_tags_t *); diff --git a/daemon/lua/kres-gen.sh b/daemon/lua/kres-gen.sh index dcc530aed..cd9a52cfd 100755 --- a/daemon/lua/kres-gen.sh +++ b/daemon/lua/kres-gen.sh @@ -295,6 +295,7 @@ ${CDEFS} ${LIBKRES} functions <<-EOF packet_ttl # New policy kr_rules_init + kr_rules_commit kr_view_insert_action kr_view_select_action kr_rule_tag_add diff --git a/lib/rules/api.h b/lib/rules/api.h index d6bf97a10..6ae1d8b15 100644 --- a/lib/rules/api.h +++ b/lib/rules/api.h @@ -51,7 +51,12 @@ int kr_rules_init_ensure(void); KR_EXPORT void kr_rules_deinit(void); -/** Commit or abort changes done to the rule DB so far. */ +/** Commit or abort changes done to the rule DB so far. + * + * Normally commit happens only on successfully loading a config file. + * However, an advanced user may get in trouble e.g. if calling resolve() from there, + * causing even an assertion failure. In that case they might want to commit explicitly. + */ KR_EXPORT int kr_rules_commit(bool accept); diff --git a/modules/hints/tests/hints.test.lua b/modules/hints/tests/hints.test.lua index b62e502dd..eda53c716 100644 --- a/modules/hints/tests/hints.test.lua +++ b/modules/hints/tests/hints.test.lua @@ -1,5 +1,6 @@ -- SPDX-License-Identifier: GPL-3.0-or-later local utils = require('test_utils') +local C = require('ffi').C -- setup resolver modules = { 'hints > iterate' } @@ -36,6 +37,9 @@ local function test_nxdomain() hints.config() -- clean start hints.use_nodata(false) hints.add_hosts('hints.test.hosts') + -- We commit manually, as in these tests we query before loading config finishes. + C.kr_rules_commit(true) + -- TODO: prefilling or some other way of getting NXDOMAIN (instead of SERVFAIL) utils.check_answer('bad name gives NXDOMAIN', 'badname.lan', kres.type.A, kres.rcode.SERVFAIL) @@ -50,6 +54,7 @@ local function test_nodata() hints.config() -- clean start hints.use_nodata(true) -- default ATM but let's not depend on that hints['myname.lan'] = '2001:db8::1' + C.kr_rules_commit(true) utils.check_answer('another type gives NODATA', 'myname.lan', kres.type.MX, utils.NODATA) utils.check_answer('record itself is OK',