]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Rewrite dialup system test to pytest
authorMichal Nowak <mnowak@isc.org>
Tue, 23 Jan 2024 18:55:31 +0000 (19:55 +0100)
committerMichal Nowak <mnowak@isc.org>
Wed, 24 Jan 2024 12:41:53 +0000 (13:41 +0100)
bin/tests/system/dialup/tests.sh [deleted file]
bin/tests/system/dialup/tests_dialup_zone_transfer.py [new file with mode: 0644]
bin/tests/system/dialup/tests_sh_dialup.py [deleted file]

diff --git a/bin/tests/system/dialup/tests.sh b/bin/tests/system/dialup/tests.sh
deleted file mode 100644 (file)
index 943c8fb..0000000
+++ /dev/null
@@ -1,62 +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.
-
-set -e
-
-. ../conf.sh
-
-status=0
-
-rm -f dig.out.*
-
-DIGOPTS="+norec +tcp +noadd +nosea +nostat +noquest +nocmd -p ${PORT}"
-
-# Check the example. domain
-
-$DIG $DIGOPTS example. @10.53.0.1 soa >dig.out.ns1.test || ret=1
-echo_i "checking that first zone transfer worked"
-ret=0
-try=0
-while test $try -lt 120; do
-  $DIG $DIGOPTS example. @10.53.0.2 soa >dig.out.ns2.test || ret=1
-  if grep SERVFAIL dig.out.ns2.test >/dev/null; then
-    try=$((try + 1))
-    sleep 1
-  else
-    digcomp dig.out.ns1.test dig.out.ns2.test || ret=1
-    break
-  fi
-done
-echo_i "try $try"
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status + ret))
-
-echo_i "checking that second zone transfer worked"
-ret=0
-try=0
-while test $try -lt 120; do
-  $DIG $DIGOPTS example. @10.53.0.3 soa >dig.out.ns3.test || ret=1
-  if grep SERVFAIL dig.out.ns3.test >/dev/null; then
-    try=$((try + 1))
-    sleep 1
-  else
-    digcomp dig.out.ns1.test dig.out.ns3.test || ret=1
-    break
-  fi
-done
-echo_i "try $try"
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status + ret))
-
-echo_i "exit status: $status"
-[ $status -eq 0 ] || exit 1
diff --git a/bin/tests/system/dialup/tests_dialup_zone_transfer.py b/bin/tests/system/dialup/tests_dialup_zone_transfer.py
new file mode 100644 (file)
index 0000000..4a60c5f
--- /dev/null
@@ -0,0 +1,33 @@
+# 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
+
+import isctest
+
+import dns.message
+
+
+@pytest.mark.parametrize("ns", [2, 3])
+def test_dialup_zone_transfer(named_port, servers, ns):
+    msg = dns.message.make_query("example.", "SOA")
+    # Drop the RD flag from the query
+    msg.flags -= dns.flags.RD
+    ns1response = isctest.query.tcp(msg, "10.53.0.1")
+    with servers[f"ns{ns}"].watch_log_from_here() as watcher:
+        watcher.wait_for_line(
+            f"transfer of 'example/IN' from 10.53.0.{ns-1}#{named_port}: Transfer status: success",
+            timeout=90,
+        )
+    response = isctest.query.tcp(msg, f"10.53.0.{ns}")
+    if response.rcode() != dns.rcode.SERVFAIL:
+        assert response.answer == ns1response.answer
+        assert response.authority == ns1response.authority
diff --git a/bin/tests/system/dialup/tests_sh_dialup.py b/bin/tests/system/dialup/tests_sh_dialup.py
deleted file mode 100644 (file)
index fa28e86..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# 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.
-
-
-def test_dialup(run_tests_sh):
-    run_tests_sh()