From a79f06c4463be77c9a041deeca9ce2df156a625c Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Wed, 23 Oct 2019 08:32:51 +0000 Subject: [PATCH] Use two auths to avoid serialization problems, as suggested by Habbie --- .../recursortests.py | 30 ++++++++++++------- .../test_OOOTCP.py | 16 ++++------ 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/regression-tests.recursor-dnssec/recursortests.py b/regression-tests.recursor-dnssec/recursortests.py index eceecdee4..4db54049e 100644 --- a/regression-tests.recursor-dnssec/recursortests.py +++ b/regression-tests.recursor-dnssec/recursortests.py @@ -115,8 +115,10 @@ sort.example. 3600 IN A 192.168.0.1 sort.example. 3600 IN A 17.238.240.5 sort.example. 3600 IN MX 25 mx -delay.example. 3600 IN NS ns1.delay.example. -ns1.delay.example. 3600 IN A {prefix}.16 +delay1.example. 3600 IN NS ns1.delay1.example. +ns1.delay1.example. 3600 IN A {prefix}.16 +delay2.example. 3600 IN NS ns1.delay2.example. +ns1.delay2.example. 3600 IN A {prefix}.17 """, 'secure.example': """ secure.example. 3600 IN SOA {soa} @@ -236,11 +238,18 @@ undelegated.insecure.example. 3600 IN NS ns1.undelegated.insecure.examp node1.undelegated.insecure.example. 3600 IN A 192.0.2.22 """, - 'delay.example': """ -delay.example. 3600 IN SOA {soa} -delay.example. 3600 IN NS n1.delay.example. -ns1.delay.example. 3600 IN A {prefix}.16 -*.delay.example. 0 LUA TXT ";" "local socket=require('socket')" "socket.sleep(tonumber(qname:getRawLabels()[1])/10)" "return 'a'" + 'delay1.example': """ +delay1.example. 3600 IN SOA {soa} +delay1.example. 3600 IN NS n1.delay1.example. +ns1.delay1.example. 3600 IN A {prefix}.16 +*.delay1.example. 0 LUA TXT ";" "local socket=require('socket')" "socket.sleep(tonumber(qname:getRawLabels()[1])/10)" "return 'a'" + """, + + 'delay2.example': """ +delay2.example. 3600 IN SOA {soa} +delay2.example. 3600 IN NS n1.delay2.example. +ns1.delay2.example. 3600 IN A {prefix}.17 +*.delay2.example. 0 LUA TXT ";" "local socket=require('socket')" "socket.sleep(tonumber(qname:getRawLabels()[1])/10)" "return 'a'" """ } @@ -322,9 +331,10 @@ PrivateKey: Ep9uo6+wwjb4MaOmqq7LHav2FLrjotVOeZg8JT1Qk04= 'zones': ['optout.example']}, '15': {'threads': 1, 'zones': ['insecure.optout.example', 'secure.optout.example', 'cname-secure.example']}, - # This zone need more threads so that the lua delay code does not cause serialization - '16': {'threads': 4, - 'zones': ['delay.example']} + '16': {'threads': 2, + 'zones': ['delay1.example']}, + '17': {'threads': 2, + 'zones': ['delay2.example']} } _auth_cmd = ['authbind', diff --git a/regression-tests.recursor-dnssec/test_OOOTCP.py b/regression-tests.recursor-dnssec/test_OOOTCP.py index 675f471a4..dade409d2 100644 --- a/regression-tests.recursor-dnssec/test_OOOTCP.py +++ b/regression-tests.recursor-dnssec/test_OOOTCP.py @@ -13,15 +13,10 @@ class testOOOTCP(RecursorTest): def generateRecursorConfig(cls, confdir): super(testOOOTCP, cls).generateRecursorConfig(confdir) - def primeNS(self): - query = dns.message.make_query('delay.example.', 'NS', want_dnssec=False) - self.sendUDPQuery(query) - def testOOOVeryBasic(self): - self.primeNS() expected = {} queries = [] - for zone in ['5.delay.example.', '0.delay.example.']: + for zone in ['5.delay1.example.', '0.delay2.example.']: expected[zone] = dns.rrset.from_text(zone, 0, dns.rdataclass.IN, 'TXT', 'a') query = dns.message.make_query(zone, 'TXT', want_dnssec=False) query.flags |= dns.flags.AD @@ -32,7 +27,7 @@ class testOOOTCP(RecursorTest): self.assertEqual(len(ress), len(expected)) i = 0 - for exp in [expected['0.delay.example.'], expected['5.delay.example.']]: + for exp in [expected['0.delay2.example.'], expected['5.delay1.example.']]: print('ress0') print(ress[i].answer[0].to_text()) print('exp') @@ -43,18 +38,17 @@ class testOOOTCP(RecursorTest): i = i + 1 def testOOOTimeout(self): - self.primeNS() expected = {} queries = [] - for zone in ['25.delay.example.', '1.delay.example.']: + for zone in ['25.delay1.example.', '1.delay2.example.']: query = dns.message.make_query(zone, 'TXT', want_dnssec=False) query.flags |= dns.flags.AD queries.append(query) ress = self.sendTCPQueries(queries) - + self.assertEqual(len(ress), 2) - exp = dns.rrset.from_text(zone, 0, dns.rdataclass.IN, 'TXT', 'a') + exp = dns.rrset.from_text('1.delay2.example.', 0, dns.rdataclass.IN, 'TXT', 'a') self.assertRRsetInAnswer(ress[0], exp) self.assertRcodeEqual(ress[1], dns.rcode.SERVFAIL) -- 2.40.0