]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Instead of sleeping for a fixed time, wait for named to log specific message in a...
authorOndřej Surý <ondrej@sury.org>
Sat, 16 Nov 2019 07:14:04 +0000 (15:14 +0800)
committerMichał Kępień <michal@isc.org>
Wed, 8 Jan 2020 12:07:42 +0000 (13:07 +0100)
(cherry picked from commit 355eb0c28897856787666425e19004f30e980b02)

bin/tests/system/runtime/tests.sh

index fe6adaa04faf8511860c462c2c1fe09b8a46ac5a..523e01ca94c77d24cc5093b61ec4ef7a1335c805 100644 (file)
@@ -44,6 +44,21 @@ kill_named() {
        return 0
 }
 
+wait_for_named() {
+       retries=10
+       while [ "$retries" -gt 0 ]; do
+               if grep "$@" >/dev/null 2>&1; then
+                       break
+               fi
+               sleep 1
+               retries=$((retries-1))
+       done
+       if [ "$retries" -eq 0 ]; then
+               return 1
+       fi
+       return 0
+}
+
 status=0
 n=0
 
@@ -60,18 +75,9 @@ if [ ! "$CYGWIN" ]; then
     n=$((n+1))
     echo_i "verifying that named checks for conflicting listeners ($n)"
     ret=0
-    (cd ns2 && $NAMED -c named-alt1.conf -D ns2-extra-1 -X other.lock -m record,size,mctx -d 99 -g -U 4 >> named2.run 2>&1 & )
-    for i in 1 2 3 4 5 6 7 8 9
-    do
-        grep "unable to listen on any configured interface" ns2/named2.run > /dev/null && break
-        sleep 1
-    done
-    grep "unable to listen on any configured interface" ns2/named2.run > /dev/null || ret=1
-    for i in 1 2 3 4 5 6 7 8 9
-    do
-       grep "exiting (due to fatal error)" ns2/named2.run > /dev/null && break
-       sleep 1
-    done
+    (cd ns2 && $NAMED -c named-alt1.conf -D ns2-extra-1 -X other.lock -m record,size,mctx -d 99 -g -U 4 >> named$n.run 2>&1 & )
+    wait_for_named "unable to listen on any configured interface" ns2/named$n.run || ret=1
+    wait_for_named "exiting (due to fatal error)" ns2/named$n.run || ret=1
     kill_named named.pid && ret=1
     if [ $ret != 0 ]; then echo_i "failed"; fi
     status=$((status+ret))
@@ -80,18 +86,17 @@ fi
 n=$((n+1))
 echo_i "verifying that named checks for conflicting named processes ($n)"
 ret=0
-(cd ns2 && $NAMED -c named-alt2.conf -D runtime-ns2-extra-2 -X named.lock -m record,size,mctx -d 99 -g -U 4 >> named3.run 2>&1 & )
-sleep 2
-grep "another named process" ns2/named3.run > /dev/null || ret=1
+(cd ns2 && $NAMED -c named-alt2.conf -D runtime-ns2-extra-2 -X named.lock -m record,size,mctx -d 99 -g -U 4 >> named$n.run 2>&1 & )
+wait_for_named "another named process" ns2/named$n.run || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
 n=$((n+1))
 echo_i "verifying that 'lock-file none' disables process check ($n)"
 ret=0
-(cd ns2 && $NAMED -c named-alt3.conf -D runtime-ns2-extra-3 -m record,size,mctx -d 99 -g -U 4 >> named4.run 2>&1 & )
-sleep 2
-grep "another named process" ns2/named4.run > /dev/null && ret=1
+(cd ns2 && $NAMED -c named-alt3.conf -D runtime-ns2-extra-3 -m record,size,mctx -d 99 -g -U 4 >> named$n.run 2>&1 & )
+wait_for_named "running$" ns2/named$n.run || ret=1
+grep "another named process" ns2/named$n.run > /dev/null && ret=1
 kill_named ns2/named-alt3.pid || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
@@ -104,8 +109,7 @@ then
     copy_setports ns2/named-alt4.conf.in ns2/named.conf
     $RNDCCMD 10.53.0.2 reconfig > rndc.out.$n 2>&1 && ret=1
     grep "failed: permission denied" rndc.out.$n > /dev/null 2>&1 || ret=1
-    sleep 1
-    grep "managed-keys-directory '.*' is not writable" ns2/named.run > /dev/null 2>&1 || ret=1
+    wait_for_named "managed-keys-directory '.*' is not writable" ns2/named.run || ret=1
     if [ $ret != 0 ]; then echo_i "failed"; fi
     status=$((status+ret))
 
@@ -115,8 +119,7 @@ then
     copy_setports ns2/named-alt5.conf.in ns2/named.conf
     $RNDCCMD 10.53.0.2 reconfig > rndc.out.$n 2>&1 && ret=1
     grep "failed: permission denied" rndc.out.$n > /dev/null 2>&1 || ret=1
-    sleep 1
-    grep "working directory '.*' is not writable" ns2/named.run > /dev/null 2>&1 || ret=1
+    wait_for_named "working directory '.*' is not writable" ns2/named.run || ret=1
     if [ $ret != 0 ]; then echo_i "failed"; fi
     status=$((status+ret))
 
@@ -134,10 +137,9 @@ fi
 n=$((n+1))
 echo_i "checking that named refuses to start if managed-keys-directory is set and not writable ($n)"
 ret=0
-(cd ns2 && $NAMED -c named-alt4.conf -D runtime-ns2-extra-4 -d 99 -g > named4.run 2>&1 &)
-sleep 2
-grep "managed-keys-directory '.*' is not writable" ns2/named4.run > /dev/null 2>&1 || ret=1
-grep "exiting (due to fatal error)" ns2/named4.run > /dev/null || ret=1
+(cd ns2 && $NAMED -c named-alt4.conf -D runtime-ns2-extra-4 -d 99 -g > named$n.run 2>&1 &)
+wait_for_named "exiting (due to fatal error)" ns2/named$n.run || ret=1
+grep "managed-keys-directory '.*' is not writable" ns2/named$n.run > /dev/null 2>&1 || ret=1
 kill_named ns2/named.pid && ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
@@ -145,10 +147,9 @@ status=$((status+ret))
 n=$((n+1))
 echo_i "checking that named refuses to start if managed-keys-directory is unset and working directory is not writable ($n)"
 ret=0
-(cd ns2 && $NAMED -c named-alt5.conf -D runtime-ns2-extra-5 -d 99 -g > named5.run 2>&1 &)
-sleep 2
-grep "working directory '.*' is not writable" ns2/named5.run > /dev/null 2>&1 || ret=1
-grep "exiting (due to fatal error)" ns2/named5.run > /dev/null || ret=1
+(cd ns2 && $NAMED -c named-alt5.conf -D runtime-ns2-extra-5 -d 99 -g > named$n.run 2>&1 &)
+wait_for_named "exiting (due to fatal error)" ns2/named$n.run || ret=1
+grep "working directory '.*' is not writable" ns2/named$n.run > /dev/null 2>&1 || ret=1
 kill_named ns2/named.pid && ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
@@ -156,8 +157,8 @@ status=$((status+ret))
 n=$((n+1))
 echo_i "checking that named starts if managed-keys-directory is writable and working directory is not writable ($n)"
 ret=0
-(cd ns2/nope && $NAMED -c ../named-alt6.conf -D runtime-ns2-extra-6 -d 99 -g > ../named6.run 2>&1 &)
-sleep 2
+(cd ns2/nope && $NAMED -c ../named-alt6.conf -D runtime-ns2-extra-6 -d 99 -g > ../named$n.run 2>&1 &)
+wait_for_named " running$" ns2/named$n.run || ret=1
 kill_named ns2/named.pid || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))