]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[rt46602] Change the system tests script to support running individual tests on diffe...
authorOndřej Surý <ondrej@sury.org>
Wed, 18 Oct 2017 11:00:15 +0000 (13:00 +0200)
committerStephen Morris <stephen@isc.org>
Fri, 16 Feb 2018 14:57:50 +0000 (14:57 +0000)
Resolved conflict in run.sh.

bin/tests/system/Makefile.in
bin/tests/system/common/controls.conf.in [new file with mode: 0644]
bin/tests/system/conf.sh.in
bin/tests/system/getopts.sh [new file with mode: 0644]
bin/tests/system/run.sh
bin/tests/system/start.pl

index e7fedd3a53d283191fca6e3ac95b29d3ecb18a61..2ff0b8e5d7f874d3e0b03ca2583e081959e815b5 100644 (file)
@@ -46,7 +46,10 @@ feature-test@EXEEXT@: feature-test.@O@
 check: test
 
 test: subdirs
-       if test -f ./runall.sh; then sh ./runall.sh; fi
+       if test -f ./runall.sh; then $(SHELL) ./runall.sh; fi
+
+server-stale:
+       $(SHELL) ./run.sh -p 5310 -c 9954 server-stale
 
 testclean clean distclean::
        if test -f ./cleanall.sh; then sh ./cleanall.sh; fi
@@ -63,3 +66,5 @@ installdirs:
 install::
 
 uninstall::
+
+.PHONY: server-stale
diff --git a/bin/tests/system/common/controls.conf.in b/bin/tests/system/common/controls.conf.in
new file mode 100644 (file)
index 0000000..f27441b
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2000, 2001, 2004, 2007, 2013, 2016  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/.
+ */
+
+/* $Id: controls.conf,v 1.6 2007/06/19 23:47:01 tbox Exp $ */
+
+key rndc_key {
+       secret "1234abcd8765";
+       algorithm hmac-sha256;
+};
+
+controls {
+       inet 10.53.0.2 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
+};
+
index bae8441a156823276818c4678c34af21adfea0c5..cd3ffffc9067ea5454f8ab5ac44c7eb82b5ab3bf 100644 (file)
@@ -83,7 +83,7 @@ SUBDIRS="acl additional addzone allow_query auth autosign builtin
         names notify nslookup nsupdate nzd2nzf padding pending
         pipelined @PKCS11_TEST@ reclimit redirect resolver rndc
         rpz rpzrecurse rrchecker rrl rrsetorder rsabigexponent
-        runtime serve-stale sfcache smartsign sortlist spf staticstub
+        runtime sfcache smartsign sortlist spf staticstub
         statistics statschannel stub synthfromdnssec tcp tkey tools
         tsig tsiggss unknown upforwd verify views wildcard xfer
         xferquota zero zonechecks"
diff --git a/bin/tests/system/getopts.sh b/bin/tests/system/getopts.sh
new file mode 100644 (file)
index 0000000..08fd8b7
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+# Copyright (C) 2017  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/.
+
+# shell script snippet, must be sourced
+
+port=5300
+controlport=9953
+
+while getopts "p:c:" flag; do
+    case "$flag" in
+       p) port=$OPTARG ;;
+       c) controlport=$OPTARG ;;
+       *) exit 1 ;;
+    esac
+done
+shift $(($OPTIND - 1))
index 5ec78e322cc001bdaeb4b17aa595e397dc1554ec..756fcdf341e714ce819b8327508fddde4e3235ab 100644 (file)
@@ -15,20 +15,42 @@ SYSTEMTESTTOP=.
 
 stopservers=true
 clean=true
+port=5300
+controlport=9953
+dateargs="-R"
+
+while getopts "knp:d:c:" flag; do
+    case "$flag" in
+       k) stopservers=false ;;
+       n) clean=false ;;
+       p) port=$OPTARG ;;
+       c) controlport=$OPTARG ;;
+       d) dateargs=$OPTARG ;;
+       *) exit 1 ;;
+    esac
+done
+
+if [ "$((${port}+0))" -ne "${port}" ] || [ "${port}" -le 1024 ] || [ "${port}" -gt 65535 ]; then
+    echo "Specified port '$port' must be numeric (1024,65535>" >&2; exit 1;
+fi
+
+if [ "$((${controlport}+0))" -ne "${controlport}" ] || [ "${controlport}" -le 1024 ] || [ "${controlport}" -gt 65535 ]; then
+    echo "Specified control port '$controlport' must be numeric (1024,65535>" >&2; exit 1;
+fi
+
+echo "PORT: ${port}"
+echo "CONTROLPORT: ${controlport}"
 
-case $1 in
-   --keep|-k) stopservers=false; shift ;;
-   --noclean|-n) clean=false; shift ;;
-esac
+shift $(($OPTIND - 1))
 
-test $# -gt 0 || { echo "usage: $0 [--keep|--noclean] test-directory" >&2; exit 1; }
+test $# -gt 0 || { echo "usage: $0 [-k|-n|-p <PORT>] test-directory" >&2; exit 1; }
 
 test=$1
 shift
 
 test -d $test || { echo "$0: $test: no such test" >&2; exit 1; }
 
-echoinfo "S:$test:`date`" >&2
+echoinfo "S:$test:`date $dateargs`" >&2
 echoinfo "T:$test:1:A" >&2
 echoinfo "A:System test $test" >&2
 
@@ -36,20 +58,12 @@ if [ x${PERL:+set} = x ]
 then
     echowarn "I:Perl not available.  Skipping test." >&2
     echowarn "R:UNTESTED" >&2
-    echoinfo "E:$test:`date`" >&2
+    echoinfo "E:$test:`date $dateargs`" >&2
     exit 0;
 fi
 
-$PERL testsock.pl || {
-    echowarn "I:Network interface aliases not set up.  Skipping test." >&2;
-    echowarn "R:UNTESTED" >&2;
-    echoinfo "E:$test:`date`" >&2;
-    exit 0;
-}
-
-
 # Check for test-specific prerequisites.
-test ! -f $test/prereq.sh || ( cd $test && $SHELL prereq.sh "$@" )
+test ! -f $test/prereq.sh || ( cd $test && $SHELL prereq.sh -c "$controlport" -p "$port" "$@" )
 result=$?
 
 if [ $result -eq 0 ]; then
@@ -57,10 +71,18 @@ if [ $result -eq 0 ]; then
 else
     echowarn "I:Prerequisites for $test missing, skipping test." >&2
     [ $result -eq 255 ] && echowarn "R:SKIPPED" || echowarn "R:UNTESTED"
-    echoinfo "E:$test:`date`" >&2
+    echoinfo "E:$test:`date $dateargs`" >&2
     exit 0
 fi
 
+# Test sockets after the prerequisites has been setup
+$PERL testsock.pl -p "${port}" || {
+    echowarn "I:Network interface aliases not set up.  Skipping test." >&2;
+    echowarn "R:UNTESTED" >&2;
+    echoinfo "E:$test:`date $dateargs`" >&2;
+    exit 0;
+}
+
 # Check for PKCS#11 support
 if
     test ! -f $test/usepkcs11 || $SHELL cleanpkcs11.sh
@@ -69,21 +91,21 @@ then
 else
     echowarn "I:Need PKCS#11 for $test, skipping test." >&2
     echowarn "R:PKCS11ONLY" >&2
-    echoinfo "E:$test:`date`" >&2
+    echoinfo "E:$test:`date $dateargs`" >&2
     exit 0
 fi
 
 # Set up any dynamically generated test data
 if test -f $test/setup.sh
 then
-   ( cd $test && $SHELL setup.sh "$@" )
+   ( cd $test && $SHELL setup.sh -c "$controlport" -p "$port" "$@" )
 fi
 
 # Start name servers running
-$PERL start.pl $test || { echofail "R:FAIL"; echoinfo "E:$test:`date`"; exit 1; }
+$PERL start.pl -p $port $test || { echofail "R:FAIL"; echoinfo "E:$test:`date $dateargs`"; exit 1; }
 
 # Run the tests
-( cd $test ; $SHELL tests.sh )
+( cd $test ; $SHELL tests.sh -c "$controlport" -p "$port" "$@" )
 
 status=$?
 
@@ -108,21 +130,21 @@ else
 
     if $clean
     then
-       rm -f $SYSTEMTESTTOP/random.data
-       if test -f $test/clean.sh
-       then
-           ( cd $test && $SHELL clean.sh "$@" )
-       fi
-       if test -d ../../../.git
-       then
-           git status -su --ignored $test |
-           sed -n -e 's|^?? \(.*\)|I:file \1 not removed|p' \
-               -e 's|^!! \(.*/named.run\)$|I:file \1 not removed|p' \
-               -e 's|^!! \(.*/named.memstats\)$|I:file \1 not removed|p'
-       fi
+        rm -f $SYSTEMTESTTOP/random.data
+        if test -f $test/clean.sh
+        then
+                       ( cd $test && $SHELL clean.sh "-p" "$port" "$@" )
+        fi
+        if test -d ../../../.git
+        then
+            git status -su --ignored $test |
+            sed -n -e 's|^?? \(.*\)|I:file \1 not removed|p' \
+            -e 's|^!! \(.*/named.run\)$|I:file \1 not removed|p' \
+            -e 's|^!! \(.*/named.memstats\)$|I:file \1 not removed|p'
+               fi
     fi
 fi
 
-echoinfo "E:$test:`date`"
+echoinfo "E:$test:`date $dateargs`"
 
 exit $status
index e882d08d6958304e7d24adda7acb3b7175493e27..f29f1301df7c8407c40af6b27c34d44244ebc83f 100644 (file)
@@ -35,7 +35,8 @@ use Getopt::Long;
 my $usage = "usage: $0 [--noclean] [--restart] test-directory [server-directory [server-options]]";
 my $noclean = '';
 my $restart = '';
-GetOptions('noclean' => \$noclean, 'restart' => \$restart);
+my $defaultport = 5300;
+GetOptions('noclean' => \$noclean, 'restart' => \$restart, 'p=i' => \$defaultport);
 my $test = $ARGV[0];
 my $server = $ARGV[1];
 my $options = $ARGV[2];
@@ -92,7 +93,7 @@ if ($server) {
 sub check_ports {
        my $server = shift;
        my $options = "";
-       my $port = 5300;
+       my $port = $defaultport;
        my $file = "";
 
        $file = $testdir . "/" . $server . "/named.port" if ($server);