mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-24 15:47:18 -04:00
Replace custom DNS servers used in the "qmin" system test with new code based on the isctest.asyncserver module. The revised code employs zone files and a limited amount of custom logic, which massively improves test readability and maintainability, extends logging, and fixes non-compliant replies sent by some of the custom servers in response to certain queries (e.g. AA=0 in authoritative empty non-terminal responses, non-glue address records in ADDITIONAL section).
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""
|
|
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.
|
|
"""
|
|
|
|
import dns.rcode
|
|
|
|
from isctest.asyncserver import AsyncDnsServer
|
|
|
|
from qmin_ans import DelayedResponseHandler, EntRcodeChanger, QueryLogHandler
|
|
|
|
|
|
class QueryLogger(QueryLogHandler):
|
|
domains = ["8.2.6.0.1.0.0.2.ip6.arpa.", "a.b.stale.", "zoop.boing.good."]
|
|
|
|
|
|
class ZoopBoingBadHandler(EntRcodeChanger):
|
|
domains = ["zoop.boing.bad."]
|
|
rcode = dns.rcode.NXDOMAIN
|
|
|
|
|
|
class ZoopBoingUglyHandler(EntRcodeChanger):
|
|
domains = ["zoop.boing.ugly."]
|
|
rcode = dns.rcode.FORMERR
|
|
|
|
|
|
class ZoopBoingSlowHandler(DelayedResponseHandler):
|
|
domains = ["zoop.boing.slow."]
|
|
delay = 0.4
|
|
|
|
|
|
if __name__ == "__main__":
|
|
server = AsyncDnsServer()
|
|
server.install_response_handler(QueryLogger())
|
|
server.install_response_handler(ZoopBoingBadHandler())
|
|
server.install_response_handler(ZoopBoingUglyHandler())
|
|
server.install_response_handler(ZoopBoingSlowHandler())
|
|
server.run()
|