]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Use helper functions for checking resolution
authorMichał Kępień <michal@isc.org>
Wed, 29 May 2019 09:05:01 +0000 (11:05 +0200)
committerMichał Kępień <michal@isc.org>
Wed, 29 May 2019 09:05:01 +0000 (11:05 +0200)
Extract repeated dig and grep calls into two helper shell functions,
resolution_succeeds() and resolution_fails(), in order to reduce code
duplication in the "legacy" system test, emphasize the similarity
between all the resolution checks in that test, and make the conditions
for success and failure uniform for all resolution checks in that test.

bin/tests/system/legacy/tests.sh

index 5a7da20963c13c036f60564c746ad201c00c849e..8a286cc4f4d6ec859523e5cfe892cfe1daa7a5b9 100755 (executable)
@@ -14,6 +14,33 @@ SYSTEMTESTTOP=..
 
 DIGOPTS="-p ${PORT} +tries=3 +time=5"
 
+# Check whether the SOA record for the name provided in $1 can be resolved by
+# ns1.  Return 0 if resolution succeeds as expected; return 1 otherwise.
+resolution_succeeds() {
+       _ret=0
+       $DIG $DIGOPTS +tcp @10.53.0.1 ${1} SOA > dig.out.test$n || _ret=1
+       grep "status: NOERROR" dig.out.test$n > /dev/null || _ret=1
+       return $_ret
+}
+
+# Check whether the SOA record for the name provided in $1 can be resolved by
+# ns1.  Return 0 if resolution fails as expected; return 1 otherwise.  Note that
+# both a SERVFAIL response and timing out mean resolution failed, so the exit
+# code of dig does not influence the result (the exit code for a SERVFAIL
+# response is 0 while the exit code for not getting a response at all is not 0).
+resolution_fails() {
+       _servfail=0
+       _timeout=0
+       $DIG $DIGOPTS +tcp @10.53.0.1 ${1} SOA > dig.out.test$n
+       grep "status: SERVFAIL" dig.out.test$n > /dev/null && _servfail=1
+       grep "connection timed out" dig.out.test$n > /dev/null && _timeout=1
+       if [ $_servfail -eq 1 ] || [ $_timeout -eq 1 ]; then
+               return 0
+       else
+               return 1
+       fi
+}
+
 status=0
 n=0
 
@@ -30,8 +57,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking recursive lookup to formerr edns server succeeds ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 ednsformerr soa > dig.out.test$n || ret=1
-grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
+resolution_succeeds ednsformerr. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -48,8 +74,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking recursive lookup to notimp edns server fails ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 ednsnotimp soa > dig.out.test$n
-grep "status: NOERROR" dig.out.test$n > /dev/null && ret=1
+resolution_fails ednsnotimp. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -66,8 +91,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking recursive lookup to refused edns server fails ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 ednsrefused soa > dig.out.test$n
-grep "status: NOERROR" dig.out.test$n > /dev/null && ret=1
+resolution_fails ednsrefused. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -90,8 +114,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking recursive lookup to drop edns server fails ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 dropedns soa > dig.out.test$n
-grep "status: NOERROR" dig.out.test$n > /dev/null && ret=1
+resolution_fails dropedns. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -111,8 +134,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking recursive lookup to drop edns + no tcp server fails ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 dropedns-notcp soa > dig.out.test$n
-grep "status: NOERROR" dig.out.test$n > /dev/null && ret=1
+resolution_fails dropedns-notcp. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -128,8 +150,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking recursive lookup to plain dns server succeeds ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 plain soa > dig.out.test$n || ret=1
-grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
+resolution_succeeds plain. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -147,8 +168,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking recursive lookup to plain dns + no tcp server succeeds ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 plain-notcp soa > dig.out.test$n || ret=1
-grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
+resolution_succeeds plain-notcp. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 n=`expr $n + 1`
@@ -170,8 +190,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking recursive lookup to edns 512 server succeeds ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 edns512 soa > dig.out.test$n || ret=1
-grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
+resolution_succeeds edns512. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -193,8 +212,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking recursive lookup to edns 512 + no tcp server fails ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 edns512-notcp soa > dig.out.test$n || ret=1
-grep "status: NOERROR" dig.out.test$n > /dev/null && ret=1
+resolution_fails edns512-notcp. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -205,9 +223,7 @@ $PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} legacy ns1
 n=`expr $n + 1`
 echo_i "checking recursive lookup to edns 512 + no tcp + trust anchor fails ($n)"
 ret=0
-$DIG $DIGOPTS +tcp @10.53.0.1 edns512-notcp soa > dig.out.test$n
-grep "status: SERVFAIL" dig.out.test$n > /dev/null ||
-    grep "connection timed out;" dig.out.test$n > /dev/null || ret=1
+resolution_fails edns512-notcp. || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`