2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00

[rt46602] Change the system tests script to support running individual tests on different ports

Resolved conflict in run.sh.
This commit is contained in:
Ondřej Surý
2017-10-18 13:00:15 +02:00
committed by Stephen Morris
parent c6b430745b
commit fb00f18005
6 changed files with 105 additions and 38 deletions

View 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

View File

@@ -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; };
};

View 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"

View File

@@ -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))

View File

@@ -15,20 +15,42 @@ SYSTEMTESTTOP=.
stopservers=true
clean=true
port=5300
controlport=9953
dateargs="-R"
case $1 in
--keep|-k) stopservers=false; shift ;;
--noclean|-n) clean=false; shift ;;
esac
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
test $# -gt 0 || { echo "usage: $0 [--keep|--noclean] test-directory" >&2; exit 1; }
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}"
shift $(($OPTIND - 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

View 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);