diff --git a/bin/tests/system/checkconf/good-rrset-order-none.conf b/bin/tests/system/checkconf/good-rrset-order-none.conf new file mode 100644 index 0000000000..afd0ab660b --- /dev/null +++ b/bin/tests/system/checkconf/good-rrset-order-none.conf @@ -0,0 +1,5 @@ +options { + rrset-order { + order none; + }; +}; diff --git a/bin/tests/system/rrsetorder/clean.sh b/bin/tests/system/rrsetorder/clean.sh index ea90d8f67f..97c025ae32 100644 --- a/bin/tests/system/rrsetorder/clean.sh +++ b/bin/tests/system/rrsetorder/clean.sh @@ -10,7 +10,7 @@ # information regarding copyright ownership. rm -f dig.out.test* -rm -f dig.out.cyclic dig.out.fixed dig.out.random dig.out.nomatch +rm -f dig.out.cyclic dig.out.fixed dig.out.random dig.out.nomatch dig.out.none rm -f dig.out.0 dig.out.1 dig.out.2 dig.out.3 rm -f dig.out.cyclic2 rm -f ns2/root.bk diff --git a/bin/tests/system/rrsetorder/ns1/named.conf.in b/bin/tests/system/rrsetorder/ns1/named.conf.in index 6e009f4835..7e7170dbe7 100644 --- a/bin/tests/system/rrsetorder/ns1/named.conf.in +++ b/bin/tests/system/rrsetorder/ns1/named.conf.in @@ -24,6 +24,7 @@ options { name "fixed.example" order fixed; name "random.example" order random; name "cyclic.example" order cyclic; + name "none.example" order none; type NS order random; order cyclic; }; diff --git a/bin/tests/system/rrsetorder/ns1/root.db b/bin/tests/system/rrsetorder/ns1/root.db index b5a8f8f982..2367f1025f 100644 --- a/bin/tests/system/rrsetorder/ns1/root.db +++ b/bin/tests/system/rrsetorder/ns1/root.db @@ -42,3 +42,8 @@ nomatch.example. A 1.2.3.1 nomatch.example. A 1.2.3.2 nomatch.example. A 1.2.3.3 nomatch.example. A 1.2.3.4 +; +none.example. A 1.2.3.1 +none.example. A 1.2.3.2 +none.example. A 1.2.3.3 +none.example. A 1.2.3.4 diff --git a/bin/tests/system/rrsetorder/ns2/named.conf.in b/bin/tests/system/rrsetorder/ns2/named.conf.in index 2f13d66c71..998e07459a 100644 --- a/bin/tests/system/rrsetorder/ns2/named.conf.in +++ b/bin/tests/system/rrsetorder/ns2/named.conf.in @@ -24,6 +24,7 @@ options { name "fixed.example" order fixed; name "random.example" order random; name "cyclic.example" order cyclic; + name "none.example" order none; type NS order random; order cyclic; }; diff --git a/bin/tests/system/rrsetorder/ns3/named.conf.in b/bin/tests/system/rrsetorder/ns3/named.conf.in index 7343a7e618..1f3b54ac25 100644 --- a/bin/tests/system/rrsetorder/ns3/named.conf.in +++ b/bin/tests/system/rrsetorder/ns3/named.conf.in @@ -24,6 +24,7 @@ options { name "fixed.example" order fixed; name "random.example" order random; name "cyclic.example" order cyclic; + name "none.example" order none; type NS order random; order cyclic; }; diff --git a/bin/tests/system/rrsetorder/tests.sh b/bin/tests/system/rrsetorder/tests.sh index 843e4266b6..2a93c2843f 100644 --- a/bin/tests/system/rrsetorder/tests.sh +++ b/bin/tests/system/rrsetorder/tests.sh @@ -143,6 +143,21 @@ if [ $match -lt `expr ${GOOD_RANDOM_NO} / 3` ]; then ret=1; fi if [ $ret != 0 ]; then echo_i "failed"; fi status=`expr $status + $ret` +echo_i "Checking order none (primary)" +ret=0 +# Fetch the "reference" response and ensure it contains the expected records. +$DIGCMD @10.53.0.1 none.example > dig.out.none || ret=1 +for i in 1 2 3 4; do + grep -F -q 1.2.3.$i dig.out.none || ret=1 +done +# Ensure 20 further queries result in the same response as the "reference" one. +for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do + $DIGCMD @10.53.0.1 none.example > dig.out.test$i || ret=1 + $DIFF dig.out.none dig.out.test$i >/dev/null || ret=1 +done +if [ $ret != 0 ]; then echo_i "failed"; fi +status=`expr $status + $ret` + # # # @@ -237,6 +252,21 @@ if [ $match -lt `expr ${GOOD_RANDOM_NO} / 3` ]; then ret=1; fi if [ $ret != 0 ]; then echo_i "failed"; fi status=`expr $status + $ret` +echo_i "Checking order none (secondary)" +ret=0 +# Fetch the "reference" response and ensure it contains the expected records. +$DIGCMD @10.53.0.2 none.example > dig.out.none || ret=1 +for i in 1 2 3 4; do + grep -F -q 1.2.3.$i dig.out.none || ret=1 +done +# Ensure 20 further queries result in the same response as the "reference" one. +for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do + $DIGCMD @10.53.0.2 none.example > dig.out.test$i || ret=1 + $DIFF dig.out.none dig.out.test$i >/dev/null || ret=1 +done +if [ $ret != 0 ]; then echo_i "failed"; fi +status=`expr $status + $ret` + echo_i "Shutting down slave" (cd ..; $SHELL stop.sh rrsetorder ns2 ) @@ -347,6 +377,21 @@ if [ $match -lt `expr ${GOOD_RANDOM_NO} / 3` ]; then ret=1; fi if [ $ret != 0 ]; then echo_i "failed"; fi status=`expr $status + $ret` +echo_i "Checking order none (secondary loaded from disk)" +ret=0 +# Fetch the "reference" response and ensure it contains the expected records. +$DIGCMD @10.53.0.2 none.example > dig.out.none || ret=1 +for i in 1 2 3 4; do + grep -F -q 1.2.3.$i dig.out.none || ret=1 +done +# Ensure 20 further queries result in the same response as the "reference" one. +for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do + $DIGCMD @10.53.0.2 none.example > dig.out.test$i || ret=1 + $DIFF dig.out.none dig.out.test$i >/dev/null || ret=1 +done +if [ $ret != 0 ]; then echo_i "failed"; fi +status=`expr $status + $ret` + # # # @@ -444,6 +489,21 @@ echo_i "Random selection return $match of ${GOOD_RANDOM_NO} possible orders in 3 if [ $match -lt `expr ${GOOD_RANDOM_NO} / 3` ]; then ret=1; fi if [ $ret != 0 ]; then echo_i "failed"; fi +echo_i "Checking order none (cache)" +ret=0 +# Fetch the "reference" response and ensure it contains the expected records. +$DIGCMD @10.53.0.3 none.example > dig.out.none || ret=1 +for i in 1 2 3 4; do + grep -F -q 1.2.3.$i dig.out.none || ret=1 +done +# Ensure 20 further queries result in the same response as the "reference" one. +for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do + $DIGCMD @10.53.0.3 none.example > dig.out.test$i || ret=1 + $DIFF dig.out.none dig.out.test$i >/dev/null || ret=1 +done +if [ $ret != 0 ]; then echo_i "failed"; fi +status=`expr $status + $ret` + echo_i "Checking default order (cache)" ret=0 for i in $GOOD_RANDOM @@ -469,33 +529,22 @@ done echo_i "Default selection return $match of ${GOOD_RANDOM_NO} possible orders in 36 samples" if [ $match -lt `expr ${GOOD_RANDOM_NO} / 3` ]; then ret=1; fi if [ $ret != 0 ]; then echo_i "failed"; fi - -echo_i "Checking default order no match in rrset-order (no shuffling)" -ret=0 -for i in $GOOD_RANDOM -do - eval match$i=0 -done -for i in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 9 -do -$DIGCMD @10.53.0.4 nomatch.example > dig.out.nomatch|| ret=1 - match=0 - for j in $GOOD_RANDOM - do - eval "$DIFF dig.out.nomatch dig.out.random.good$j >/dev/null && match$j=1 match=1" - if [ $match -eq 1 ]; then break; fi - done - if [ $match -eq 0 ]; then ret=1; fi -done -match=0 -for i in $GOOD_RANDOM -do -eval "match=\`expr \$match + \$match$i\`" -done -echo_i "Consistent selection return $match of ${GOOD_RANDOM_NO} possible orders in 36 samples" -if [ $match -ne 1 ]; then ret=1; fi -if [ $ret != 0 ]; then echo_i "failed"; fi - status=`expr $status + $ret` + +echo_i "Checking default order no match in rrset-order (cache)" +ret=0 +# Fetch the "reference" response and ensure it contains the expected records. +$DIGCMD @10.53.0.4 nomatch.example > dig.out.nomatch || ret=1 +for i in 1 2 3 4; do + grep -F -q 1.2.3.$i dig.out.nomatch || ret=1 +done +# Ensure 20 further queries result in the same response as the "reference" one. +for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do + $DIGCMD @10.53.0.4 nomatch.example > dig.out.test$i || ret=1 + $DIFF dig.out.nomatch dig.out.test$i >/dev/null || ret=1 +done +if [ $ret != 0 ]; then echo_i "failed"; fi +status=`expr $status + $ret` + echo_i "exit status: $status" [ $status -eq 0 ] || exit 1