]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add a system test for mirror zones
authorMichał Kępień <michal@isc.org>
Thu, 28 Jun 2018 11:38:39 +0000 (13:38 +0200)
committerMichał Kępień <michal@isc.org>
Thu, 28 Jun 2018 11:38:39 +0000 (13:38 +0200)
Create the basic files comprising a system test and define a few helper
functions which will be useful when testing mirror zones.

bin/tests/system/Makefile.in
bin/tests/system/conf.sh.in
bin/tests/system/conf.sh.win32
bin/tests/system/mirror/clean.sh [new file with mode: 0644]
bin/tests/system/mirror/ns1/named.conf.in [new file with mode: 0644]
bin/tests/system/mirror/ns1/root.db.in [new file with mode: 0644]
bin/tests/system/mirror/ns2/named.conf.in [new file with mode: 0644]
bin/tests/system/mirror/ns3/named.conf.in [new file with mode: 0644]
bin/tests/system/mirror/setup.sh [new file with mode: 0644]
bin/tests/system/mirror/tests.sh [new file with mode: 0644]
util/copyrights

index c17fac83d2151bd6e1a76f3f4d05b1dc6f0334bd..94d88c57ecae4309d199d366b1d45342c4db9154 100644 (file)
@@ -62,7 +62,7 @@ PARALLEL = rpzrecurse serve-stale dnssec \
           fetchlimit filter-aaaa formerr forward \
           geoip glue idna inline integrity ixfr keepalive \
           legacy limits logfileconfig \
-          masterfile masterformat metadata mkeys \
+          masterfile masterformat metadata mirror mkeys \
           names notify nslookup nsupdate nzd2nzf \
           padding pending pipelined qmin \
           reclimit redirect resolver rndc rootkeysentinel rpz \
index ada6f04a5c6071ff4f3f16c4312241fce3c8e056..d3837db9a3c0ebab1c204cd0509d338f054d5989 100644 (file)
@@ -93,7 +93,7 @@ PARALLELDIRS="acl additional addzone allow-query auth autosign \
        fetchlimit filter-aaaa formerr forward \
        geoip glue idna inline integrity ixfr keepalive \
        legacy limits logfileconfig \
-       masterfile masterformat metadata mkeys \
+       masterfile masterformat metadata mirror mkeys \
        names notify nslookup nsupdate nzd2nzf \
        padding pending pipelined qmin \
        reclimit redirect resolver rndc rootkeysentinel rpz rpzrecurse \
index 0c3ef19f0933055fc65df48d3d4bde561f8e0226..6b5c8639b7d1bb9c338cbe63a34979711e7b5baf 100644 (file)
@@ -90,7 +90,7 @@ SEQUENTIALDIRS="acl additional addzone autosign builtin \
         ednscompliance emptyzones \
         fetchlimit filter-aaaa formerr forward geoip glue idna inline ixfr \
         keepalive @KEYMGR@ legacy limits logfileconfig masterfile \
-        masterformat metadata mkeys names notify nslookup nsupdate \
+        masterformat metadata mirror mkeys names notify nslookup nsupdate \
         nzd2nzf padding pending pipelined @PKCS11_TEST@ qmin \
         reclimit redirect resolver rndc rpz rrchecker rrl \
         rrsetorder rsabigexponent runtime sfcache smartsign sortlist \
diff --git a/bin/tests/system/mirror/clean.sh b/bin/tests/system/mirror/clean.sh
new file mode 100644 (file)
index 0000000..983f1ac
--- /dev/null
@@ -0,0 +1,12 @@
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# 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 http://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+rm -f */*.conf
+rm -f */named.memstats
+rm -f */named.run
diff --git a/bin/tests/system/mirror/ns1/named.conf.in b/bin/tests/system/mirror/ns1/named.conf.in
new file mode 100644 (file)
index 0000000..b967b9e
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * 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 http://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+options {
+       query-source address 10.53.0.1;
+       notify-source 10.53.0.1;
+       transfer-source 10.53.0.1;
+       port @PORT@;
+       pid-file "named.pid";
+       listen-on { 10.53.0.1; };
+       listen-on-v6 { none; };
+       recursion no;
+};
diff --git a/bin/tests/system/mirror/ns1/root.db.in b/bin/tests/system/mirror/ns1/root.db.in
new file mode 100644 (file)
index 0000000..3c5e60f
--- /dev/null
@@ -0,0 +1,13 @@
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+;
+; 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 http://mozilla.org/MPL/2.0/.
+;
+; See the COPYRIGHT file distributed with this work for additional
+; information regarding copyright ownership.
+
+$TTL 3600
+@                              SOA     a.root-servers.nil. hostmaster 2000010100 3600 1200 604800 3600
+@                              NS      a.root-servers.nil.
+a.root-servers.nil.            A       10.53.0.1
diff --git a/bin/tests/system/mirror/ns2/named.conf.in b/bin/tests/system/mirror/ns2/named.conf.in
new file mode 100644 (file)
index 0000000..f8208e8
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * 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 http://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+options {
+       query-source address 10.53.0.2;
+       notify-source 10.53.0.2;
+       transfer-source 10.53.0.2;
+       port @PORT@;
+       pid-file "named.pid";
+       listen-on { 10.53.0.2; };
+       listen-on-v6 { none; };
+       recursion no;
+};
diff --git a/bin/tests/system/mirror/ns3/named.conf.in b/bin/tests/system/mirror/ns3/named.conf.in
new file mode 100644 (file)
index 0000000..4d6b2ad
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * 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 http://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+options {
+       query-source address 10.53.0.3;
+       notify-source 10.53.0.3;
+       transfer-source 10.53.0.3;
+       port @PORT@;
+       pid-file "named.pid";
+       listen-on { 10.53.0.3; };
+       listen-on-v6 { none; };
+       recursion yes;
+};
+
+zone "." {
+       type hint;
+       file "../../common/root.hint";
+};
diff --git a/bin/tests/system/mirror/setup.sh b/bin/tests/system/mirror/setup.sh
new file mode 100644 (file)
index 0000000..5093722
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+#
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# 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 http://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+$SHELL clean.sh
+
+copy_setports ns1/named.conf.in ns1/named.conf
+copy_setports ns2/named.conf.in ns2/named.conf
+copy_setports ns3/named.conf.in ns3/named.conf
diff --git a/bin/tests/system/mirror/tests.sh b/bin/tests/system/mirror/tests.sh
new file mode 100644 (file)
index 0000000..fdc0eda
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/sh
+#
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# 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 http://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+RNDCCMD="$RNDC -c $SYSTEMTESTTOP/common/rndc.conf -p ${CONTROLPORT} -s"
+
+# Wait until the transfer of the given zone to ns3 either completes successfully
+# or is aborted by a verification failure.
+wait_for_transfer() {
+       zone=$1
+       for i in 1 2 3 4 5 6 7 8 9 10; do
+               nextpartpeek ns3/named.run | egrep "'$zone/IN'.*Transfer status: (success|verify failure)" > /dev/null && return
+               sleep 1
+       done
+       echo_i "exceeded time limit waiting for proof of '$zone' being transferred to appear in ns3/named.run"
+       ret=1
+}
+
+# Wait until loading the given zone on the given server either completes
+# successfully for the specified serial number or fails.
+wait_for_load() {
+       zone=$1
+       serial=$2
+       log=$3
+       for i in 1 2 3 4 5 6 7 8 9 10; do
+               nextpartpeek $log | egrep "$zone.*(loaded serial $serial|unable to load)" > /dev/null && return
+               sleep 1
+       done
+       echo_i "exceeded time limit waiting for proof of '$zone' being loaded to appear in $log"
+       ret=1
+}
+
+# Trigger a reload of ns2 and wait until loading the given zone completes.
+reload_zone() {
+       zone=$1
+       serial=$2
+       $RNDCCMD 10.53.0.2 reload > /dev/null 2>&1
+       wait_for_load $zone $serial ns2/named.run
+}
+
+status=0
+n=0
+
+echo_i "exit status: $status"
+[ $status -eq 0 ] || exit 1
index 02f0c2a5213b57a2addd5bd04be79d0fb7caf878..b87da463e4dcb402d39fb948d772519eaf5ffbeb 100644 (file)
 ./bin/tests/system/metadata/prereq.sh          SH      2009,2012,2014,2016,2018
 ./bin/tests/system/metadata/setup.sh           SH      2009,2011,2012,2014,2016,2017,2018
 ./bin/tests/system/metadata/tests.sh           SH      2009,2011,2012,2013,2014,2016,2017,2018
+./bin/tests/system/mirror/clean.sh             SH      2018
+./bin/tests/system/mirror/ns1/named.conf.in    CONF-C  2018
+./bin/tests/system/mirror/ns1/root.db.in       ZONE    2018
+./bin/tests/system/mirror/ns2/named.conf.in    CONF-C  2018
+./bin/tests/system/mirror/ns3/named.conf.in    CONF-C  2018
+./bin/tests/system/mirror/setup.sh             SH      2018
+./bin/tests/system/mirror/tests.sh             SH      2018
 ./bin/tests/system/mkeys/README                        TXT.BRIEF       2015,2016,2017,2018
 ./bin/tests/system/mkeys/clean.sh              SH      2015,2016,2017,2018
 ./bin/tests/system/mkeys/ns1/named1.conf.in    CONF-C  2015,2016,2017,2018