mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 06:25:31 +00:00
3260. [bug] "rrset-order cyclic" could appears to not rotate
for some query patterns. [RT #27170]
This commit is contained in:
@@ -14,8 +14,9 @@
|
||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: clean.sh,v 1.8 2008/04/24 23:46:59 tbox Exp $
|
||||
# $Id: clean.sh,v 1.9 2011/12/23 00:38:23 marka Exp $
|
||||
|
||||
rm -f dig.out.test*
|
||||
rm -f dig.out.cyclic dig.out.fixed dig.out.random
|
||||
rm -f dig.out.0 dig.out.1 dig.out.2 dig.out.3
|
||||
rm -f ns2/root.bk
|
||||
|
4
bin/tests/system/rrsetorder/dig.out.cyclic.good1
Normal file
4
bin/tests/system/rrsetorder/dig.out.cyclic.good1
Normal file
@@ -0,0 +1,4 @@
|
||||
1.2.3.1
|
||||
1.2.3.2
|
||||
1.2.3.3
|
||||
1.2.3.4
|
4
bin/tests/system/rrsetorder/dig.out.cyclic.good2
Normal file
4
bin/tests/system/rrsetorder/dig.out.cyclic.good2
Normal file
@@ -0,0 +1,4 @@
|
||||
1.2.3.2
|
||||
1.2.3.3
|
||||
1.2.3.4
|
||||
1.2.3.1
|
4
bin/tests/system/rrsetorder/dig.out.cyclic.good3
Normal file
4
bin/tests/system/rrsetorder/dig.out.cyclic.good3
Normal file
@@ -0,0 +1,4 @@
|
||||
1.2.3.3
|
||||
1.2.3.4
|
||||
1.2.3.1
|
||||
1.2.3.2
|
4
bin/tests/system/rrsetorder/dig.out.cyclic.good4
Normal file
4
bin/tests/system/rrsetorder/dig.out.cyclic.good4
Normal file
@@ -0,0 +1,4 @@
|
||||
1.2.3.4
|
||||
1.2.3.1
|
||||
1.2.3.2
|
||||
1.2.3.3
|
@@ -14,12 +14,13 @@
|
||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: tests.sh,v 1.8 2008/10/09 21:27:52 each Exp $
|
||||
# $Id: tests.sh,v 1.9 2011/12/23 00:38:23 marka Exp $
|
||||
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
|
||||
status=0
|
||||
n=0
|
||||
|
||||
if grep "^#define DNS_RDATASET_FIXED" $TOP/config.h > /dev/null 2>&1 ; then
|
||||
test_fixed=true
|
||||
@@ -31,47 +32,57 @@ fi
|
||||
#
|
||||
#
|
||||
#
|
||||
n=`expr $n + 1`
|
||||
if $test_fixed; then
|
||||
echo "I: Checking order fixed (master)"
|
||||
ret=0
|
||||
echo "I: Checking order fixed (master) ($n)"
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||
do
|
||||
ret=0
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.1 fixed.example > dig.out.fixed || ret=1
|
||||
cmp -s dig.out.fixed dig.out.fixed.good || ret=1
|
||||
-p 5300 @10.53.0.1 fixed.example > dig.out.test$n || ret=1
|
||||
cmp -s dig.out.test$n dig.out.fixed.good || ret=1
|
||||
[ $ret = 0 ] && break
|
||||
done
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
else
|
||||
echo "I: Skipped: Checking order fixed (master) ($n)"
|
||||
fi
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
echo "I: Checking order cyclic (master)"
|
||||
n=`expr $n + 1`
|
||||
echo "I: Checking order cyclic (master) ($n)"
|
||||
ret=0
|
||||
matches=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
j=`expr $i % 4`
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.1 cyclic.example > dig.out.cyclic || ret=1
|
||||
if [ $i -le 4 ]; then
|
||||
cp dig.out.cyclic dig.out.$j
|
||||
else
|
||||
cmp -s dig.out.cyclic dig.out.$j && matches=`expr $matches + 1`
|
||||
fi
|
||||
eval match$i=0
|
||||
done
|
||||
cmp -s dig.out.0 dig.out.1 && ret=1
|
||||
cmp -s dig.out.0 dig.out.2 && ret=1
|
||||
cmp -s dig.out.0 dig.out.3 && ret=1
|
||||
cmp -s dig.out.1 dig.out.2 && ret=1
|
||||
cmp -s dig.out.1 dig.out.3 && ret=1
|
||||
cmp -s dig.out.2 dig.out.3 && ret=1
|
||||
if [ $matches -ne 16 ]; then ret=1; fi
|
||||
for i in a b c d e f g h
|
||||
do
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.1 cyclic.example > dig.out.cyclic || ret=1
|
||||
match=0
|
||||
for j in 1 2 3 4
|
||||
do
|
||||
eval "cmp -s dig.out.cyclic dig.out.cyclic.good$j && match$j=1 match=1"
|
||||
if [ $match -eq 1 ]; then break; fi
|
||||
done
|
||||
if [ $match -eq 0 ]; then ret=1; echo "I:unexpected order"; fi
|
||||
done
|
||||
match=0
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
eval "match=\`expr \$match + \$match$i\`"
|
||||
done
|
||||
echo "I: Cyclic selection return $match of 4 possible orders in 8 samples"
|
||||
if [ $match -ne 4 ]; then echo ret=1; fi
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo "I: Checking order random (master)"
|
||||
n=`expr $n + 1`
|
||||
echo "I: Checking order random (master) ($n)"
|
||||
ret=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
||||
do
|
||||
@@ -102,47 +113,56 @@ status=`expr $status + $ret`
|
||||
#
|
||||
#
|
||||
#
|
||||
n=`expr $n + 1`
|
||||
if $test_fixed; then
|
||||
echo "I: Checking order fixed (slave)"
|
||||
echo "I: Checking order fixed (slave) ($n)"
|
||||
ret=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||
do
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.2 fixed.example > dig.out.fixed || ret=1
|
||||
cmp -s dig.out.fixed dig.out.fixed.good || ret=1
|
||||
-p 5300 @10.53.0.2 fixed.example > dig.out.test$n || ret=1
|
||||
cmp -s dig.out.test$n dig.out.fixed.good || ret=1
|
||||
done
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
else
|
||||
echo "I: Skipped: Checking order fixed (slave) ($n)"
|
||||
fi
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
echo "I: Checking order cyclic (slave)"
|
||||
n=`expr $n + 1`
|
||||
echo "I: Checking order cyclic (slave) ($n)"
|
||||
ret=0
|
||||
matches=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
j=`expr $i % 4`
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.2 cyclic.example > dig.out.cyclic || ret=1
|
||||
if [ $i -le 4 ]; then
|
||||
cp dig.out.cyclic dig.out.$j
|
||||
else
|
||||
cmp -s dig.out.cyclic dig.out.$j && matches=`expr $matches + 1`
|
||||
fi
|
||||
eval match$i=0
|
||||
done
|
||||
cmp -s dig.out.0 dig.out.1 && ret=1
|
||||
cmp -s dig.out.0 dig.out.2 && ret=1
|
||||
cmp -s dig.out.0 dig.out.3 && ret=1
|
||||
cmp -s dig.out.1 dig.out.2 && ret=1
|
||||
cmp -s dig.out.1 dig.out.3 && ret=1
|
||||
cmp -s dig.out.2 dig.out.3 && ret=1
|
||||
if [ $matches -ne 16 ]; then ret=1; fi
|
||||
for i in a b c d e f g h
|
||||
do
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.2 cyclic.example > dig.out.cyclic || ret=1
|
||||
match=0
|
||||
for j in 1 2 3 4
|
||||
do
|
||||
eval "cmp -s dig.out.cyclic dig.out.cyclic.good$j && match$j=1 match=1"
|
||||
if [ $match -eq 1 ]; then break; fi
|
||||
done
|
||||
if [ $match -eq 0 ]; then ret=1; echo "I:unexpected order"; fi
|
||||
done
|
||||
match=0
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
eval "match=\`expr \$match + \$match$i\`"
|
||||
done
|
||||
echo "I: Cyclic selection return $match of 4 possible orders in 8 samples"
|
||||
if [ $match -ne 4 ]; then echo ret=1; fi
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo "I: Checking order random (slave)"
|
||||
n=`expr $n + 1`
|
||||
echo "I: Checking order random (slave) ($n)"
|
||||
ret=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
||||
do
|
||||
@@ -174,7 +194,8 @@ echo "I: Shutting down slave"
|
||||
|
||||
(cd ..; sh stop.sh rrsetorder ns2 )
|
||||
|
||||
echo "I: Checking for slave's on disk copy of zone"
|
||||
n=`expr $n + 1`
|
||||
echo "I: Checking for slave's on disk copy of zone ($n)"
|
||||
|
||||
if [ ! -f ns2/root.bk ]
|
||||
then
|
||||
@@ -189,47 +210,59 @@ echo "I: Re-starting slave"
|
||||
#
|
||||
#
|
||||
#
|
||||
n=`expr $n + 1`
|
||||
if $test_fixed; then
|
||||
echo "I: Checking order fixed (slave loaded from disk)"
|
||||
ret=0
|
||||
echo "I: Checking order fixed (slave loaded from disk) ($n)"
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||
do
|
||||
ret=0
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.2 fixed.example > dig.out.fixed || ret=1
|
||||
cmp -s dig.out.fixed dig.out.fixed.good || ret=1
|
||||
-p 5300 @10.53.0.2 fixed.example > dig.out.test$n || ret=1
|
||||
cmp -s dig.out.test$n dig.out.fixed.good || ret=1
|
||||
[ $ret = 0 ] && break
|
||||
sleep 1
|
||||
done
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
else
|
||||
echo "I: Skipped: Checking order fixed (slave loaded from disk) ($n)"
|
||||
|
||||
fi
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
echo "I: Checking order cyclic (slave loaded from disk)"
|
||||
n=`expr $n + 1`
|
||||
echo "I: Checking order cyclic (slave loaded from disk) ($n)"
|
||||
ret=0
|
||||
matches=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
j=`expr $i % 4`
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.2 cyclic.example > dig.out.cyclic || ret=1
|
||||
if [ $i -le 4 ]; then
|
||||
cp dig.out.cyclic dig.out.$j
|
||||
else
|
||||
cmp -s dig.out.cyclic dig.out.$j && matches=`expr $matches + 1`
|
||||
fi
|
||||
eval match$i=0
|
||||
done
|
||||
cmp -s dig.out.0 dig.out.1 && ret=1
|
||||
cmp -s dig.out.0 dig.out.2 && ret=1
|
||||
cmp -s dig.out.0 dig.out.3 && ret=1
|
||||
cmp -s dig.out.1 dig.out.2 && ret=1
|
||||
cmp -s dig.out.1 dig.out.3 && ret=1
|
||||
cmp -s dig.out.2 dig.out.3 && ret=1
|
||||
if [ $matches -ne 16 ]; then ret=1; fi
|
||||
for i in a b c d e f g h
|
||||
do
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.2 cyclic.example > dig.out.cyclic || ret=1
|
||||
match=0
|
||||
for j in 1 2 3 4
|
||||
do
|
||||
eval "cmp -s dig.out.cyclic dig.out.cyclic.good$j && match$j=1 match=1"
|
||||
if [ $match -eq 1 ]; then break; fi
|
||||
done
|
||||
if [ $match -eq 0 ]; then ret=1; echo "I:unexpected order"; fi
|
||||
done
|
||||
match=0
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
eval "match=\`expr \$match + \$match$i\`"
|
||||
done
|
||||
echo "I: Cyclic selection return $match of 4 possible orders in 8 samples"
|
||||
if [ $match -ne 4 ]; then echo ret=1; fi
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo "I: Checking order random (slave loaded from disk)"
|
||||
n=`expr $n + 1`
|
||||
echo "I: Checking order random (slave loaded from disk) ($n)"
|
||||
ret=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
||||
do
|
||||
@@ -260,47 +293,57 @@ status=`expr $status + $ret`
|
||||
#
|
||||
#
|
||||
#
|
||||
n=`expr $n + 1`
|
||||
if $test_fixed; then
|
||||
echo "I: Checking order fixed (cache)"
|
||||
echo "I: Checking order fixed (cache) ($n)"
|
||||
ret=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||
do
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.3 fixed.example > dig.out.fixed || ret=1
|
||||
cmp -s dig.out.fixed dig.out.fixed.good || ret=1
|
||||
-p 5300 @10.53.0.3 fixed.example > dig.out.test$n || ret=1
|
||||
cmp -s dig.out.test$n dig.out.fixed.good || ret=1
|
||||
done
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
else
|
||||
echo "I: Skipped: Checking order fixed (cache) ($n)"
|
||||
fi
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
echo "I: Checking order cyclic (cache)"
|
||||
n=`expr $n + 1`
|
||||
echo "I: Checking order cyclic (cache) ($n)"
|
||||
ret=0
|
||||
matches=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
j=`expr $i % 4`
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.3 cyclic.example > dig.out.cyclic || ret=1
|
||||
if [ $i -le 4 ]; then
|
||||
cp dig.out.cyclic dig.out.$j
|
||||
else
|
||||
cmp -s dig.out.cyclic dig.out.$j && matches=`expr $matches + 1`
|
||||
fi
|
||||
eval match$i=0
|
||||
done
|
||||
cmp -s dig.out.0 dig.out.1 && ret=1
|
||||
cmp -s dig.out.0 dig.out.2 && ret=1
|
||||
cmp -s dig.out.0 dig.out.3 && ret=1
|
||||
cmp -s dig.out.1 dig.out.2 && ret=1
|
||||
cmp -s dig.out.1 dig.out.3 && ret=1
|
||||
cmp -s dig.out.2 dig.out.3 && ret=1
|
||||
if [ $matches -ne 16 ]; then ret=1; fi
|
||||
for i in a b c d e f g h
|
||||
do
|
||||
$DIG +nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short \
|
||||
-p 5300 @10.53.0.3 cyclic.example > dig.out.cyclic || ret=1
|
||||
match=0
|
||||
for j in 1 2 3 4
|
||||
do
|
||||
eval "cmp -s dig.out.cyclic dig.out.cyclic.good$j && match$j=1 match=1"
|
||||
if [ $match -eq 1 ]; then break; fi
|
||||
done
|
||||
if [ $match -eq 0 ]; then ret=1; echo "I:unexpected order"; fi
|
||||
done
|
||||
match=0
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
eval "match=\`expr \$match + \$match$i\`"
|
||||
done
|
||||
echo "I: Cyclic selection return $match of 4 possible orders in 8 samples"
|
||||
if [ $match -ne 4 ]; then echo ret=1; fi
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
n=`expr $n + 1`
|
||||
|
||||
echo "I: Checking order random (cache)"
|
||||
n=`expr $n + 1`
|
||||
echo "I: Checking order random (cache) ($n)"
|
||||
ret=0
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
||||
do
|
||||
|
Reference in New Issue
Block a user