]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[rt46602] Tidy up run management
authorStephen Morris <stephen@isc.org>
Thu, 23 Nov 2017 10:02:15 +0000 (10:02 +0000)
committerStephen Morris <stephen@isc.org>
Fri, 16 Feb 2018 14:57:51 +0000 (14:57 +0000)
Miscellaneous tidying up of run management.  The most significant
change is that "runall.sh" now runs _all_ the tests, even the
ones that can run in parallel.  runsequential.sh is the script
to run tests that have not been converted to parallel running.

bin/tests/system/Makefile.in
bin/tests/system/conf.sh.in
bin/tests/system/getopts.sh
bin/tests/system/run.sh
bin/tests/system/runall.sh
bin/tests/system/runsequential.sh [new file with mode: 0644]
bin/tests/system/testsummary.sh [new file with mode: 0644]

index e27a2a04f041a436425bd09d3692af862a0ba0a2..f14118acc4ea40356b4c6495da01fb9f185aa69a 100644 (file)
@@ -66,24 +66,19 @@ parallel.mk:
                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
index 924ba4a8e310895b54ad2a6c8ba196bf0ca5adc8..8646d6cff021417a43222d8eb9d557d43a71b5f1 100644 (file)
@@ -160,7 +160,7 @@ if test -t 1 && type tput > /dev/null 2>&1 ; then
     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
@@ -209,10 +209,6 @@ fi
 TESTNAME="`basename $PWD`"
 
 echo_i() {
-    # Without formatting
-    echo "I:$TESTNAME:$@" >> test.output
-
-    # With formatting
     echoinfo "I:$TESTNAME:$@"
 }
 
index 24d1b367319a8bfb3c52c5b69195060b55a9bc4c..e2e8455f09cede9edef21ebb926c96ae5bcab32b 100644 (file)
@@ -42,7 +42,7 @@ OPTIND=1
 # 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
 
@@ -56,6 +56,11 @@ aport7=$(($port + 7))
 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
 #
index 99dcdbccb0f6f9b660f486c1ac335d06f86997c1..68bc86c1877589a21b6c7561a3d74e39aef06bd8 100644 (file)
@@ -43,8 +43,7 @@ test -d $test || { echofail "$0: $test: no such test" >&2; exit 1; }
 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
@@ -113,7 +112,7 @@ $PERL stop.pl $test
 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
index 315caf67c0fbdaa125247246132f2dc8b7734afe..f9e1e47a3cb4019bae2db4b7e265d8fb7ae36a25 100644 (file)
@@ -6,38 +6,29 @@
 # 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 $?
diff --git a/bin/tests/system/runsequential.sh b/bin/tests/system/runsequential.sh
new file mode 100644 (file)
index 0000000..caa4ed7
--- /dev/null
@@ -0,0 +1,22 @@
+#!/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
diff --git a/bin/tests/system/testsummary.sh b/bin/tests/system/testsummary.sh
new file mode 100644 (file)
index 0000000..11cc79f
--- /dev/null
@@ -0,0 +1,38 @@
+#!/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