mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 07:09:59 -04:00
Add test for not-loading and not-transfering huge RRSets
Add two new masterformat tests - the 'huge' zone fits within the ns1 limit and loads on the primary ns1 server, but must not transfer to the ns2 secondary, and the 'uber' zone should not even load on the primary ns1 server. (cherry picked from commit cee9ad81db6e5a1167b311e5c2f42cf65ba457cd)
This commit is contained in:
parent
e699ef939e
commit
b77606d167
9 changed files with 146 additions and 4 deletions
|
|
@ -98,6 +98,7 @@ options {
|
|||
tcp-initial-timeout 1200;
|
||||
transfers-in 100;
|
||||
transfers-out 100;
|
||||
max-records-per-type 0;
|
||||
};
|
||||
|
||||
zone "." {
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ options {
|
|||
notify yes;
|
||||
minimal-responses no;
|
||||
dnssec-validation no;
|
||||
max-records-per-type 0;
|
||||
};
|
||||
|
||||
zone "." {
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ $CHECKZONE -D -F raw=0 -o example.db.compat example-compat \
|
|||
$CHECKZONE -D -F raw -L 3333 -o example.db.serial.raw example \
|
||||
example.db >/dev/null 2>&1
|
||||
$CHECKZONE -D -F raw -o large.db.raw large large.db >/dev/null 2>&1
|
||||
$CHECKZONE -D -F raw -o huge.db.raw huge huge.db >/dev/null 2>&1
|
||||
$CHECKZONE -D -F raw -o uber.db.raw uber uber.db >/dev/null 2>&1
|
||||
|
||||
$KEYGEN -q -a "$DEFAULT_ALGORITHM" -b "$DEFAULT_BITS" -f KSK signed >/dev/null 2>&1
|
||||
$KEYGEN -q -a "$DEFAULT_ALGORITHM" -b "$DEFAULT_BITS" signed >/dev/null 2>&1
|
||||
|
|
|
|||
22
bin/tests/system/masterformat/ns1/huge.db.in
Normal file
22
bin/tests/system/masterformat/ns1/huge.db.in
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
;
|
||||
; SPDX-License-Identifier: MPL-2.0
|
||||
;
|
||||
; This Source Code Form is subject to the terms of the Mozilla Public
|
||||
; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
;
|
||||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
$TTL 1D
|
||||
|
||||
@ IN SOA ns hostmaster (
|
||||
1
|
||||
3600
|
||||
1800
|
||||
1814400
|
||||
3
|
||||
)
|
||||
NS ns
|
||||
ns A 10.53.0.1
|
||||
|
|
@ -23,6 +23,7 @@ options {
|
|||
session-keyfile "session.key";
|
||||
servfail-ttl 0;
|
||||
dnssec-validation no;
|
||||
max-records-per-type 2050;
|
||||
};
|
||||
|
||||
key rndc_key {
|
||||
|
|
@ -78,6 +79,20 @@ zone "large" {
|
|||
allow-transfer { any; };
|
||||
};
|
||||
|
||||
zone "huge" {
|
||||
type primary;
|
||||
file "huge.db.raw";
|
||||
masterfile-format raw;
|
||||
allow-transfer { any; };
|
||||
};
|
||||
|
||||
zone "uber" {
|
||||
type primary;
|
||||
file "uber.db.raw";
|
||||
masterfile-format raw;
|
||||
allow-transfer { any; };
|
||||
};
|
||||
|
||||
zone "signed" {
|
||||
type primary;
|
||||
file "signed.db.raw";
|
||||
|
|
|
|||
22
bin/tests/system/masterformat/ns1/uber.db.in
Normal file
22
bin/tests/system/masterformat/ns1/uber.db.in
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
;
|
||||
; SPDX-License-Identifier: MPL-2.0
|
||||
;
|
||||
; This Source Code Form is subject to the terms of the Mozilla Public
|
||||
; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
;
|
||||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
$TTL 1D
|
||||
|
||||
@ IN SOA ns hostmaster (
|
||||
1
|
||||
3600
|
||||
1800
|
||||
1814400
|
||||
3
|
||||
)
|
||||
NS ns
|
||||
ns A 10.53.0.1
|
||||
|
|
@ -22,6 +22,7 @@ options {
|
|||
notify no;
|
||||
servfail-ttl 0;
|
||||
dnssec-validation no;
|
||||
max-records-per-type 2000;
|
||||
};
|
||||
|
||||
zone "example" {
|
||||
|
|
@ -62,3 +63,10 @@ zone "large" {
|
|||
masterfile-format raw;
|
||||
file "large.bk";
|
||||
};
|
||||
|
||||
zone "huge" {
|
||||
type secondary;
|
||||
primaries { 10.53.0.1; };
|
||||
masterfile-format raw;
|
||||
file "huge.bk";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -24,8 +24,23 @@ cp ns1/example.db ns2/
|
|||
cp ns2/formerly-text.db.in ns2/formerly-text.db
|
||||
cp ns1/large.db.in ns1/large.db
|
||||
awk 'END {
|
||||
for (i = 0; i < 512; i++ ) { print "a TXT", i; }
|
||||
for (i = 0; i < 1024; i++ ) { print "b TXT", i; }
|
||||
for (i = 0; i < 500; i++ ) { print "a TXT", i; }
|
||||
for (i = 0; i < 1000; i++ ) { print "b TXT", i; }
|
||||
for (i = 0; i < 2000; i++ ) { print "c TXT", i; }
|
||||
}' </dev/null >>ns1/large.db
|
||||
cp ns1/huge.db.in ns1/huge.db
|
||||
awk 'END {
|
||||
for (i = 0; i < 500; i++ ) { print "a TXT", i; }
|
||||
for (i = 0; i < 1000; i++ ) { print "b TXT", i; }
|
||||
for (i = 0; i < 2000; i++ ) { print "c TXT", i; }
|
||||
for (i = 0; i < 2050; i++ ) { print "d TXT", i; }
|
||||
}' </dev/null >>ns1/huge.db
|
||||
cp ns1/uber.db.in ns1/uber.db
|
||||
awk 'END {
|
||||
for (i = 0; i < 500; i++ ) { print "a TXT", i; }
|
||||
for (i = 0; i < 1000; i++ ) { print "b TXT", i; }
|
||||
for (i = 0; i < 2000; i++ ) { print "c TXT", i; }
|
||||
for (i = 0; i < 2050; i++ ) { print "d TXT", i; }
|
||||
for (i = 0; i < 2100; i++ ) { print "e TXT", i; }
|
||||
}' </dev/null >>ns1/uber.db
|
||||
cd ns1 && $SHELL compile.sh
|
||||
|
|
|
|||
|
|
@ -177,8 +177,64 @@ echo_i "checking that large rdatasets loaded ($n)"
|
|||
for i in 0 1 2 3 4 5 6 7 8 9; do
|
||||
ret=0
|
||||
for a in a b c; do
|
||||
$DIG +tcp txt "${a}.large" @10.53.0.2 -p "${PORT}" >"dig.out.ns2.test$n"
|
||||
grep "status: NOERROR" "dig.out.ns2.test$n" >/dev/null || ret=1
|
||||
$DIG +tcp txt "${a}.large" @10.53.0.1 -p "${PORT}" >"dig.out.ns1.$a.test$n"
|
||||
grep "status: NOERROR" "dig.out.ns1.$a.test$n" >/dev/null || ret=1
|
||||
done
|
||||
[ $ret -eq 0 ] && break
|
||||
sleep 1
|
||||
done
|
||||
n=$((n + 1))
|
||||
[ $ret -eq 0 ] || echo_i "failed"
|
||||
status=$((status + ret))
|
||||
|
||||
echo_i "checking that large rdatasets transfered ($n)"
|
||||
for i in 0 1 2 3 4 5 6 7 8 9; do
|
||||
ret=0
|
||||
for a in a b c; do
|
||||
$DIG +tcp txt "${a}.large" @10.53.0.2 -p "${PORT}" >"dig.out.ns2.$a.test$n"
|
||||
grep "status: NOERROR" "dig.out.ns2.$a.test$n" >/dev/null || ret=1
|
||||
done
|
||||
[ $ret -eq 0 ] && break
|
||||
sleep 1
|
||||
done
|
||||
n=$((n + 1))
|
||||
[ $ret -eq 0 ] || echo_i "failed"
|
||||
status=$((status + ret))
|
||||
|
||||
echo_i "checking that huge rdatasets loaded ($n)"
|
||||
for i in 0 1 2 3 4 5 6 7 8 9; do
|
||||
ret=0
|
||||
for a in a b c d; do
|
||||
$DIG +tcp txt "${a}.huge" @10.53.0.1 -p "${PORT}" >"dig.out.ns1.$a.test$n"
|
||||
grep "status: NOERROR" "dig.out.ns1.$a.test$n" >/dev/null || ret=1
|
||||
done
|
||||
[ $ret -eq 0 ] && break
|
||||
sleep 1
|
||||
done
|
||||
n=$((n + 1))
|
||||
[ $ret -eq 0 ] || echo_i "failed"
|
||||
status=$((status + ret))
|
||||
|
||||
echo_i "checking that huge rdatasets not transfered ($n)"
|
||||
for i in 0 1 2 3 4 5 6 7 8 9; do
|
||||
ret=0
|
||||
for a in a b c d; do
|
||||
$DIG +tcp txt "${a}.huge" @10.53.0.2 -p "${PORT}" >"dig.out.ns2.$a.test$n"
|
||||
grep "status: SERVFAIL" "dig.out.ns2.$a.test$n" >/dev/null || ret=1
|
||||
done
|
||||
[ $ret -eq 0 ] && break
|
||||
sleep 1
|
||||
done
|
||||
n=$((n + 1))
|
||||
[ $ret -eq 0 ] || echo_i "failed"
|
||||
status=$((status + ret))
|
||||
|
||||
echo_i "checking that uber rdatasets not loaded ($n)"
|
||||
for i in 0 1 2 3 4 5 6 7 8 9; do
|
||||
ret=0
|
||||
for a in a b c d e; do
|
||||
$DIG +tcp txt "${a}.uber" @10.53.0.1 -p "${PORT}" >"dig.out.ns1.$a.test$n"
|
||||
grep "status: SERVFAIL" "dig.out.ns1.$a.test$n" >/dev/null || ret=1
|
||||
done
|
||||
[ $ret -eq 0 ] && break
|
||||
sleep 1
|
||||
|
|
|
|||
Loading…
Reference in a new issue