]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Allow retaining system test output using an environment variable
authorMichał Kępień <michal@isc.org>
Wed, 21 Feb 2018 13:59:33 +0000 (14:59 +0100)
committerMichał Kępień <michal@isc.org>
Wed, 21 Feb 2018 13:59:33 +0000 (14:59 +0100)
Instead of exporting an environment variable containing a command line
argument (NOCLEAN="-n"), extend run.sh to handle a "boolean" environment
variable (SYSTEMTEST_NO_CLEAN) itself.  The former method is buggy
because the value of NOCLEAN is set in parallel.mk when that file is
first created, but it is not subsequently updated upon each test run
(because make considers parallel.mk to be up to date).

To retain backward compatibility, the "-n" command line argument for
run.sh is still supported (and has a higher priority than the relevant
environment variable).

The SYSTEMTEST_NO_CLEAN environment variable can also be used directly
to prevent cleanup when using "make test" instead of runall.sh.

Apart from fixing a bug, this simplifies the way runall.sh controls
run.sh behavior due to the Makefile being bypassed.  Direct processing
of environment variables in run.sh is more scalable in the long run,
given that the previously utilized technique, even with its
implementation fixed, would still require Makefile.in to be modified in
two places each time a new flag needed to be passed from runall.sh to
run.sh.

bin/tests/system/Makefile.in
bin/tests/system/README
bin/tests/system/run.sh
bin/tests/system/runall.sh

index 2ab0d3c5866ddd4f0abe197ea8ab7a0d1ec5006d..6f086f491c68be84fc322ef572f6a45e03cbbdce 100644 (file)
@@ -65,7 +65,7 @@ parallel.mk:
        for directory in $(PARALLEL) ; do \
                echo "" >> $@ ; \
                echo "test-`echo $$directory | tr _ -`:" >> $@ ; \
-               echo "  @$(SHELL) ./run.sh $$NOCLEAN -r -p $$port $$directory 2>&1 | tee $$directory/test.output" >> $@ ; \
+               echo "  @$(SHELL) ./run.sh -r -p $$port $$directory 2>&1 | tee $$directory/test.output" >> $@ ; \
                port=`expr $$port + 100` ; \
        done
 
@@ -73,7 +73,7 @@ parallel.mk:
 
 test: parallel.mk subdirs
        @$(MAKE) -f parallel.mk check
-       @$(SHELL) ./runsequential.sh $$NOCLEAN -r
+       @$(SHELL) ./runsequential.sh -r
        @$(SHELL) ./testsummary.sh
 
 check: test
index 4e59cf5aa51401e4688ecaed8edeceea256584cc..ad5d1dce636b83b738638bba4fb4b14d552e66b0 100644 (file)
@@ -151,10 +151,10 @@ A run of all the system tests can also be initiated via make:
     make [-j numproc] test
 
 In this case, retention of the output files after a test completes successfully
-is specified by setting the environment variable NOCLEAN to "-n" prior to
-running make, e.g.
+is specified by setting the environment variable SYSTEMTEST_NO_CLEAN to 1 prior
+to running make, e.g.
 
-    NOCLEAN=-n make [-j numproc] test
+    SYSTEMTEST_NO_CLEAN=1 make [-j numproc] test
 
 
 
@@ -712,7 +712,7 @@ the ports are assigned when the tests are run.  This is achieved by having the
 when "make check" is run, and contains a target for each test of the form:
 
     <test-name>:
-        @$(SHELL) run.sh $$NOCLEAN -r -p <baseport> <test-name>
+        @$(SHELL) run.sh -r -p <baseport> <test-name>
 
 The <baseport> is unique and the values of <baseport> for each test are
 separated by at least 100 ports.
index 38ee8623f070cdc8c53bb447703d0521ce66de37..3b9b709097084d980ee6f90acc3b98812b0a5ca7 100644 (file)
@@ -14,9 +14,14 @@ SYSTEMTESTTOP=.
 . $SYSTEMTESTTOP/conf.sh
 
 stopservers=true
-clean=true
 baseport=5300
 
+if [ ${SYSTEMTEST_NO_CLEAN:-0} -eq 1 ]; then
+       clean=false
+else
+       clean=true
+fi
+
 while getopts "knp:r" flag; do
     case "$flag" in
        k) stopservers=false ;;
index ad2a825c2e9a4c384443672088783396dc616410..a4a477214cda96e9995c1a97549b14de4c56e8f0 100644 (file)
@@ -24,12 +24,13 @@ SYSTEMTESTTOP=.
 
 usage="Usage: ./runall.sh [-n] [numprocesses]"
 
+SYSTEMTEST_NO_CLEAN=0
+
 # Handle "-n" switch if present.
 
-NOCLEAN=""
 while getopts "n" flag; do
     case "$flag" in
-        n) NOCLEAN="-n" ;;
+        n) SYSTEMTEST_NO_CLEAN=1 ;;
     esac
 done
 export NOCLEAN
@@ -54,6 +55,8 @@ fi
 
 # Run the tests.
 
+export SYSTEMTEST_NO_CLEAN
+
 status=0
 if [ "$CYGWIN" = "" ]; then
     # Running on Unix, use "make" to run tests in parallel.
@@ -66,7 +69,7 @@ else
     # used, the tests would be run sequentially anyway.)
     {
         for testdir in $SUBDIRS; do
-            $SHELL run.sh $NOCLEAN $testdir || status=1
+            $SHELL run.sh $testdir || status=1
         done
     } 2>&1 | tee "systests.output"
 fi