From: Michał Kępień Date: Mon, 22 Dec 2025 10:58:39 +0000 (+0100) Subject: Add a reusable, bare-bones AsyncDnsServer X-Git-Tag: v9.21.17~14^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=440e510f75f386905512ff37f3274692b1f2e194;p=thirdparty%2Fbind9.git Add a reusable, bare-bones AsyncDnsServer Add bin/tests/system/ans.py, a bare-bones DNS server that can be used in system tests instead of full-blown named instances when a server is only required to return zone-based data. Where applicable, this reduces load on the test host and the amount of generated logs. --- diff --git a/bin/tests/system/ans.py b/bin/tests/system/ans.py new file mode 100644 index 00000000000..9dbdee11c1d --- /dev/null +++ b/bin/tests/system/ans.py @@ -0,0 +1,48 @@ +""" +Copyright (C) Internet Systems Consortium, Inc. ("ISC") + +SPDX-License-Identifier: MPL-2.0 + +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, you can obtain one at https://mozilla.org/MPL/2.0/. + +See the COPYRIGHT file distributed with this work for additional +information regarding copyright ownership. +""" + +""" +This is a bare-bones DNS server that only serves data from zone files. It is +meant to be used as a replacement for full-blown named instances in system +tests when a given server is only required to return zone-based data. + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + BEWARE! THIS SERVER DOES NOT NECESSARILY RETURN PROTOCOL-COMPLIANT ANSWERS! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +See AsyncDnsServer._abort_if_*() methods in isctests/asyncserver.py for more +details. Use a regular named instance for anything non-trivial. + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + DO NOT ADD CUSTOM LOGIC TO THIS FILE. IT IS ONLY MEANT TO BE SYMLINKED INTO +ansX/ SUBDIRECTORIES IN SYSTEM TESTS TO REDUCE THE AMOUNT OF BOILERPLATE CODE. +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +If you need to customize server behavior, implement it in a dedicated ans.py +server in the system test at hand. If an extension you are working on can be +useful in other system tests, please consider opening a merge request extending +isctest/asyncserver.py. +""" + +from isctest.asyncserver import ( + AsyncDnsServer, +) + + +def main() -> None: + server = AsyncDnsServer() + server.run() + + +if __name__ == "__main__": + main()