From d593af3a5f80547af1650223bae2840cdaff631d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20Bal=C3=A1=C5=BEik?= Date: Thu, 30 Oct 2025 14:08:21 +0100 Subject: [PATCH] Allow adding multiple ResponseHandlers at once Change this at call sites as well. --- bin/tests/system/chain/ans3/ans.py | 3 +-- bin/tests/system/cookie/cookie_ans.py | 16 ++++++++++------ bin/tests/system/dnssec/ans10/ans.py | 3 +-- bin/tests/system/isctest/asyncserver.py | 4 ++++ bin/tests/system/qmin/ans2/ans.py | 14 +++++++++----- bin/tests/system/qmin/ans3/ans.py | 12 ++++++++---- bin/tests/system/qmin/ans4/ans.py | 14 +++++++++----- bin/tests/system/rpzrecurse/ans5/ans.py | 3 +-- bin/tests/system/statistics/ans4/ans.py | 25 +++++++++++++------------ 9 files changed, 56 insertions(+), 38 deletions(-) diff --git a/bin/tests/system/chain/ans3/ans.py b/bin/tests/system/chain/ans3/ans.py index 08dab08b31..3309ba286b 100755 --- a/bin/tests/system/chain/ans3/ans.py +++ b/bin/tests/system/chain/ans3/ans.py @@ -113,8 +113,7 @@ class Cve202125215(DomainHandler): def main() -> None: server = AsyncDnsServer(acknowledge_manual_dname_handling=True, default_aa=True) - server.install_response_handler(CnameThenDnameHandler()) - server.install_response_handler(Cve202125215()) + server.install_response_handlers([CnameThenDnameHandler(), Cve202125215()]) server.run() diff --git a/bin/tests/system/cookie/cookie_ans.py b/bin/tests/system/cookie/cookie_ans.py index bd2782d0d6..102832dd3f 100644 --- a/bin/tests/system/cookie/cookie_ans.py +++ b/bin/tests/system/cookie/cookie_ans.py @@ -205,10 +205,14 @@ class FallbackHandler(ResponseHandler): def cookie_server(evil: bool) -> AsyncDnsServer: server = AsyncDnsServer(acknowledge_tsig_dnspython_hacks=True) - server.install_response_handler(NsHandler(evil)) - server.install_response_handler(GlueHandler(evil)) - server.install_response_handler(TcpAHandler()) - server.install_response_handler(WithtsigUdpAHandler()) - server.install_response_handler(UdpAHandler()) - server.install_response_handler(FallbackHandler()) + server.install_response_handlers( + [ + NsHandler(evil), + GlueHandler(evil), + TcpAHandler(), + WithtsigUdpAHandler(), + UdpAHandler(), + FallbackHandler(), + ] + ) return server diff --git a/bin/tests/system/dnssec/ans10/ans.py b/bin/tests/system/dnssec/ans10/ans.py index 7c0798f2f8..24a4a0ea0a 100644 --- a/bin/tests/system/dnssec/ans10/ans.py +++ b/bin/tests/system/dnssec/ans10/ans.py @@ -56,8 +56,7 @@ class AddNsecToTxtHandler(ResponseHandler): def main() -> None: server = AsyncDnsServer() - server.install_response_handler(AddRrsigToAHandler()) - server.install_response_handler(AddNsecToTxtHandler()) + server.install_response_handlers([AddRrsigToAHandler(), AddNsecToTxtHandler()]) server.run() diff --git a/bin/tests/system/isctest/asyncserver.py b/bin/tests/system/isctest/asyncserver.py index 2448155403..ffe83ba61c 100644 --- a/bin/tests/system/isctest/asyncserver.py +++ b/bin/tests/system/isctest/asyncserver.py @@ -810,6 +810,10 @@ class AsyncDnsServer(AsyncServer): else: self._response_handlers.append(handler) + def install_response_handlers(self, handlers: List[ResponseHandler]) -> None: + for handler in handlers: + self.install_response_handler(handler) + def uninstall_response_handler(self, handler: ResponseHandler) -> None: """ Remove the specified handler from the list of response handlers. diff --git a/bin/tests/system/qmin/ans2/ans.py b/bin/tests/system/qmin/ans2/ans.py index 18f077781e..673b8ff37a 100644 --- a/bin/tests/system/qmin/ans2/ans.py +++ b/bin/tests/system/qmin/ans2/ans.py @@ -103,11 +103,15 @@ class StaleHandler(DomainHandler): def main() -> None: server = AsyncDnsServer() - server.install_response_handler(QueryLogger()) - server.install_response_handler(BadHandler()) - server.install_response_handler(UglyHandler()) - server.install_response_handler(SlowHandler()) - server.install_response_handler(StaleHandler()) + server.install_response_handlers( + [ + QueryLogger(), + BadHandler(), + UglyHandler(), + SlowHandler(), + StaleHandler(), + ] + ) server.run() diff --git a/bin/tests/system/qmin/ans3/ans.py b/bin/tests/system/qmin/ans3/ans.py index 6547dd2f9b..101ea2a14f 100644 --- a/bin/tests/system/qmin/ans3/ans.py +++ b/bin/tests/system/qmin/ans3/ans.py @@ -39,10 +39,14 @@ class ZoopBoingSlowHandler(DelayedResponseHandler): def main() -> None: server = AsyncDnsServer() - server.install_response_handler(QueryLogger()) - server.install_response_handler(ZoopBoingBadHandler()) - server.install_response_handler(ZoopBoingUglyHandler()) - server.install_response_handler(ZoopBoingSlowHandler()) + server.install_response_handlers( + [ + QueryLogger(), + ZoopBoingBadHandler(), + ZoopBoingUglyHandler(), + ZoopBoingSlowHandler(), + ] + ) server.run() diff --git a/bin/tests/system/qmin/ans4/ans.py b/bin/tests/system/qmin/ans4/ans.py index ebe500bad6..22334372be 100644 --- a/bin/tests/system/qmin/ans4/ans.py +++ b/bin/tests/system/qmin/ans4/ans.py @@ -85,11 +85,15 @@ class IckyPtangZoopBoingSlowHandler(DelayedResponseHandler): def main() -> None: server = AsyncDnsServer() - server.install_response_handler(QueryLogger()) - server.install_response_handler(StaleHandler()) - server.install_response_handler(IckyPtangZoopBoingBadHandler()) - server.install_response_handler(IckyPtangZoopBoingUglyHandler()) - server.install_response_handler(IckyPtangZoopBoingSlowHandler()) + server.install_response_handlers( + [ + QueryLogger(), + StaleHandler(), + IckyPtangZoopBoingBadHandler(), + IckyPtangZoopBoingUglyHandler(), + IckyPtangZoopBoingSlowHandler(), + ] + ) server.run() diff --git a/bin/tests/system/rpzrecurse/ans5/ans.py b/bin/tests/system/rpzrecurse/ans5/ans.py index 8c2f7dffc0..85acf15af5 100644 --- a/bin/tests/system/rpzrecurse/ans5/ans.py +++ b/bin/tests/system/rpzrecurse/ans5/ans.py @@ -50,8 +50,7 @@ class IgnoreNs(ResponseHandler): def main() -> None: server = AsyncDnsServer(default_aa=True, default_rcode=dns.rcode.NOERROR) - server.install_response_handler(ReplyA()) - server.install_response_handler(IgnoreNs()) + server.install_response_handlers([ReplyA(), IgnoreNs()]) server.run() diff --git a/bin/tests/system/statistics/ans4/ans.py b/bin/tests/system/statistics/ans4/ans.py index d3de81bc70..f353fc6e95 100644 --- a/bin/tests/system/statistics/ans4/ans.py +++ b/bin/tests/system/statistics/ans4/ans.py @@ -159,18 +159,19 @@ class FallbackHandler(ResponseHandler): def main() -> None: server = AsyncDnsServer(default_rcode=dns.rcode.NOERROR) - for handler in ( - BadGoodCnameHandler, - Cname1Handler, - Cname2Handler, - ExampleHandler, - FooInfoHandler, - NoDataHandler, - NxdomainHandler, - SubHandler, - FallbackHandler, - ): - server.install_response_handler(handler()) + server.install_response_handlers( + [ + BadGoodCnameHandler(), + Cname1Handler(), + Cname2Handler(), + ExampleHandler(), + FooInfoHandler(), + NoDataHandler(), + NxdomainHandler(), + SubHandler(), + FallbackHandler(), + ] + ) server.run()