From: Otto Moerbeek Date: Fri, 15 Mar 2024 15:32:49 +0000 (+0100) Subject: Add test to also test changing forwarder. Needs ENABLE_SUDO_TESTS X-Git-Tag: rec-5.1.0-alpha1~82^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=acdbb38ad6bb9b0512d105d5b0b1f95c4caca363;p=thirdparty%2Fpdns.git Add test to also test changing forwarder. Needs ENABLE_SUDO_TESTS Todo: modify tasks.py to add ENABLE_SUDO_TESTS to test run, like dnsdist does --- diff --git a/regression-tests.recursor-dnssec/test_NamedForward.py b/regression-tests.recursor-dnssec/test_NamedForward.py index 7bd805a723..018990b71b 100644 --- a/regression-tests.recursor-dnssec/test_NamedForward.py +++ b/regression-tests.recursor-dnssec/test_NamedForward.py @@ -1,6 +1,8 @@ import dns import os +import unittest import subprocess +import time from recursortests import RecursorTest class testNamedForward(RecursorTest): @@ -37,3 +39,42 @@ system-resolver-ttl=10 self.assertMessageIsAuthenticated(res) self.assertRRsetInAnswer(res, expected) self.assertMatchingRRSIGInAnswer(res, expected) + +@unittest.skipUnless('ENABLE_SUDO_TESTS' in os.environ, "sudo is not available") +class testNamedForwardWithChange(RecursorTest): + """ + This is forwarding test using a name as target and a changing resolve + """ + + _confdir = 'NamedForwardWithChange' + _config_template = """ +dnssec=off +forward-zones-recurse=.=namedforwardtest +devonly-regression-test-mode +system-resolver-ttl=1 + """ + + @classmethod + def generateRecursorConfig(cls, confdir): + subprocess.run(['sudo', 'sed', '-i', '-e', '/namedforwardtest/d', '/etc/hosts']) + subprocess.run(['sudo', 'sh', '-c', 'echo ' + cls._PREFIX + '.10 namedforwardtest >> /etc/hosts']) + super(testNamedForwardWithChange, cls).generateRecursorConfig(confdir) + + def testExampleNSQuery(self): + query = dns.message.make_query('example', 'NS', want_dnssec=False) + + expectedNS = dns.rrset.from_text('example.', 0, 'IN', 'NS', 'ns1.example.', 'ns2.example.') + + res = self.sendUDPQuery(query) + + self.assertRcodeEqual(res, dns.rcode.NOERROR) + self.assertRRsetInAnswer(res, expectedNS) + + subprocess.run(['sudo', 'sed', '-i', '-e', '/namedforwardtest/d', '/etc/hosts']) + subprocess.run(['sudo', 'sh', '-c', 'echo ' + self._PREFIX + '.12 namedforwardtest >> /etc/hosts']) + + # the change should get picked up by the systemn resolver update thread and the reload flushes the caches + time.sleep(2) + res = self.sendUDPQuery(query) + subprocess.run(['sudo', 'sed', '-i', '-e', '/namedforwardtest/d', '/etc/hosts']) + self.assertRcodeEqual(res, dns.rcode.SERVFAIL)