From 4025ecc524689b38527e31c1f38aa1ebb23e7bc3 Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Mon, 24 Mar 2025 13:10:28 +0100 Subject: [PATCH] rec: in test_SimpleDot.py make sure we have the root DNSKEY in cache, it might require TCP Previously we assumed we didn't need TCP at all. --- .../test_SimpleDoT.py | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/regression-tests.recursor-dnssec/test_SimpleDoT.py b/regression-tests.recursor-dnssec/test_SimpleDoT.py index 20eaea132d..30b14dd405 100644 --- a/regression-tests.recursor-dnssec/test_SimpleDoT.py +++ b/regression-tests.recursor-dnssec/test_SimpleDoT.py @@ -33,6 +33,25 @@ devonly-regression-test-mode @pytest.mark.external def testTXT(self): + query = dns.message.make_query('.', 'DNSKEY', want_dnssec=True) + query.flags |= dns.flags.AD + + # As this test uses external servers, be a more generous wrt timeouts than the default 2.0s + res = self.sendUDPQuery(query, timeout=5.0) + + self.assertMessageIsAuthenticated(res) + self.assertRcodeEqual(res, 0); + rec_controlCmd = [os.environ['RECCONTROL'], + '--config-dir=%s' % 'configs/' + self._confdir, + 'get tcp-outqueries'] + try: + ret = subprocess.check_output(rec_controlCmd, stderr=subprocess.STDOUT) + tcpcount = ret + + except subprocess.CalledProcessError as e: + print(e.output) + raise + expected = dns.rrset.from_text('dot-test-target.powerdns.org.', 0, dns.rdataclass.IN, 'TXT', 'https://github.com/PowerDNS/pdns/pull/12825') query = dns.message.make_query('dot-test-target.powerdns.org', 'TXT', want_dnssec=True) query.flags |= dns.flags.AD @@ -61,7 +80,7 @@ devonly-regression-test-mode 'get tcp-outqueries'] try: ret = subprocess.check_output(rec_controlCmd, stderr=subprocess.STDOUT) - self.assertEqual(ret, b'0\n') + self.assertEqual(ret, tcpcount) except subprocess.CalledProcessError as e: print(e.output) -- 2.47.3