]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
tests: fix config.hints after view changes
authorVladimír Čunát <vladimir.cunat@nic.cz>
Fri, 22 Sep 2023 08:16:21 +0000 (10:16 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Thu, 5 Oct 2023 10:30:48 +0000 (12:30 +0200)
It seems such an edge case that I chose to avoid the issue this way.

daemon/lua/kres-gen-30.lua
daemon/lua/kres-gen-31.lua
daemon/lua/kres-gen-32.lua
daemon/lua/kres-gen.sh
lib/rules/api.h
modules/hints/tests/hints.test.lua

index 60b023933cee54e8971abc34395f62f432a694c3..2e110d1c6d71a06338e45a951a850bedbf66ed87 100644 (file)
@@ -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 *);
index 8bbfbf67f3f71de5b53816e3933759b39c7132bc..1b4e62bbc83e28644da98519abaa519256c621fa 100644 (file)
@@ -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 *);
index 16b29d6d8976d5d0a6df4f1d08f856704e9bc2a3..e6f7db459df18b2d8c4d20900249ee02af0ede29 100644 (file)
@@ -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 *);
index dcc530aedaaa847e481aacc002639f354370977e..cd9a52cfd43cf123151d5c7fe404f2bda814ad49 100755 (executable)
@@ -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
index d6bf97a100e216795033463b075308d6274fdb48..6ae1d8b159aca57e169a4a0575821ab213d13c7b 100644 (file)
@@ -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);
 
index b62e502dd8e56a7f9b5b4671b6693120f75b23ca..eda53c71648f40065ec04e89182a153d8b5b7ed1 100644 (file)
@@ -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',