2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-31 06:25:31 +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 check: test
test: subdirs 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:: testclean clean distclean::
if test -f ./cleanall.sh; then sh ./cleanall.sh; fi if test -f ./cleanall.sh; then sh ./cleanall.sh; fi
@@ -63,3 +66,5 @@ installdirs:
install:: install::
uninstall:: 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 names notify nslookup nsupdate nzd2nzf padding pending
pipelined @PKCS11_TEST@ reclimit redirect resolver rndc pipelined @PKCS11_TEST@ reclimit redirect resolver rndc
rpz rpzrecurse rrchecker rrl rrsetorder rsabigexponent 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 statistics statschannel stub synthfromdnssec tcp tkey tools
tsig tsiggss unknown upforwd verify views wildcard xfer tsig tsiggss unknown upforwd verify views wildcard xfer
xferquota zero zonechecks" 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 stopservers=true
clean=true clean=true
port=5300
controlport=9953
dateargs="-R"
case $1 in while getopts "knp:d:c:" flag; do
--keep|-k) stopservers=false; shift ;; case "$flag" in
--noclean|-n) clean=false; shift ;; k) stopservers=false ;;
esac 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 test=$1
shift shift
test -d $test || { echo "$0: $test: no such test" >&2; exit 1; } 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 "T:$test:1:A" >&2
echoinfo "A:System test $test" >&2 echoinfo "A:System test $test" >&2
@@ -36,20 +58,12 @@ if [ x${PERL:+set} = x ]
then then
echowarn "I:Perl not available. Skipping test." >&2 echowarn "I:Perl not available. Skipping test." >&2
echowarn "R:UNTESTED" >&2 echowarn "R:UNTESTED" >&2
echoinfo "E:$test:`date`" >&2 echoinfo "E:$test:`date $dateargs`" >&2
exit 0; exit 0;
fi 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. # 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=$? result=$?
if [ $result -eq 0 ]; then if [ $result -eq 0 ]; then
@@ -57,10 +71,18 @@ if [ $result -eq 0 ]; then
else else
echowarn "I:Prerequisites for $test missing, skipping test." >&2 echowarn "I:Prerequisites for $test missing, skipping test." >&2
[ $result -eq 255 ] && echowarn "R:SKIPPED" || echowarn "R:UNTESTED" [ $result -eq 255 ] && echowarn "R:SKIPPED" || echowarn "R:UNTESTED"
echoinfo "E:$test:`date`" >&2 echoinfo "E:$test:`date $dateargs`" >&2
exit 0 exit 0
fi 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 # Check for PKCS#11 support
if if
test ! -f $test/usepkcs11 || $SHELL cleanpkcs11.sh test ! -f $test/usepkcs11 || $SHELL cleanpkcs11.sh
@@ -69,21 +91,21 @@ then
else else
echowarn "I:Need PKCS#11 for $test, skipping test." >&2 echowarn "I:Need PKCS#11 for $test, skipping test." >&2
echowarn "R:PKCS11ONLY" >&2 echowarn "R:PKCS11ONLY" >&2
echoinfo "E:$test:`date`" >&2 echoinfo "E:$test:`date $dateargs`" >&2
exit 0 exit 0
fi fi
# Set up any dynamically generated test data # Set up any dynamically generated test data
if test -f $test/setup.sh if test -f $test/setup.sh
then then
( cd $test && $SHELL setup.sh "$@" ) ( cd $test && $SHELL setup.sh -c "$controlport" -p "$port" "$@" )
fi fi
# Start name servers running # 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 # Run the tests
( cd $test ; $SHELL tests.sh ) ( cd $test ; $SHELL tests.sh -c "$controlport" -p "$port" "$@" )
status=$? status=$?
@@ -108,21 +130,21 @@ else
if $clean if $clean
then then
rm -f $SYSTEMTESTTOP/random.data rm -f $SYSTEMTESTTOP/random.data
if test -f $test/clean.sh if test -f $test/clean.sh
then then
( cd $test && $SHELL clean.sh "$@" ) ( cd $test && $SHELL clean.sh "-p" "$port" "$@" )
fi fi
if test -d ../../../.git if test -d ../../../.git
then then
git status -su --ignored $test | git status -su --ignored $test |
sed -n -e 's|^?? \(.*\)|I:file \1 not removed|p' \ sed -n -e 's|^?? \(.*\)|I:file \1 not removed|p' \
-e 's|^!! \(.*/named.run\)$|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' -e 's|^!! \(.*/named.memstats\)$|I:file \1 not removed|p'
fi fi
fi fi
fi fi
echoinfo "E:$test:`date`" echoinfo "E:$test:`date $dateargs`"
exit $status exit $status

View File

@@ -35,7 +35,8 @@ use Getopt::Long;
my $usage = "usage: $0 [--noclean] [--restart] test-directory [server-directory [server-options]]"; my $usage = "usage: $0 [--noclean] [--restart] test-directory [server-directory [server-options]]";
my $noclean = ''; my $noclean = '';
my $restart = ''; my $restart = '';
GetOptions('noclean' => \$noclean, 'restart' => \$restart); my $defaultport = 5300;
GetOptions('noclean' => \$noclean, 'restart' => \$restart, 'p=i' => \$defaultport);
my $test = $ARGV[0]; my $test = $ARGV[0];
my $server = $ARGV[1]; my $server = $ARGV[1];
my $options = $ARGV[2]; my $options = $ARGV[2];
@@ -92,7 +93,7 @@ if ($server) {
sub check_ports { sub check_ports {
my $server = shift; my $server = shift;
my $options = ""; my $options = "";
my $port = 5300; my $port = $defaultport;
my $file = ""; my $file = "";
$file = $testdir . "/" . $server . "/named.port" if ($server); $file = $testdir . "/" . $server . "/named.port" if ($server);