From d3e7c0e6471a749b1c74641bcf90e8c72a023693 Mon Sep 17 00:00:00 2001 From: Artem Boldariev Date: Fri, 14 Jan 2022 12:25:04 +0200 Subject: [PATCH] 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. --- bin/tests/system/conf.sh.common | 21 +++++++++++++-------- bin/tests/system/doth/tests.sh | 6 +----- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/bin/tests/system/conf.sh.common b/bin/tests/system/conf.sh.common index 3d8d988a8e..3809d74aa8 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 119085a253..a69e2e57b3 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))