echo " @$(SHELL) ./run.sh -p $$port $$directory" >> $@ ; \
done
-# Targets to run the tests that can be done in parallel (which have unique
-# ports assigned to them) and the tests which must be run sequentially (because
-# they all use query port 5300 and control port 9953).
+# Targets to run the tests.
-parallel: parallel.mk
- @$(MAKE) -f parallel.mk
-
-sequential:
- @if test -f ./runall.sh; then $(SHELL) ./runall.sh; fi
-
-# Standard targets.
+test: parallel.mk
+ @$(MAKE) -f parallel.mk check 2>&1 | tee systests.output
+ @$(SHELL) ./runsequential.sh 2>&1 | tee -a systests.output
+ @$(SHELL) ./testsummary.sh
check: test
-test: parallel sequential
+# Other targets.
testclean clean distclean::
- if test -f ./cleanall.sh; then sh ./cleanall.sh; fi
+ if test -f ./cleanall.sh; then $(SHELL) ./cleanall.sh; fi
rm -f systests.output
rm -f random.data
rm -f parallel.mk
COLOR_FAIL=`tput setaf 1` # red
COLOR_WARN=`tput setaf 3` # yellow
COLOR_PASS=`tput setaf 2` # green
- COLOR_STEN=`tput setaf 4` # blue
+ COLOR_STEN=`tput setaf 4` # blue - for start/end messages
COLOR_INFO=`tput bold` # bold
COLOR_NONE=`tput sgr0`
else
TESTNAME="`basename $PWD`"
echo_i() {
- # Without formatting
- echo "I:$TESTNAME:$@" >> test.output
-
- # With formatting
echoinfo "I:$TESTNAME:$@"
}
# the upper of the 10 ports notionally assigned does not exceed 65535.
if [ "$((${port}+0))" != "${port}" ] || [ "${port}" -le 1024 ] || [ "${port}" -gt 65520 ]; then
- echo "Specified port '$port' must be numeric and in the range 1025 to 65520" >&2
+ echo "Base of port range ($port) must be numeric and in the range 1025 to 65520" >&2
exit 1
fi
aport8=$(($port + 8))
controlport=$(($port + 9))
+# Two more symbols that denote the limits of the range.
+
+portlow=$port
+porthigh=$controlport
+
# copy_setports - Copy Configuration File and Replace Ports
#
echoinfo "S:$test:`date $dateargs`" >&2
echoinfo "T:$test:1:A" >&2
echoinfo "A:$test:System test $test" >&2
-echoinfo "I:$test:PORT:${port}" >&2
-echoinfo "I:$test:CONTROLPORT:${controlport}" >&2
+echoinfo "I:$test:PORTRANGE:${portlow} - ${porthigh}"
if [ x${PERL:+set} = x ]
then
status=`expr $status + $?`
if [ $status != 0 ]; then
- echofail "R:$test:$FAIL"
+ echofail "R:$test:FAIL"
# Don't clean up - we need the evidence.
find . -name core -exec chmod 0644 '{}' \;
else
# 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/.
-#
# Run all the system tests.
#
-# Note: Use "make check" to run all the system tests. This script will just
-# run those tests that require that each of their nameservers is the only one
-# running on an IP address.
+# Usage:
+# runall.sh [numprocesses]
#
+# ...where numprocess is the number of processes to use. The default is 1,
+# which runs the tests sequentially.
SYSTEMTESTTOP=.
. $SYSTEMTESTTOP/conf.sh
-status=0
-
-{
- for d in $SEQUENTIALDIRS
- do
- $SHELL run.sh "${@}" $d || status=1
- done
-} 2>&1 | tee "systests.output"
-
-$PERL testsock.pl || {
- cat <<EOF >&2
-I:
-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: "bin/tests/system/ifconfig.sh up" as root to configure them.
-EOF
-}
-
-echo "I:System test result summary:"
-grep '^R:' systests.output | sed -e 's/^/I: /' -e 's/R:[^:]*//' | sort | uniq -c
-grep '^R:[^:]*:FAIL' systests.output > /dev/null && status=1
-
-exit $status
+numproc=
+if [ $# -eq 0 ]; then
+ numproc=1
+
+elif [ $# -gt 1 ] || "$(($1 + 0))" -ne "$1" ]; then
+ echo "Usage: ./runall.sh [numprocesses]"
+
+else
+ numproc=$1
+
+fi
+
+make -j $numproc check
+
+exit $?
--- /dev/null
+#!/bin/sh
+#
+# Copyright (C) 2000, 2001, 2004, 2007, 2010-2012, 2014-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/.
+
+# Run system tests that must be run sequentially
+#
+# Note: Use "make check" (or runall.sh) to run all the system tests. This
+# script will just run those tests that require that each of their nameservers
+# is the only one running on an IP address.
+#
+
+SYSTEMTESTTOP=.
+. $SYSTEMTESTTOP/conf.sh
+
+ for d in $SEQUENTIALDIRS
+ do
+ $SHELL run.sh "${@}" $d
+ done
--- /dev/null
+#!/bin/sh
+#
+# Copyright (C) 2000, 2001, 2004, 2007, 2010-2012, 2014-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/.
+
+# Searches the system test output file (systests.output) and prints a summary
+# of tests passed, failed, not run. It also checks whether the IP addresses
+# 10.53.0.[1-8] were set up and, if not, prints a warning.
+#
+# Usage:
+# testsummary.sh
+#
+# Status return:
+# 0 - no tests failed
+# 1 - one or more tests failed
+
+SYSTEMTESTTOP=.
+. $SYSTEMTESTTOP/conf.sh
+
+$PERL testsock.pl || {
+ cat <<EOF >&2
+I:
+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: "bin/tests/system/ifconfig.sh up" as root to configure them.
+EOF
+}
+
+status=0
+echo "I:System test result summary:"
+grep '^R:' systests.output | cut -d':' -f3 | sort | uniq -c | sed -e 's/^/I:/'
+grep '^R:[^:]*:FAIL' systests.output > /dev/null && status=1
+
+exit $status