]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Address race in dnssec system test. 'clear signing records' can fail
authorMark Andrews <marka@isc.org>
Tue, 19 May 2020 00:09:51 +0000 (10:09 +1000)
committerMark Andrews <marka@isc.org>
Tue, 19 May 2020 03:46:07 +0000 (13:46 +1000)
as the update triggers by the rndc command to clear the signing records
may not have completed by the time the subsequent rndc command to test
that the records have been removed is commenced.  Loop several times to
prevent false negative.

(cherry picked from commit 353018c0e5a428c8314c103267fcfd18213e9e39)

bin/tests/system/dnssec/tests.sh

index 50f1dc74525d4de5160368b84c2d44b28db283d0..ca171b33150cf8e7f2cbff77dd45933093d157a6 100644 (file)
@@ -2633,12 +2633,15 @@ status=$((status+ret))
 
 echo_i "clear signing records ($n)"
 { rndccmd 10.53.0.3 signing -clear all update-nsec3.example > /dev/null; } 2>&1 || ret=1
-sleep 1
-{ rndccmd 10.53.0.3 signing -list update-nsec3.example > signing.out; } 2>&1
-grep -q "No signing records found" signing.out || {
-        ret=1
-        sed 's/^/ns3 /' signing.out | cat_i
+check_no_signing_record_found() {
+  { rndccmd 10.53.0.3 signing -list update-nsec3.example > signing.out; } 2>&1
+  grep -q "No signing records found" signing.out || {
+    sed 's/^/ns3 /' signing.out | cat_i
+    return 1
+  }
+  return 0
 }
+retry_quiet 5 check_no_signing_record_found || ret=1
 n=$((n+1))
 test "$ret" -eq 0 || echo_i "failed"
 status=$((status+ret))