2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 22:15:20 +00:00

Test rndc retransfer -force

Use a big zone and the slow transfer mode. Initiate a retransfer, wait
several seconds, then initiate a retransfer using a '-force' argument,
which should cancel the previous transfer and start a new one.
This commit is contained in:
Aram Sargsyan
2024-06-11 12:26:08 +00:00
parent 3d1179501a
commit e48f4e8101
5 changed files with 62 additions and 7 deletions

View File

@@ -0,0 +1,15 @@
; 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 3600
@ IN SOA . . 0 0 0 0 0
@ IN NS .
$GENERATE 1-5000 host$ TXT data-$

View File

@@ -47,6 +47,7 @@ zone "edns-expire" {
file "edns-expire.db";
};
zone "axfr-max-transfer-time" {
type primary;
file "axfr-max-transfer-time.db";
@@ -57,6 +58,11 @@ zone "axfr-max-idle-time" {
file "axfr-max-idle-time.db";
};
zone "axfr-rndc-retransfer-force" {
type primary;
file "axfr-rndc-retransfer-force.db";
};
zone "axfr-too-big" {
type primary;
file "axfr-too-big.db";

View File

@@ -40,3 +40,8 @@ zone "axfr-max-transfer-time" {
type primary;
file "axfr-max-transfer-time.db";
};
zone "axfr-rndc-retransfer-force" {
type primary;
file "axfr-rndc-retransfer-force.db";
};

View File

@@ -71,6 +71,12 @@ zone "axfr-max-idle-time" {
file "axfr-max-idle-time.bk";
};
zone "axfr-rndc-retransfer-force" {
type secondary;
primaries { 10.53.0.1; };
file "axfr-rndc-retransfer-force.bk";
};
zone "axfr-too-big" {
type secondary;
max-records 30;

View File

@@ -646,27 +646,50 @@ wait_for_message() (
grep -F "$1" wait_for_message.$n >/dev/null
)
nextpart ns6/named.run >/dev/null
n=$((n + 1))
echo_i "test max-transfer-time-in with 1 second timeout ($n)"
# Restart ns1 with -T transferslowly
stop_server ns1
copy_setports ns1/named2.conf.in ns1/named.conf
start_server --noclean --restart --port ${PORT} ns1 -- "-D xfer-ns1 $NS_PARAMS -T transferinsecs -T transferslowly"
sleep 1
$RNDCCMD 10.53.0.6 retransfer axfr-max-transfer-time 2>&1 | sed 's/^/ns6 /' | cat_i
nextpart ns6/named.run >/dev/null
n=$((n + 1))
echo_i "test rndc retransfer -force ($n)"
tmp=0
retry_quiet 10 wait_for_message "maximum transfer time exceeded: timed out" || tmp=1
$RNDCCMD 10.53.0.6 retransfer axfr-rndc-retransfer-force 2>&1 | sed 's/^/ns6 /' | cat_i
# Wait for at least one message
msg="'axfr-rndc-retransfer-force/IN' from 10.53.0.1#${PORT}: received"
retry_quiet 5 wait_for_message "$msg" || tmp=1
# Issue a retransfer-force command which should cancel the ongoing transfer and start a new one
$RNDCCMD 10.53.0.6 retransfer -force axfr-rndc-retransfer-force 2>&1 | sed 's/^/ns6 /' | cat_i
msg="'axfr-rndc-retransfer-force/IN' from 10.53.0.1#${PORT}: Transfer status: operation canceled"
retry_quiet 5 wait_for_message "$msg" || tmp=1
# Wait for the new transfer to complete successfully
msg="'axfr-rndc-retransfer-force/IN' from 10.53.0.1#${PORT}: Transfer status: success"
retry_quiet 30 wait_for_message "$msg" || tmp=1
if test $tmp != 0; then echo_i "failed"; fi
status=$((status + tmp))
nextpart ns6/named.run >/dev/null
n=$((n + 1))
echo_i "test max-transfer-idle-in with 50 seconds timeout ($n)"
echo_i "test max-transfer-time-in with 1 second timeout ($n)"
$RNDCCMD 10.53.0.6 retransfer axfr-max-transfer-time 2>&1 | sed 's/^/ns6 /' | cat_i
tmp=0
retry_quiet 10 wait_for_message "maximum transfer time exceeded: timed out" || tmp=1
status=$((status + tmp))
# Restart ns1 with -T transferstuck
stop_server ns1
copy_setports ns1/named3.conf.in ns1/named.conf
start_server --noclean --restart --port ${PORT} ns1 -- "-D xfer-ns1 $NS_PARAMS -T transferinsecs -T transferstuck"
sleep 1
nextpart ns6/named.run >/dev/null
n=$((n + 1))
echo_i "test max-transfer-idle-in with 50 seconds timeout ($n)"
start=$(date +%s)
$RNDCCMD 10.53.0.6 retransfer axfr-max-idle-time 2>&1 | sed 's/^/ns6 /' | cat_i
tmp=0