]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
rewrite logfileconfig system test
authorEvan Hunt <each@isc.org>
Fri, 24 Mar 2023 09:07:10 +0000 (10:07 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Tue, 28 Mar 2023 10:03:33 +0000 (10:03 +0000)
the logfileconfig system test did not conform to the style of
other tests, and was difficult to read and maintain. it has
been cleaned up and simplifeid in several ways:

- named.args used when appropriate so that named can be started with
  specified command line arguments, instead of having it launched
  directly from tests.sh
- unused root zone removed from named configuration
- an existing directory used instead of using 'mkdir' to create one
- dnssec-validation disabled to stop the server sending unnecessary
  queries

incidental fix: removed leftover debugging printfs from logconf.c.

(manually picked from commit 76baed33438dd416e9b961f2e3b96508da0bc278)

20 files changed:
bin/named/logconf.c
bin/named/server.c
bin/tests/system/logfileconfig/clean.sh
bin/tests/system/logfileconfig/named1.args [new file with mode: 0644]
bin/tests/system/logfileconfig/named2.args [new file with mode: 0644]
bin/tests/system/logfileconfig/ns1/controls.conf.in [deleted file]
bin/tests/system/logfileconfig/ns1/named.dirconf.in [moved from bin/tests/system/logfileconfig/ns1/named.dirconf with 83% similarity]
bin/tests/system/logfileconfig/ns1/named.iso8601-utc.in [moved from bin/tests/system/logfileconfig/ns1/named.iso8601-utc with 85% similarity]
bin/tests/system/logfileconfig/ns1/named.iso8601.in [moved from bin/tests/system/logfileconfig/ns1/named.iso8601 with 85% similarity]
bin/tests/system/logfileconfig/ns1/named.pipeconf.in [moved from bin/tests/system/logfileconfig/ns1/named.pipeconf with 85% similarity]
bin/tests/system/logfileconfig/ns1/named.plain.in [moved from bin/tests/system/logfileconfig/ns1/named.plain with 86% similarity]
bin/tests/system/logfileconfig/ns1/named.plainconf.in [moved from bin/tests/system/logfileconfig/ns1/named.plainconf with 82% similarity]
bin/tests/system/logfileconfig/ns1/named.symconf.in [moved from bin/tests/system/logfileconfig/ns1/named.symconf with 85% similarity]
bin/tests/system/logfileconfig/ns1/named.tsconf.in [moved from bin/tests/system/logfileconfig/ns1/named.tsconf with 87% similarity]
bin/tests/system/logfileconfig/ns1/named.unlimited.in [moved from bin/tests/system/logfileconfig/ns1/named.unlimited with 87% similarity]
bin/tests/system/logfileconfig/ns1/named.versconf.in [moved from bin/tests/system/logfileconfig/ns1/named.versconf with 87% similarity]
bin/tests/system/logfileconfig/ns1/rndc.conf.in [deleted file]
bin/tests/system/logfileconfig/ns1/root.db [deleted file]
bin/tests/system/logfileconfig/setup.sh
bin/tests/system/logfileconfig/tests.sh

index 2b52e5e689107c8c3a297541f4ab2bd1c2499936..36a19bac4a480e64c2b14d3731e3e15c6f09c5b0 100644 (file)
@@ -300,10 +300,6 @@ channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *logconfig) {
                                               dest.file.name,
                                               isc_result_totext(result));
                                }
-                               fprintf(stderr,
-                                       "isc_stdio_open '%s' failed: %s\n",
-                                       dest.file.name,
-                                       isc_result_totext(result));
                        } else {
                                (void)isc_stdio_close(fp);
                        }
@@ -313,8 +309,6 @@ channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *logconfig) {
                        syslog(LOG_ERR, "isc_file_isplainfile '%s' failed: %s",
                               dest.file.name, isc_result_totext(result));
                }
-               fprintf(stderr, "isc_file_isplainfile '%s' failed: %s\n",
-                       dest.file.name, isc_result_totext(result));
        }
 
 done:
index 6695fb6286b98c6306aa9cdaa120ed48ed906e2b..7306e0ab845ac4ec04d28f9e623c3dcc74422a26 100644 (file)
@@ -9292,8 +9292,8 @@ load_configuration(const char *filename, named_server_t *server,
                logobj = NULL;
                (void)cfg_map_get(config, "logging", &logobj);
                if (logobj != NULL) {
-                       CHECKM(named_logconfig(logc, logobj), "configuring "
-                                                             "logging");
+                       CHECKM(named_logconfig(logc, logobj),
+                              "configuring logging");
                } else {
                        named_log_setdefaultchannels(logc);
                        CHECKM(named_log_setunmatchedcategory(logc),
index e19db68015db02cce49bf6497c01d5f6998f1f40..18aa5de2dd60749bc79a4ba657c1b9249cb963ee 100644 (file)
 #
 # Clean up after log file tests
 #
-rm -f ns1/rndc.conf
-rm -f ns1/controls.conf
 rm -f ns1/named.conf
-rm -f ns1/named.pid ns1/named.run
+rm -f ns1/named.args
+rm -f ns1/named.pid ns1/named.run ns1/named.run.prev
 rm -f ns1/named.memstats ns1/dig.out
 rm -f ns1/named_log ns1/named_pipe ns1/named_sym
 rm -rf ns1/named_dir
diff --git a/bin/tests/system/logfileconfig/named1.args b/bin/tests/system/logfileconfig/named1.args
new file mode 100644 (file)
index 0000000..764d4c9
--- /dev/null
@@ -0,0 +1 @@
+-c named.conf -m record -T nosyslog -d 99 -D logfileconfig-ns1 -X named.lock -U 4
diff --git a/bin/tests/system/logfileconfig/named2.args b/bin/tests/system/logfileconfig/named2.args
new file mode 100644 (file)
index 0000000..fb9fe57
--- /dev/null
@@ -0,0 +1 @@
+-c named.conf -m record -T nosyslog -d 99 -D logfileconfig-ns1 -X named.lock -U 4 -L named_deflog
diff --git a/bin/tests/system/logfileconfig/ns1/controls.conf.in b/bin/tests/system/logfileconfig/ns1/controls.conf.in
deleted file mode 100644 (file)
index 697b02a..0000000
+++ /dev/null
@@ -1,18 +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.
- */
-
-controls {
-       inet 127.0.0.1 port @CONTROLPORT@
-               allow { 127.0.0.1/32; ::1/128; }
-               keys { "rndc-key"; };
-};
similarity index 83%
rename from bin/tests/system/logfileconfig/ns1/named.dirconf
rename to bin/tests/system/logfileconfig/ns1/named.dirconf.in
index 661a6fb0636a5a6edb1d3a6d35ab65848b4a69e2..12b3e962574bff69ff65a3e617d497a3df6e24cd 100644 (file)
@@ -19,27 +19,25 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
 
 logging {
        channel default_log {
-         file "named_dir";
+         file "/tmp";
          print-time yes;
        };
        category default { default_log; default_debug; };
        category lame-servers { null; };
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
similarity index 85%
rename from bin/tests/system/logfileconfig/ns1/named.iso8601-utc
rename to bin/tests/system/logfileconfig/ns1/named.iso8601-utc.in
index 5c1a52c962e46aa09472cf5014e8d51cb58aae79..2b4b1819d04c2b3d5db2956ac9682d30c4ece114 100644 (file)
@@ -19,6 +19,7 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
@@ -32,14 +33,11 @@ logging {
        category default { default_log; default_debug; };
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
similarity index 85%
rename from bin/tests/system/logfileconfig/ns1/named.iso8601
rename to bin/tests/system/logfileconfig/ns1/named.iso8601.in
index 53f41cf1fb0043e6a61dfc5f4e087581cefcb6ae..1eb1aa8c5af6d61c7b8b34df091dc5593a309e31 100644 (file)
@@ -19,6 +19,7 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
@@ -32,14 +33,11 @@ logging {
        category default { default_log; default_debug; };
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
similarity index 85%
rename from bin/tests/system/logfileconfig/ns1/named.pipeconf
rename to bin/tests/system/logfileconfig/ns1/named.pipeconf.in
index f10d98ae7fa50bb90a58d57fd06415a882687f0b..5497b62f10b33c3030b203dfa5e5cd3f5cfe8595 100644 (file)
@@ -19,6 +19,7 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
@@ -32,14 +33,11 @@ logging {
        category lame-servers { null; };
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
similarity index 86%
rename from bin/tests/system/logfileconfig/ns1/named.plain
rename to bin/tests/system/logfileconfig/ns1/named.plain.in
index ea651f3706ef7fbe74747c7cb5d0083f35c659eb..53a1946374f862c4a55f106fb41f51d1b29094ec 100644 (file)
@@ -19,6 +19,7 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
@@ -39,15 +40,11 @@ logging {
        category queries { query_log; };
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
similarity index 82%
rename from bin/tests/system/logfileconfig/ns1/named.plainconf
rename to bin/tests/system/logfileconfig/ns1/named.plainconf.in
index 2e2ee60674497cea0b26903ba8e32c847998f852..8a70ca061c7702a2c6a93b65e33d56f7a8557534 100644 (file)
@@ -19,18 +19,16 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
similarity index 85%
rename from bin/tests/system/logfileconfig/ns1/named.symconf
rename to bin/tests/system/logfileconfig/ns1/named.symconf.in
index 304d622b8547d07da7c5622f8368a0cf14c2642b..5b30e5797aadb487231025e32dd6b64a484807d4 100644 (file)
@@ -19,6 +19,7 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
@@ -32,14 +33,11 @@ logging {
        category lame-servers { null; };
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
similarity index 87%
rename from bin/tests/system/logfileconfig/ns1/named.tsconf
rename to bin/tests/system/logfileconfig/ns1/named.tsconf.in
index fe4a8d4f7561edfc568baaaeccfea6bebde70d11..38ddaaab153eda221fede61249807fdca3d69116 100644 (file)
@@ -19,6 +19,7 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
@@ -41,15 +42,11 @@ logging {
        category queries { query_log; };
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
similarity index 87%
rename from bin/tests/system/logfileconfig/ns1/named.unlimited
rename to bin/tests/system/logfileconfig/ns1/named.unlimited.in
index 54041da07477e765c1c4497ba9d97118c4a3b21e..506b49b3c6493e24018a5e7194eb5f464195604c 100644 (file)
@@ -19,6 +19,7 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
@@ -41,15 +42,11 @@ logging {
        category queries { query_log; };
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
similarity index 87%
rename from bin/tests/system/logfileconfig/ns1/named.versconf
rename to bin/tests/system/logfileconfig/ns1/named.versconf.in
index 3cbd16522cf4101a9b3c7849776da3e6541bbed9..3860ae8c31dbb4c055202aaa4d3def0e8bb11f70 100644 (file)
@@ -19,6 +19,7 @@ options {
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
+       dnssec-validation no;
        recursion no;
        notify yes;
 };
@@ -41,15 +42,11 @@ logging {
        category queries { query_log; };
 };
 
-include "controls.conf";
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
+controls {
+       inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { "rndc-key"; };
 };
 
-
-zone "." {
-       type primary;
-       file "root.db";
+key rndc-key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
 };
diff --git a/bin/tests/system/logfileconfig/ns1/rndc.conf.in b/bin/tests/system/logfileconfig/ns1/rndc.conf.in
deleted file mode 100644 (file)
index 4bd9af7..0000000
+++ /dev/null
@@ -1,26 +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.
- */
-
-options {
-       default-server 127.0.0.1;
-};
-
-server 127.0.0.1 {
-       key "rndc-key";
-       addresses   { 127.0.0.1 port @CONTROLPORT@; };
-};
-
-key "rndc-key" {
-       algorithm hmac-sha256;
-       secret "Am9vCg==";
-};
diff --git a/bin/tests/system/logfileconfig/ns1/root.db b/bin/tests/system/logfileconfig/ns1/root.db
deleted file mode 100644 (file)
index 58a675c..0000000
+++ /dev/null
@@ -1,27 +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.
-
-$TTL 300
-.                      IN SOA  gson.nominum.com. a.root.servers.nil. (
-                               2000042100      ; serial
-                               600             ; refresh
-                               600             ; retry
-                               1200            ; expire
-                               600             ; minimum
-                               )
-.                      NS      a.root-servers.nil.
-a.root-servers.nil.    A       10.53.0.1
-
-example.               NS      ns2.example.
-ns2.example.           A       10.53.0.2
-
-tsigzone.              NS      ns2.tsigzone.
-ns2.tsigzone.          A       10.53.0.2
index 8a9b1398efc9108a163fea8b98cdf741fe33263d..0e0cc89858ae40561698cf408ce03d379d365fea 100644 (file)
@@ -16,6 +16,4 @@ SYSTEMTESTTOP=..
 
 $SHELL clean.sh
 
-copy_setports ns1/named.plain ns1/named.conf
-copy_setports ns1/rndc.conf.in ns1/rndc.conf
-copy_setports ns1/controls.conf.in ns1/controls.conf
+copy_setports ns1/named.plain.in ns1/named.conf
index 664abc648465a2db42b05b92b49f3b24c5b9c374..c423eb137ad1fd16837a428b2ce64bd9a321b6b0 100644 (file)
@@ -16,30 +16,6 @@ SYSTEMTESTTOP=..
 THISDIR=`pwd`
 CONFDIR="ns1"
 
-PLAINCONF="${THISDIR}/${CONFDIR}/named.plainconf"
-PLAINFILE="named_log"
-DIRCONF="${THISDIR}/${CONFDIR}/named.dirconf"
-DIRFILE="named_dir"
-PIPECONF="${THISDIR}/${CONFDIR}/named.pipeconf"
-PIPEFILE="named_pipe"
-SYMCONF="${THISDIR}/${CONFDIR}/named.symconf"
-SYMFILE="named_sym"
-VERSCONF="${THISDIR}/${CONFDIR}/named.versconf"
-VERSFILE="named_vers"
-TSCONF="${THISDIR}/${CONFDIR}/named.tsconf"
-TSFILE="named_ts"
-UNLIMITEDCONF="${THISDIR}/${CONFDIR}/named.unlimited"
-UNLIMITEDFILE="named_unlimited"
-ISOCONF="${THISDIR}/${CONFDIR}/named.iso8601"
-ISOFILE="named_iso8601"
-ISOCONFUTC="${THISDIR}/${CONFDIR}/named.iso8601-utc"
-ISOUTCFILE="named_iso8601_utc"
-DLFILE="named_deflog"
-
-PIDFILE="${THISDIR}/${CONFDIR}/named.pid"
-myRNDC="$RNDC -c ${THISDIR}/${CONFDIR}/rndc.conf"
-myNAMED="$NAMED -c ${THISDIR}/${CONFDIR}/named.conf -m record,size,mctx -T nosyslog -d 99 -D logfileconfig-ns1 -X named.lock -U 4"
-
 # Test given condition.  If true, test again after a second.  Used for testing
 # filesystem-dependent conditions in order to prevent false negatives caused by
 # directory contents not being synchronized immediately after rename() returns.
@@ -53,367 +29,204 @@ test_with_retry() {
        return 1
 }
 
-waitforpidfile() {
-       for _w in 1 2 3 4 5 6 7 8 9 10
-       do
-               test -f $PIDFILE && break
-               sleep 1
-       done
-}
-
 status=0
 n=0
 
-cd $CONFDIR
-export SYSTEMTESTTOP=../..
-
 echo_i "testing log file validity (named -g + only plain files allowed)"
 
-n=`expr $n + 1`
-echo_i "testing plain file (named -g) ($n)"
 # First run with a known good config.
-echo > $PLAINFILE
-copy_setports $PLAINCONF named.conf
-$myRNDC reconfig > rndc.out.test$n 2>&1
-grep "reloading configuration failed" named.run > /dev/null 2>&1
-if [ $? -ne 0 ]
-then
-       echo_i "testing plain file succeeded"
-else
-       echo_i "testing plain file failed (unexpected)"
-       echo_i "exit status: 1"
-       exit 1
-fi
+n=$((n+1))
+echo_i "testing log file validity (only plain files allowed) ($n)"
+ret=0
+cat /dev/null > ns1/named_log
+copy_setports ns1/named.plainconf.in ns1/named.conf
+nextpart ns1/named.run > /dev/null
+rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+wait_for_log 5 "reloading configuration succeeded" ns1/named.run || ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
 
 # Now try directory, expect failure
-n=`expr $n + 1`
-echo_i "testing directory as log file (named -g) ($n)"
-echo > named.run
-rm -rf $DIRFILE
-mkdir -p $DIRFILE >/dev/null 2>&1
-if [ $? -eq 0 ]
-then
-       copy_setports $DIRCONF named.conf
-       echo > named.run
-       $myRNDC reconfig > rndc.out.test$n 2>&1
-       grep "checking logging configuration failed: invalid file" named.run > /dev/null 2>&1
-       if [ $? -ne 0 ]
-       then
-               echo_i "testing directory as file succeeded (UNEXPECTED)"
-               echo_i "exit status: 1"
-               exit 1
-       else
-               echo_i "testing directory as log file failed (expected)"
-       fi
-else
-       echo_i "skipping directory test (unable to create directory)"
-fi
+n=$((n+1))
+echo_i "testing directory as log file ($n)"
+ret=0
+nextpart ns1/named.run > /dev/null
+copy_setports ns1/named.dirconf.in ns1/named.conf
+rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+wait_for_log 5 "reloading configuration failed: invalid file" ns1/named.run || ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
 
 # Now try pipe file, expect failure
-n=`expr $n + 1`
-echo_i "testing pipe file as log file (named -g) ($n)"
-echo > named.run
-rm -f $PIPEFILE
-mkfifo $PIPEFILE >/dev/null 2>&1
-if [ $? -eq 0 ]
-then
-       copy_setports $PIPECONF named.conf
-       echo > named.run
-       $myRNDC reconfig > rndc.out.test$n 2>&1
-       grep "checking logging configuration failed: invalid file" named.run  > /dev/null 2>&1
-       if [ $? -ne 0 ]
-       then
-               echo_i "testing pipe file as log file succeeded (UNEXPECTED)"
-               echo_i "exit status: 1"
-               exit 1
-       else
-               echo_i "testing pipe file as log file failed (expected)"
-       fi
+n=$((n+1))
+echo_i "testing pipe file as log file ($n)"
+ret=0
+nextpart ns1/named.run > /dev/null
+rm -f ns1/named_pipe
+if mkfifo ns1/named_pipe >/dev/null 2>&1; then
+    copy_setports ns1/named.pipeconf.in ns1/named.conf
+    rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+    wait_for_log 5 "reloading configuration failed: invalid file" ns1/named.run || ret=1
+    if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+    status=$((status+ret))
 else
-       echo_i "skipping pipe test (unable to create pipe)"
+    echo_i "skipping pipe test (unable to create pipe)"
 fi
 
 # Now try symlink file to plain file, expect success
-n=`expr $n + 1`
-echo_i "testing symlink to plain file as log file (named -g) ($n)"
-# Assume success
-echo > named.run
-echo > $PLAINFILE
-rm -f  $SYMFILE  $SYMFILE
-ln -s $PLAINFILE $SYMFILE >/dev/null 2>&1
-if [ $? -eq 0 ]
-then
-       copy_setports $SYMCONF named.conf
-       $myRNDC reconfig > rndc.out.test$n 2>&1
-       echo > named.run
-       grep "reloading configuration failed" named.run > /dev/null 2>&1
-       if [ $? -ne 0 ]
-       then
-               echo_i "testing symlink to plain file succeeded"
-       else
-               echo_i "testing symlink to plain file failed (unexpected)"
-               echo_i "exit status: 1"
-               exit 1
-       fi
+n=$((n+1))
+echo_i "testing symlink to plain file as log file ($n)"
+ret=0
+rm -f ns1/named_log ns1/named_sym
+touch ns1/named_log
+if ln -s $(pwd)/ns1/named_log $(pwd)/ns1/named_sym >/dev/null 2>&1; then
+    nextpart ns1/named.run > /dev/null
+    copy_setports ns1/named.symconf.in ns1/named.conf
+    rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+    wait_for_log 5 "reloading configuration succeeded" ns1/named.run || ret=1
+    if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+    status=$((status+ret))
 else
        echo_i "skipping symlink test (unable to create symlink)"
 fi
-# Stop the server and run through a series of tests with various config
-# files while controlling the stop/start of the server.
-# Have to stop the stock server because it uses "-g"
-#
-stop_server ns1
-
-$myNAMED > /dev/null 2>&1
-
-if [ $? -ne 0 ]
-then
-       echo_i "failed to start $myNAMED"
-       echo_i "exit status: $status"
-       exit $status
-fi
 
-status=0
+echo_i "repeat previous tests without named -g"
+copy_setports ns1/named.plain.in ns1/named.conf
+$PERL ../stop.pl --use-rndc --port ${CONTROLPORT} logfileconfig ns1
+cp named1.args ns1/named.args
+start_server --noclean --restart --port ${PORT} ns1
 
-echo_i "testing log file validity (only plain files allowed)"
-
-n=`expr $n + 1`
-echo_i "testing plain file (named -g) ($n)"
-# First run with a known good config.
-echo > $PLAINFILE
-copy_setports $PLAINCONF named.conf
-$myRNDC reconfig > rndc.out.test$n 2>&1
-grep "reloading configuration failed" named.run > /dev/null 2>&1
-if [ $? -ne 0 ]
-then
-       echo_i "testing plain file succeeded"
-else
-       echo_i "testing plain file failed (unexpected)"
-       echo_i "exit status: 1"
-       exit 1
-fi
+n=$((n+1))
+echo_i "testing log file validity (only plain files allowed) ($n)"
+ret=0
+cat /dev/null > ns1/named_log
+copy_setports ns1/named.plainconf.in ns1/named.conf
+nextpart ns1/named.run > /dev/null
+rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+wait_for_log 5 "reloading configuration succeeded" ns1/named.run || ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
 
 # Now try directory, expect failure
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "testing directory as log file ($n)"
-echo > named.run
-rm -rf $DIRFILE
-mkdir -p $DIRFILE >/dev/null 2>&1
-if [ $? -eq 0 ]
-then
-       copy_setports $DIRCONF named.conf
-       echo > named.run
-       $myRNDC reconfig > rndc.out.test$n 2>&1
-       grep "configuring logging: invalid file" named.run > /dev/null 2>&1
-       if [ $? -ne 0 ]
-       then
-               echo_i "testing directory as file succeeded (UNEXPECTED)"
-               echo_i "exit status: 1"
-               exit 1
-       else
-               echo_i "testing directory as log file failed (expected)"
-       fi
-else
-       echo_i "skipping directory test (unable to create directory)"
-fi
+ret=0
+nextpart ns1/named.run > /dev/null
+copy_setports ns1/named.dirconf.in ns1/named.conf
+rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+wait_for_log 5 "reloading configuration failed: invalid file" ns1/named.run || ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
 
 # Now try pipe file, expect failure
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "testing pipe file as log file ($n)"
-echo > named.run
-rm -f $PIPEFILE
-mkfifo $PIPEFILE >/dev/null 2>&1
-if [ $? -eq 0 ]
-then
-       copy_setports $PIPECONF named.conf
-       echo > named.run
-       $myRNDC reconfig > rndc.out.test$n 2>&1
-       grep "configuring logging: invalid file" named.run  > /dev/null 2>&1
-       if [ $? -ne 0 ]
-       then
-               echo_i "testing pipe file as log file succeeded (UNEXPECTED)"
-               echo_i "exit status: 1"
-               exit 1
-       else
-               echo_i "testing pipe file as log file failed (expected)"
-       fi
+ret=0
+nextpart ns1/named.run > /dev/null
+rm -f ns1/named_pipe
+if mkfifo ns1/named_pipe >/dev/null 2>&1; then
+    copy_setports ns1/named.pipeconf.in ns1/named.conf
+    rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+    wait_for_log 5 "reloading configuration failed: invalid file" ns1/named.run || ret=1
+    if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+    status=$((status+ret))
 else
-       echo_i "skipping pipe test (unable to create pipe)"
+    echo_i "skipping pipe test (unable to create pipe)"
 fi
 
 # Now try symlink file to plain file, expect success
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "testing symlink to plain file as log file ($n)"
-# Assume success
-status=0
-echo > named.run
-echo > $PLAINFILE
-rm -f $SYMFILE
-ln -s $PLAINFILE $SYMFILE >/dev/null 2>&1
-if [ $? -eq 0 ]
-then
-       copy_setports $SYMCONF named.conf
-       $myRNDC reconfig > rndc.out.test$n 2>&1
-       echo > named.run
-       grep "reloading configuration failed" named.run > /dev/null 2>&1
-       if [ $? -ne 0 ]
-       then
-               echo_i "testing symlink to plain file succeeded"
-       else
-               echo_i "testing symlink to plain file failed (unexpected)"
-               echo_i "exit status: 1"
-               exit 1
-       fi
+ret=0
+rm -f ns1/named_log ns1/named_sym
+touch ns1/named_log
+if ln -s $(pwd)/ns1/named_log $(pwd)/ns1/named_sym >/dev/null 2>&1; then
+    nextpart ns1/named.run > /dev/null
+    copy_setports ns1/named.symconf.in ns1/named.conf
+    rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+    wait_for_log 5 "reloading configuration succeeded" ns1/named.run || ret=1
+    if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+    status=$((status+ret))
 else
        echo_i "skipping symlink test (unable to create symlink)"
 fi
 
-n=`expr $n + 1`
-echo_i "testing default logfile using named -L file ($n)"
-# Now stop the server again and test the -L option
-rm -f $DLFILE
-stop_server ns1
-if ! test -f $PIDFILE; then
-       copy_setports $PLAINCONF named.conf
-       $myNAMED -L $DLFILE > /dev/null 2>&1
-       if [ $? -ne 0 ]; then
-               echo_i "failed to start $myNAMED"
-               echo_i "exit status: $status"
-               exit $status
-       fi
-
-       waitforpidfile
-
-       sleep 1
-       if [ -f "$DLFILE" ]; then
-               echo_i "testing default logfile using named -L succeeded"
-       else
-               echo_i "testing default logfile using named -L failed"
-               echo_i "exit status: 1"
-               exit 1
-       fi
-else
-       echo_i "failed to cleanly stop $myNAMED"
-       echo_i "exit status: 1"
-       exit 1
-fi
-
 echo_i "testing logging functionality"
-
-n=`expr $n + 1`
+n=$((n+1))
+ret=0
 echo_i "testing iso8601 timestamp ($n)"
-copy_setports $ISOCONF named.conf
-$myRNDC reconfig > rndc.out.test$n 2>&1
-if grep '^....-..-..T..:..:..\.... ' $ISOFILE > /dev/null; then
-       echo_i "testing iso8601 timestamp succeeded"
-else
-       echo_i "testing iso8601 timestamp failed"
-       status=`expr $status + 1`
-fi
+copy_setports ns1/named.iso8601.in ns1/named.conf
+rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+grep '^....-..-..T..:..:..\.... ' ns1/named_iso8601 > /dev/null || ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
 
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "testing iso8601-utc timestamp ($n)"
-copy_setports $ISOCONFUTC named.conf
-$myRNDC reconfig > rndc.out.test$n 2>&1
-if grep '^....-..-..T..:..:..\....Z' $ISOUTCFILE > /dev/null; then
-       echo_i "testing iso8601-utc timestamp succeeded"
-else
-       echo_i "testing iso8601-utc timestamp failed"
-       status=`expr $status + 1`
-fi
-
-n=`expr $n + 1`
+ret=0
+copy_setports ns1/named.iso8601-utc.in ns1/named.conf
+rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
+grep '^....-..-..T..:..:..\....Z' ns1/named_iso8601_utc > /dev/null || ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
+
+n=$((n+1))
 echo_i "testing explicit versions ($n)"
-copy_setports $VERSCONF named.conf
+ret=0
+copy_setports ns1/named.versconf.in ns1/named.conf
 # a seconds since epoch version number
-touch $VERSFILE.1480039317
-t1=`$PERL -e 'print time()."\n";'`
-$myRNDC reconfig > rndc.out.test$n 2>&1
+touch ns1/named_vers.1480039317
+rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
 $DIG version.bind txt ch @10.53.0.1 -p ${PORT} > dig.out.test$n
-t2=`$PERL -e 'print time()."\n";'`
-t=`expr ${t2:-0} - ${t1:-0}`
-if test ${t:-1000} -gt 5
-then
-        echo_i "testing explicit versions failed: cleanup of old entries took too long ($t secs)"
-       status=`expr $status + 1`
-fi
-if ! grep "status: NOERROR" dig.out.test$n > /dev/null
-then
-       echo_i "testing explicit versions failed: DiG lookup failed"
-       status=`expr $status + 1`
-fi
-if test_with_retry -f $VERSFILE.1480039317
-then
-       echo_i "testing explicit versions failed: $VERSFILE.1480039317 not removed"
-       status=`expr $status + 1`
-fi
-if test_with_retry -f $VERSFILE.5
-then
-       echo_i "testing explicit versions failed: $VERSFILE.5 exists"
-       status=`expr $status + 1`
-fi
-if test_with_retry ! -f $VERSFILE.4
-then
-       echo_i "testing explicit versions failed: $VERSFILE.4 does not exist"
-       status=`expr $status + 1`
-fi
-
-n=`expr $n + 1`
+grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
+# we are configured to retain five logfiles (a current file
+# and 4 backups). so files with version number 5 or higher
+# should be removed.
+test_with_retry -f ns1/named_vers.1480039317 && ret=1
+test_with_retry -f ns1/named_vers.5 && ret=1
+test_with_retry -f ns1/named_vers.4 || ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
+
+n=$((n+1))
 echo_i "testing timestamped versions ($n)"
-copy_setports $TSCONF named.conf
+ret=0
+copy_setports ns1/named.tsconf.in ns1/named.conf
 # a seconds since epoch version number
-touch $TSFILE.2015010112000012
-t1=`$PERL -e 'print time()."\n";'`
-$myRNDC reconfig > rndc.out.test$n 2>&1
+touch ns1/named_ts.1480039317
+rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
 $DIG version.bind txt ch @10.53.0.1 -p ${PORT} > dig.out.test$n
-t2=`$PERL -e 'print time()."\n";'`
-t=`expr ${t2:-0} - ${t1:-0}`
-if test ${t:-1000} -gt 5
-then
-        echo_i "testing timestamped versions failed: cleanup of old entries took too long ($t secs)"
-       status=`expr $status + 1`
-fi
-if ! grep "status: NOERROR" dig.out.test$n > /dev/null
-then
-       echo_i "testing timestamped versions failed: DiG lookup failed"
-       status=`expr $status + 1`
-fi
-if test_with_retry -f $TSFILE.1480039317
-then
-       echo_i "testing timestamped versions failed: $TSFILE.1480039317 not removed"
-       status=`expr $status + 1`
-fi
+grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
+test_with_retry -f ns1/named_ts.1480039317 && ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
 
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "testing unlimited versions ($n)"
-copy_setports $UNLIMITEDCONF named.conf
+ret=0
+copy_setports ns1/named.unlimited.in ns1/named.conf
 # a seconds since epoch version number
-touch $UNLIMITEDFILE.1480039317
-t1=`$PERL -e 'print time()."\n";'`
-$myRNDC reconfig > rndc.out.test$n 2>&1
+touch ns1/named_unlimited.1480039317
+rndc_reconfig ns1 10.53.0.1 > rndc.out.test$n
 $DIG version.bind txt ch @10.53.0.1 -p ${PORT} > dig.out.test$n
-t2=`$PERL -e 'print time()."\n";'`
-t=`expr ${t2:-0} - ${t1:-0}`
-if test ${t:-1000} -gt 5
-then
-        echo_i "testing unlimited versions failed: took too long ($t secs)"
-       status=`expr $status + 1`
-fi
-if ! grep "status: NOERROR" dig.out.test$n > /dev/null
-then
-       echo_i "testing unlimited versions failed: DiG lookup failed"
-       status=`expr $status + 1`
-fi
-if test_with_retry ! -f $UNLIMITEDFILE.1480039317
-then
-       echo_i "testing unlimited versions failed: $UNLIMITEDFILE.1480039317 removed"
-       status=`expr $status + 1`
-fi
-if test_with_retry ! -f $UNLIMITEDFILE.4
-then
-       echo_i "testing unlimited versions failed: $UNLIMITEDFILE.4 does not exist"
-       status=`expr $status + 1`
-fi
+grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
+test_with_retry -f ns1/named_unlimited.1480039317 || ret=1
+test_with_retry -f ns1/named_unlimited.4 || ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
+
+n=$((n+1))
+echo_i "testing default logfile using named -L file ($n)"
+ret=0
+$PERL ../stop.pl logfileconfig ns1
+cp named2.args ns1/named.args
+test -f ns1/named.pid && ret=1
+rm -f ns1/named_deflog
+copy_setports ns1/named.plainconf.in ns1/named.conf
+start_server --noclean --restart --port ${PORT} ns1
+[ -f "ns1/named_deflog" ] || ret=1
+if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
 
 echo_i "exit status: $status"
 [ $status -eq 0 ] || exit 1