From 6c6580ea83e5673310d970cdc17207672d022bfc Mon Sep 17 00:00:00 2001 From: Michal Nowak Date: Tue, 23 Jan 2024 19:47:23 +0100 Subject: [PATCH 1/2] Speed up test by lowering "heartbeat-interval" to 1 --- bin/tests/system/dialup/ns1/named.conf.in | 2 +- bin/tests/system/dialup/ns2/named.conf.in | 2 +- bin/tests/system/dialup/ns3/named.conf.in | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/tests/system/dialup/ns1/named.conf.in b/bin/tests/system/dialup/ns1/named.conf.in index 4b8302bcfa..a9c6777509 100644 --- a/bin/tests/system/dialup/ns1/named.conf.in +++ b/bin/tests/system/dialup/ns1/named.conf.in @@ -21,7 +21,7 @@ options { pid-file "named.pid"; listen-on { 10.53.0.1; }; listen-on-v6 { none; }; - heartbeat-interval 2; + heartbeat-interval 1; recursion no; dnssec-validation no; }; diff --git a/bin/tests/system/dialup/ns2/named.conf.in b/bin/tests/system/dialup/ns2/named.conf.in index 382f5ce9a4..166b463189 100644 --- a/bin/tests/system/dialup/ns2/named.conf.in +++ b/bin/tests/system/dialup/ns2/named.conf.in @@ -21,7 +21,7 @@ options { pid-file "named.pid"; listen-on { 10.53.0.2; }; listen-on-v6 { none; }; - heartbeat-interval 2; + heartbeat-interval 1; recursion no; dnssec-validation no; }; diff --git a/bin/tests/system/dialup/ns3/named.conf.in b/bin/tests/system/dialup/ns3/named.conf.in index 054a65893c..31b9a128c3 100644 --- a/bin/tests/system/dialup/ns3/named.conf.in +++ b/bin/tests/system/dialup/ns3/named.conf.in @@ -21,7 +21,7 @@ options { pid-file "named.pid"; listen-on { 10.53.0.3; }; listen-on-v6 { none; }; - heartbeat-interval 2; + heartbeat-interval 1; recursion no; dnssec-validation no; }; From bc4c29888b364b8fe9f092adacbcfa6298269f33 Mon Sep 17 00:00:00 2001 From: Michal Nowak Date: Tue, 23 Jan 2024 19:55:31 +0100 Subject: [PATCH 2/2] Rewrite dialup system test to pytest --- bin/tests/system/dialup/tests.sh | 62 ------------------- .../dialup/tests_dialup_zone_transfer.py | 33 ++++++++++ bin/tests/system/dialup/tests_sh_dialup.py | 14 ----- 3 files changed, 33 insertions(+), 76 deletions(-) delete mode 100644 bin/tests/system/dialup/tests.sh create mode 100644 bin/tests/system/dialup/tests_dialup_zone_transfer.py delete mode 100644 bin/tests/system/dialup/tests_sh_dialup.py diff --git a/bin/tests/system/dialup/tests.sh b/bin/tests/system/dialup/tests.sh deleted file mode 100644 index 943c8fbdd1..0000000000 --- a/bin/tests/system/dialup/tests.sh +++ /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 index 0000000000..4a60c5f5bb --- /dev/null +++ b/bin/tests/system/dialup/tests_dialup_zone_transfer.py @@ -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 index fa28e86dcf..0000000000 --- a/bin/tests/system/dialup/tests_sh_dialup.py +++ /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()