bind9/bin/tests/system/sfcache/tests_sfcache.py
Nicki Křížek ce385d8100 Remove compatibility hacks for dnspython<2.7.0
The minimum required dnspython version is now 2.7.0 and those
compatibility hacks can be dropped.
2026-01-21 16:07:31 +01:00

51 lines
1.7 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 time
from dns.edns import EDECode
import isctest
def check_sfcache_ede(ns, ede):
msg = isctest.query.create("foo.example.", "A")
res = isctest.query.udp(msg, ns.ip)
isctest.check.servfail(res)
if ede:
# The SERVFAIL is cached, so now it shows up the EDE CACHED_ERROR, but not the DNSKEY_MISSING.
isctest.check.ede(res, EDECode.CACHED_ERROR)
else:
# example. domain DNSSEC is misconfigured on ns2, as it have two ZSK but no KSK. As a result, the DNSKEY for example. can't be found.
isctest.check.ede(res, EDECode.DNSKEY_MISSING)
def test_sfcache_ede(ns5, templates):
# Reconfigure the server so servfail-ttl is 1 second
templates.render("ns5/named.conf", {"servfail_ttl": 1})
with ns5.watch_log_from_here() as watcher:
ns5.rndc("reload")
watcher.wait_for_line("running")
# First query do not have a cached SERVFAIL, no EDE
check_sfcache_ede(ns5, False)
# Immediates next queries are cached SERVFAIL, EDE present
check_sfcache_ede(ns5, True)
check_sfcache_ede(ns5, True)
# Wait enough time so we know he cached SERVFAIL is removed
time.sleep(2)
# And again, first query is not cached, subsequent ones are.
check_sfcache_ede(ns5, False)
check_sfcache_ede(ns5, True)
check_sfcache_ede(ns5, True)