]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Rewrite the ttl system test to pytest
authorMichal Nowak <mnowak@isc.org>
Thu, 4 May 2023 18:05:30 +0000 (20:05 +0200)
committerMichal Nowak <mnowak@isc.org>
Thu, 11 May 2023 14:53:04 +0000 (16:53 +0200)
(cherry picked from commit 0c05c3d97ba96eee79f51fc890d70ec8991b92df)

bin/tests/system/ttl/clean.sh
bin/tests/system/ttl/prereq.sh [new file with mode: 0644]
bin/tests/system/ttl/setup.sh
bin/tests/system/ttl/tests.sh [deleted file]
bin/tests/system/ttl/tests_cache_ttl.py [new file with mode: 0644]

index 17b09d77d42d8cbbd44e0c5f7dc7810707f7a7ce..3bb41d9247f1b2be1aea6627d056b6558fbf912b 100644 (file)
 # 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*
diff --git a/bin/tests/system/ttl/prereq.sh b/bin/tests/system/ttl/prereq.sh
new file mode 100644 (file)
index 0000000..aa97ae2
--- /dev/null
@@ -0,0 +1,31 @@
+#!/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
index a8e9d5f3738ec7a0ba8b7c14c7ecbb7bb36e5671..87c524fb1320ef58f9d69e8b9d17020a28f098c7 100644 (file)
@@ -13,6 +13,5 @@
 
 . $SYSTEMTESTTOP/conf.sh
 
-$SHELL clean.sh
 copy_setports ns1/named.conf.in ns1/named.conf
 copy_setports ns2/named.conf.in ns2/named.conf
diff --git a/bin/tests/system/ttl/tests.sh b/bin/tests/system/ttl/tests.sh
deleted file mode 100644 (file)
index ea32c1b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/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
diff --git a/bin/tests/system/ttl/tests_cache_ttl.py b/bin/tests/system/ttl/tests_cache_ttl.py
new file mode 100644 (file)
index 0000000..9025283
--- /dev/null
@@ -0,0 +1,32 @@
+# 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