# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
-rm -f ./dig.out.*
rm -f ./*/named.conf
rm -f ./*/named.memstats
rm -f ./*/named.run
-rm -f ./ns*/named.lock
-rm -f ./ns*/_default.nzf
-rm -f ./ns*/_default.nzd*
-rm -f ./ns*/managed-keys.bind* ns*/*.mkeys*
+rm -f ./ns*/managed-keys.bind*
--- /dev/null
+#!/bin/sh
+
+# 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.
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+if test -n "$PYTHON"
+then
+ if $PYTHON -c "import dns" 2> /dev/null
+ then
+ :
+ else
+ echo_i "This test requires the dnspython module." >&2
+ exit 1
+ fi
+else
+ echo_i "This test requires Python and the dnspython module." >&2
+ exit 1
+fi
+
+exit 0
. $SYSTEMTESTTOP/conf.sh
-$SHELL clean.sh
copy_setports ns1/named.conf.in ns1/named.conf
copy_setports ns2/named.conf.in ns2/named.conf
+++ /dev/null
-#!/bin/sh
-
-# 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.
-
-. $SYSTEMTESTTOP/conf.sh
-
-dig_with_options() { "$DIG" +noadd +nosea +nostat +noquest +nocomm +nocmd -p "${PORT}" "$@"; }
-
-status=0
-t=0
-
-echo_i "testing min-cache-ttl"
-t=$((t+1))
-dig_with_options IN SOA min-example. @10.53.0.2 > dig.out.${t}
-TTL=$(< dig.out.${t} awk '{ print $2; }')
-[ "$TTL" -eq 60 ] || status=$((status+1))
-
-echo_i "testing min-ncache-ttl"
-t=$((t+1))
-dig_with_options IN MX min-example. @10.53.0.2 > dig.out.${t}
-TTL=$(< dig.out.${t} awk '{ print $2; }')
-[ "$TTL" -eq 30 ] || status=$((status+1))
-
-echo_i "testing max-cache-ttl"
-t=$((t+1))
-dig_with_options IN SOA max-example. @10.53.0.2 > dig.out.${t}
-TTL=$(< dig.out.${t} awk '{ print $2; }')
-[ "$TTL" -eq 120 ] || status=$((status+1))
-
-echo_i "testing max-ncache-ttl"
-t=$((t+1))
-dig_with_options IN MX max-example. @10.53.0.2 > dig.out.${t}
-TTL=$(< dig.out.${t} awk '{ print $2; }')
-[ "$TTL" -eq 60 ] || status=$((status+1))
-
-echo_i "exit status: $status"
-[ $status -eq 0 ] || exit 1
--- /dev/null
+# 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 pytest
+
+pytest.importorskip("dns")
+import dns.message
+import dns.query
+
+
+@pytest.mark.parametrize(
+ "qname,rdtype,expected_ttl",
+ [
+ ("min-example.", "SOA", 60),
+ ("min-example.", "MX", 30),
+ ("max-example.", "SOA", 120),
+ ("max-example.", "MX", 60),
+ ],
+)
+def test_cache_ttl(qname, rdtype, expected_ttl, named_port):
+ msg = dns.message.make_query(qname, rdtype)
+ response = dns.query.udp(msg, "10.53.0.2", timeout=10, port=named_port)
+ for rr in response.answer + response.authority:
+ assert rr.ttl == expected_ttl