diff --git a/bin/tests/system/run.sh.in b/bin/tests/system/run.sh.in index 5caaced6b1..839bb34bf1 100644 --- a/bin/tests/system/run.sh.in +++ b/bin/tests/system/run.sh.in @@ -43,8 +43,9 @@ else fi do_run=false +restart=false log_flags="-r" -while getopts "sknp:r-:" OPT; do +while getopts "sknp:r-:t" OPT; do log_flags="$log_flags -$OPT$OPTARG" if [ "$OPT" = "-" ] && [ -n "$OPTARG" ]; then OPT="${OPTARG%%=*}" @@ -59,6 +60,7 @@ while getopts "sknp:r-:" OPT; do p | port) baseport=$OPTARG ;; r | run) do_run=true ;; s | skip) exit 77 ;; + t | restart) restart=true ;; -) break ;; *) echo "invalid option" >&2; exit 1 ;; esac @@ -113,8 +115,6 @@ fi # Determine which ports to use for this system test. eval "$(cd "${srcdir}" && ./get_ports.sh -p "$baseport" -t "$systest")" -restart=false - start_servers() { echoinfo "I:$systest:starting servers" if $restart; then @@ -173,14 +173,16 @@ else exit 0 fi -# Clean up files left from any potential previous runs -if test -f "$systest/clean.sh" -then - if ! ( cd "${systest}" && $SHELL clean.sh "$@" ); then - echowarn "I:$systest:clean.sh script failed" - echofail "R:$systest:FAIL" - echoend "E:$systest:$(date_with_args)" - exit 1 +# Clean up files left from any potential previous runs except when +# started with the --restart option. +if ! $restart; then + if test -f "$systest/clean.sh"; then + if ! ( cd "${systest}" && $SHELL clean.sh "$@" ); then + echowarn "I:$systest:clean.sh script failed" + echofail "R:$systest:FAIL" + echoend "E:$systest:$(date_with_args)" + exit 1 + fi fi fi @@ -313,7 +315,7 @@ if [ $status -ne 0 ]; then echofail "R:$systest:FAIL" else echopass "R:$systest:PASS" - if $clean; then + if $clean && ! $restart; then ( cd "${systest}" && $SHELL clean.sh "$@" ) if [ "${srcdir}" = "${builddir}" ]; then print_outstanding_files diff --git a/bin/tests/system/start.pl b/bin/tests/system/start.pl index 307fd25d5f..ea82e61500 100755 --- a/bin/tests/system/start.pl +++ b/bin/tests/system/start.pl @@ -344,7 +344,7 @@ sub construct_ans_command { if ($restart) { $command .= " >>ans.run 2>&1 &"; } else { - $command .= " >ans.run 2>&1 &"; + $command .= " >ans.run 2>&1 &"; } # get the shell to report the pid of the server ($!)