diff --git a/bin/tests/system/nsupdate/tests.sh b/bin/tests/system/nsupdate/tests.sh index 40714030c46a7d732bcf84802219dac1e78d0c64..03f9fc84079a4d3ca49feb06333db4ca04018673 100755 --- a/bin/tests/system/nsupdate/tests.sh +++ b/bin/tests/system/nsupdate/tests.sh @@ -266,7 +266,9 @@ END n=`expr $n + 1` ret=0 echo_i "check that unixtime serial number is correctly generated ($n)" -oldserial=`$DIG $DIGOPTS +short unixtime.nil. soa @10.53.0.1 | awk '{print $3}'` || ret=1 +$DIG $DIGOPTS +short unixtime.nil. soa @10.53.0.1 > dig.out.old.test$n || ret=1 +oldserial=`awk '{print $3}' dig.out.old.test$n` || ret=1 +start=`$PERL -e 'print time()."\n";'` $NSUPDATE < /dev/null 2>&1 || ret=1 server 10.53.0.1 ${PORT} ttl 600 @@ -275,11 +277,14 @@ $NSUPDATE < /dev/null 2>&1 || ret=1 END now=`$PERL -e 'print time()."\n";'` sleep 1 -serial=`$DIG $DIGOPTS +short unixtime.nil. soa @10.53.0.1 | awk '{print $3}'` || ret=1 -[ "$oldserial" -ne "$serial" ] || ret=1 -# allow up to 2 seconds difference between the serial -# number and the unix epoch date but no more -$PERL -e 'exit 1 if abs($ARGV[1] - $ARGV[0]) > 2;' $now $serial || ret=1 +$DIG $DIGOPTS +short unixtime.nil. soa @10.53.0.1 > dig.out.new.test$n || ret=1 +serial=`awk '{print $3}' dig.out.new.test$n` || ret=1 +[ "$oldserial" = "$serial" ] && { echo_i "oldserial == serial"; ret=1; } +if [ "$serial" -lt "$start" ]; then + echo_i "out-of-range serial=$serial < start=$start"; ret=1; +elif [ "$serial" -gt "$now" ]; then + echo_i "out-of-range serial=$serial > now=$now"; ret=1; +fi [ $ret = 0 ] || { echo_i "failed"; status=1; } ret=0