mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 01:31:48 -04:00
enable parallel system tests on windows
this moves the creation of "parallel.mk" into a separate shell script
instead of bin/tests/system/Makefile. that shell script can now be
executed by runall.sh, allowing us to make use of the cygwin "make"
command, which supports parallel execution.
(cherry picked from commit bbae24c140)
This commit is contained in:
parent
9fe5acc36b
commit
5755465c2f
6 changed files with 73 additions and 71 deletions
|
|
@ -47,32 +47,6 @@ feature-test@EXEEXT@: feature-test.@O@
|
|||
# Running the scripts below is bypassed when a separate build directory is
|
||||
# used.
|
||||
|
||||
# Define the tests that can be run in parallel. This should be identical to
|
||||
# the definition of PARALLELDIRS in conf.sh. Note: longer-running tests
|
||||
# such as serve-stale and rpzrecurse stale are scheduled first to get more
|
||||
# benefit from parallelism.
|
||||
PARALLEL = rpzrecurse serve-stale dnssec \
|
||||
acl additional addzone allow-query auth autosign \
|
||||
builtin cacheclean case catz cds chain \
|
||||
checkconf checknames checkzone \
|
||||
@CHECKDS@ @COVERAGE@ @KEYMGR@ \
|
||||
cookie database digdelv dlv dlz dlzexternal \
|
||||
dns64 @DNSTAP@ dscp dsdigest dyndb \
|
||||
ednscompliance emptyzones \
|
||||
fetchlimit filter-aaaa formerr forward \
|
||||
geoip glue idna inline integrity ixfr keepalive \
|
||||
legacy limits logfileconfig \
|
||||
masterfile masterformat metadata mirror mkeys \
|
||||
names notify nslookup nsupdate nzd2nzf \
|
||||
padding pending pipelined qmin \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub synthfromdnssec \
|
||||
tcp tools tsig tsiggss ttl \
|
||||
unknown upforwd verify views wildcard \
|
||||
xfer xferquota zero zonechecks
|
||||
|
||||
# Produce intermediate makefile that assigns unique port numbers to each
|
||||
# parallel test. The start port number of 5,000 is arbitrary - it must just
|
||||
# be greater than the highest privileged port, 1024.
|
||||
|
|
@ -84,26 +58,7 @@ PARALLEL = rpzrecurse serve-stale dnssec \
|
|||
.PHONY: parallel.mk
|
||||
|
||||
parallel.mk:
|
||||
@PARALLEL_SANITIZED=`echo $(PARALLEL) | sed "s|\([^ ][^ ]*\)|test-\1|g;" | tr _ -` ; \
|
||||
echo ".PHONY: $$PARALLEL_SANITIZED" > $@ ; \
|
||||
echo "" >> $@ ; \
|
||||
echo "check_interfaces:" >> $@ ; \
|
||||
echo " @${PERL} testsock.pl > /dev/null 2>&1 || { \\" >> $@ ; \
|
||||
echo " echo \"I:NOTE: System tests were skipped because they require that the\"; \\" >> $@ ; \
|
||||
echo " echo \"I: IP addresses 10.53.0.1 through 10.53.0.8 be configured\"; \\" >> $@ ; \
|
||||
echo " echo \"I: as alias addresses on the loopback interface. Please run\"; \\" >> $@ ; \
|
||||
echo " echo \"I: \"bin/tests/system/ifconfig.sh up\" as root to configure them.\"; \\" >> $@ ; \
|
||||
echo " exit 1; \\" >> $@ ; \
|
||||
echo " }" >> $@ ; \
|
||||
echo "" >> $@ ; \
|
||||
echo "test check: $$PARALLEL_SANITIZED" >> $@ ; \
|
||||
port=$${STARTPORT:-5000} ; \
|
||||
for directory in $(PARALLEL) ; do \
|
||||
echo "" >> $@ ; \
|
||||
echo "test-`echo $$directory | tr _ -`: check_interfaces" >> $@ ; \
|
||||
echo " @$(SHELL) ./run.sh -r -p $$port $$directory 2>&1 | tee $$directory/test.output" >> $@ ; \
|
||||
port=`expr $$port + 100` ; \
|
||||
done
|
||||
$(SHELL) parallel.sh > parallel.mk
|
||||
|
||||
# Targets to run the tests.
|
||||
|
||||
|
|
|
|||
|
|
@ -79,13 +79,16 @@ SEQUENTIALDIRS="ecdsa eddsa @PKCS11_TEST@ tkey"
|
|||
# and 9953). Because separate blocks of ports can be used for teach
|
||||
# test, these tests can be run in parallel.
|
||||
#
|
||||
# This symbol must be kept in step with the PARALLEL macro in Makefile.in
|
||||
PARALLELDIRS="acl additional addzone allow-query auth autosign \
|
||||
# Note: some of the longer-running tests such as serve-stale and
|
||||
# rpzrecurse are scheduled first, in order to get more benefit from
|
||||
# parallelism.
|
||||
PARALLELDIRS="dnssec rpzrecurse serve-stale \
|
||||
acl additional addzone allow-query auth autosign \
|
||||
builtin cacheclean case catz cds chain \
|
||||
checkconf checknames checkzone \
|
||||
@CHECKDS@ @COVERAGE@ @KEYMGR@ \
|
||||
cookie database digdelv dlv dlz dlzexternal \
|
||||
dns64 dnssec @DNSTAP@ dscp dsdigest dyndb \
|
||||
dns64 @DNSTAP@ dscp dsdigest dyndb \
|
||||
ednscompliance emptyzones \
|
||||
fetchlimit filter-aaaa formerr forward \
|
||||
geoip glue idna inline integrity ixfr keepalive \
|
||||
|
|
@ -93,9 +96,9 @@ PARALLELDIRS="acl additional addzone allow-query auth autosign \
|
|||
masterfile masterformat metadata mirror mkeys \
|
||||
names notify nslookup nsupdate nzd2nzf \
|
||||
padding pending pipelined qmin \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz rpzrecurse \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
serve-stale sfcache smartsign sortlist \
|
||||
sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub synthfromdnssec \
|
||||
tcp tools tsig tsiggss ttl \
|
||||
unknown upforwd verify views wildcard \
|
||||
|
|
|
|||
|
|
@ -100,27 +100,27 @@ SEQUENTIALDIRS="ecdsa eddsa @PKCS11_TEST@ tkey"
|
|||
# List of tests that use unique ports (other than 5300 and 9953). These
|
||||
# tests can be run in parallel.
|
||||
#
|
||||
# XXX: Note that tests are not currently run in parallel on Windows, so it
|
||||
# isn't strictly necessary to maintain these as separate lists in this file,
|
||||
# but using the same variable names as in conf.sh.in may simplify keeping the
|
||||
# lists in sync.
|
||||
# Note: some of the longer-running tests such as serve-stale and
|
||||
# rpzrecurse are scheduled first, in order to get more benefit from
|
||||
# parallelism.
|
||||
#
|
||||
# XXX: removed logfileconfig as it doesn't currently work on windows.
|
||||
PARALLELDIRS="acl additional addzone allow-query auth autosign \
|
||||
PARALLELDIRS="dnssec rpzrecurse serve-stale \
|
||||
acl additional addzone allow-query auth autosign \
|
||||
builtin cacheclean case catz cds chain \
|
||||
checkconf checknames checkzone \
|
||||
@CHECKDS@ @COVERAGE@ @KEYMGR@ \
|
||||
cookie database digdelv dlv dlz dlzexternal \
|
||||
dns64 dnssec @DNSTAP@ dscp dsdigest dyndb \
|
||||
dns64 @DNSTAP@ dscp dsdigest dyndb \
|
||||
ednscompliance emptyzones \
|
||||
fetchlimit filter-aaaa formerr forward \
|
||||
geoip glue idna inline integrity ixfr keepalive \
|
||||
legacy limits masterfile masterformat metadata mirror mkeys \
|
||||
names notify nslookup nsupdate nzd2nzf \
|
||||
padding pending pipelined qmin \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz rpzrecurse \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
serve-stale sfcache smartsign sortlist \
|
||||
sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub synthfromdnssec \
|
||||
tcp tools tsig tsiggss ttl \
|
||||
unknown upforwd verify views wildcard \
|
||||
|
|
|
|||
34
bin/tests/system/parallel.sh
Normal file
34
bin/tests/system/parallel.sh
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
#!/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.
|
||||
|
||||
. ./conf.sh
|
||||
|
||||
PARALLELS=`echo $PARALLELDIRS | sed "s|\([^ ][^ ]*\)|test-\1|g;" | tr _ -`
|
||||
|
||||
echo ".PHONY: $PARALLELS"
|
||||
echo
|
||||
echo "check_interfaces:"
|
||||
echo " @${PERL} testsock.pl > /dev/null 2>&1 || { \\"
|
||||
echo " echo \"I:NOTE: System tests were skipped because they require the\"; \\"
|
||||
echo " echo \"I: test IP addresses 10.53.0.* to be configured as alias\"; \\"
|
||||
echo " echo \"I: addresses on the loopback interface. Please run\"; \\"
|
||||
echo " echo \"I: \"bin/tests/system/ifconfig.sh up\" as root to configure them.\"; \\"
|
||||
echo " exit 1; \\"
|
||||
echo " }"
|
||||
echo
|
||||
echo "test check: $PARALLELS"
|
||||
port=${STARTPORT:-5000}
|
||||
for directory in $PARALLELDIRS ; do
|
||||
echo
|
||||
echo "test-`echo $directory | tr _ -`: check_interfaces"
|
||||
echo " @${SHELL} ./run.sh -r -p $port $directory 2>&1 | tee $directory/test.output"
|
||||
port=`expr $port + 100`
|
||||
done
|
||||
|
|
@ -68,21 +68,29 @@ export SYSTEMTEST_FORCE_COLOR
|
|||
export SYSTEMTEST_NO_CLEAN
|
||||
|
||||
status=0
|
||||
if [ "$CYGWIN" = "" ]; then
|
||||
# Running on Unix, use "make" to run tests in parallel.
|
||||
make -j $numproc check
|
||||
status=$?
|
||||
|
||||
if [ "$NOPARALLEL" = "" ]; then
|
||||
if [ "$CYGWIN" = "" ]; then
|
||||
# Running on Unix, use "make" to run tests in parallel.
|
||||
make -j $numproc check
|
||||
status=$?
|
||||
else
|
||||
# Running on Windows: Cygwin "make" is available, but isn't being
|
||||
# used for the build. So we create a special makefile for the purpose
|
||||
# of parallel execution of system tests, and use that.
|
||||
$SHELL parallel.sh > parallel.mk
|
||||
make -f parallel.mk -j $numproc check || status=$?
|
||||
$SHELL ./runsequential.sh -r || status=$?
|
||||
$SHELL ./testsummary.sh
|
||||
fi
|
||||
else
|
||||
# Running on Windows: no "make" available, so ensure test interfaces are up
|
||||
# and then run the tests sequentially. (This is simpler than working out
|
||||
# where "nmake" is likely to be found. Besides, "nmake" does not support
|
||||
# parallel execution so if "nmake" is used, the tests would be run
|
||||
# sequentially anyway.)
|
||||
# the NOPARALLEL environment variable indicates that tests must be
|
||||
# run sequentially.
|
||||
$PERL testsock.pl || {
|
||||
cat <<-EOF
|
||||
I:NOTE: System tests were skipped because they require that the
|
||||
I: IP addresses 10.53.0.1 through 10.53.0.8 be configured
|
||||
I: as alias addresses on the loopback interface. Please run
|
||||
I:NOTE: System tests were skipped because they require the
|
||||
I: test IP addresses 10.53.0.* to be configured as alias
|
||||
I: addresses on the loopback interface. Please run
|
||||
I: "bin/tests/system/ifconfig.sh up" as root to configure them.
|
||||
EOF
|
||||
exit 1
|
||||
|
|
@ -93,4 +101,5 @@ else
|
|||
done
|
||||
} 2>&1 | tee "systests.output"
|
||||
fi
|
||||
|
||||
exit $status
|
||||
|
|
|
|||
|
|
@ -877,6 +877,7 @@
|
|||
./bin/tests/system/padding/clean.sh SH 2017,2018,2019
|
||||
./bin/tests/system/padding/setup.sh SH 2017,2018,2019
|
||||
./bin/tests/system/padding/tests.sh SH 2017,2018,2019
|
||||
./bin/tests/system/parallel.sh SH 2019
|
||||
./bin/tests/system/pending/clean.sh SH 2009,2012,2014,2016,2018,2019
|
||||
./bin/tests/system/pending/ns1/sign.sh SH 2009,2010,2012,2014,2016,2018,2019
|
||||
./bin/tests/system/pending/ns2/sign.sh SH 2009,2010,2012,2014,2016,2017,2018,2019
|
||||
|
|
|
|||
Loading…
Reference in a new issue