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:
Ondřej Surý 2024-05-23 19:12:40 +02:00 committed by Nicki Křížek
parent e699ef939e
commit b77606d167
No known key found for this signature in database
GPG key ID: 01623B9B652A20A7
9 changed files with 146 additions and 4 deletions

View file

@ -98,6 +98,7 @@ options {
tcp-initial-timeout 1200;
transfers-in 100;
transfers-out 100;
max-records-per-type 0;
};
zone "." {

View file

@ -23,6 +23,7 @@ options {
notify yes;
minimal-responses no;
dnssec-validation no;
max-records-per-type 0;
};
zone "." {

View file

@ -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

View 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

View file

@ -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";

View 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

View file

@ -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";
};

View file

@ -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

View file

@ -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