From: Artem Boldariev Date: Fri, 14 Jan 2022 10:25:04 +0000 (+0200) Subject: doth test: fix failure after reconfig X-Git-Tag: v9.18.0~9^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3e7c0e6471a749b1c74641bcf90e8c72a023693;p=thirdparty%2Fbind9.git doth test: fix failure after reconfig Sometimes the serving a query or two might fail in the test due to the listeners not being reinitialised on time. This commit makes the test suite to wait for reconfiguration message in the log file to detect the time when the reconfiguration request completed. --- diff --git a/bin/tests/system/conf.sh.common b/bin/tests/system/conf.sh.common index 3d8d988a8e3..3809d74aa8d 100644 --- a/bin/tests/system/conf.sh.common +++ b/bin/tests/system/conf.sh.common @@ -578,23 +578,28 @@ _repeat() ( return 0 ) +_times() { + awk "BEGIN{ for(i = 1; i <= $1; i++) print i}"; +} + rndc_reload() { $RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} reload $3 2>&1 | sed 's/^/'"I:$SYSTESTDIR:$1"' /' # reloading single zone is synchronous, if we're reloading whole server # we need to wait for reload to finish if [ -z "$3" ]; then - for __try in 0 1 2 3 4 5 6 7 8 9; do - $RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} status | grep "reload/reconfig in progress" > /dev/null || break - sleep 1 - done + for _ in $(_times 10); do + $RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} status | grep "reload/reconfig in progress" > /dev/null || break + sleep 1 + done fi } rndc_reconfig() { - $RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} reconfig 2>&1 | sed 's/^/'"I:$SYSTESTDIR:$1"' /' - for __try in 0 1 2 3 4 5 6 7 8 9; do - $RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} status | grep "reload/reconfig in progress" > /dev/null || break - sleep 1 + seconds=${3:-10} + $RNDC -c ../common/rndc.conf -s "$2" -p "${CONTROLPORT}" reconfig 2>&1 | sed 's/^/'"I:$SYSTESTDIR:$1"' /' + for _ in $(_times "$seconds"); do + "$RNDC" -c ../common/rndc.conf -s "$2" -p "${CONTROLPORT}" status | grep "reload/reconfig in progress" > /dev/null || break + sleep 1 done } diff --git a/bin/tests/system/doth/tests.sh b/bin/tests/system/doth/tests.sh index 119085a2539..a69e2e57b38 100644 --- a/bin/tests/system/doth/tests.sh +++ b/bin/tests/system/doth/tests.sh @@ -37,10 +37,6 @@ dig_with_opts() { "$DIG" $common_dig_options -p "${PORT}" "$@" } -rndccmd() ( - "$RNDC" -c ../common/rndc.conf -p "${CONTROLPORT}" -s "$@" -) - wait_for_tls_xfer() ( srv_number="$1" shift @@ -458,7 +454,7 @@ status=$((status + ret)) n=$((n + 1)) echo_i "doing rndc reconfig to see that queries keep being served after that ($n)" ret=0 -rndccmd 10.53.0.4 reconfig +rndc_reconfig ns4 10.53.0.4 60 if [ $ret != 0 ]; then echo_i "failed"; fi status=$((status + ret))