]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Update serve-stale system test
authorMatthijs Mekking <matthijs@isc.org>
Wed, 8 Mar 2023 08:11:19 +0000 (09:11 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Thu, 9 Mar 2023 07:14:17 +0000 (08:14 +0100)
The serve-stale system test was intermittently failing due to a timing
issue:

    I:serve-stale:check stale data.example TXT was refreshed...
    I:serve-stale:failed

The RRset is refreshed, however, it first checks for an expected log
line, prior checking that the stale data.example TXT was refreshed
(using dig). This log line is there to ensure the record is actually
refreshed before we start querying again. Alternatively we could just
retry_quiet 10 <wait for dig output matches expectations>. It would
lower the chances for intermittent test failures, since there is no
longer a "check for log line, sleep one second if check fails, check
for log line, ...", prior to the check.

(cherry picked from commit 0bf36da305bc2d028450fa2313f3c0789e6e7451)

bin/tests/system/serve-stale/tests.sh

index 06529f53438e45df497ed8ba1812600eabb75f51..92f8c2238114ad77670b0f06907724cefb702f57 100755 (executable)
@@ -2016,8 +2016,11 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
 wait_for_rrset_refresh() {
-       nextpart ns3/named.run | grep 'data.example.*2.*TXT.*"A text record with a 2 second ttl"' > /dev/null && return 0
-       return 1
+       $DIG -p ${PORT} @10.53.0.3 data.example TXT > dig.out.test$n
+       grep "status: NOERROR" dig.out.test$n > /dev/null || return 1
+       grep "EDE" dig.out.test$n > /dev/null && return 1
+       grep "ANSWER: 1," dig.out.test$n > /dev/null || return 1
+       grep "data\.example\..*[12].*IN.*TXT.*A text record with a 2 second ttl" dig.out.test$n > /dev/null || return 1
 }
 
 # This test ensures that after we get stale data due to
@@ -2027,11 +2030,6 @@ n=$((n+1))
 ret=0
 echo_i "check stale data.example TXT was refreshed (stale-answer-client-timeout 0) ($n)"
 retry_quiet 10 wait_for_rrset_refresh || ret=1
-$DIG -p ${PORT} @10.53.0.3 data.example TXT > dig.out.test$n
-grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-grep "EDE" dig.out.test$n > /dev/null && ret=1
-grep "ANSWER: 1," dig.out.test$n > /dev/null || ret=1
-grep "data\.example\..*[12].*IN.*TXT.*A text record with a 2 second ttl" dig.out.test$n > /dev/null || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
@@ -2214,11 +2212,6 @@ n=$((n+1))
 ret=0
 echo_i "check stale data.example TXT was refreshed (stale-answer-client-timeout 0 stale-refresh-time 4) ($n)"
 retry_quiet 10 wait_for_rrset_refresh || ret=1
-$DIG -p ${PORT} @10.53.0.3 data.example TXT > dig.out.test$n
-grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-grep "EDE" dig.out.test$n > /dev/null && ret=1
-grep "ANSWER: 1," dig.out.test$n > /dev/null || ret=1
-grep "data\.example\..*[12].*IN.*TXT.*A text record with a 2 second ttl" dig.out.test$n > /dev/null || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))