]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add test case for nsupdate hangs on large update
authorMatthijs Mekking <matthijs@isc.org>
Fri, 1 Nov 2024 12:23:20 +0000 (13:23 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Thu, 5 Dec 2024 14:40:48 +0000 (15:40 +0100)
This test case hangs, despite the update being performed on the
name server.

bin/tests/system/nsupdate/ns3/many-updates.test.db [new file with mode: 0644]
bin/tests/system/nsupdate/ns3/named.conf.in
bin/tests/system/nsupdate/tests.sh

diff --git a/bin/tests/system/nsupdate/ns3/many-updates.test.db b/bin/tests/system/nsupdate/ns3/many-updates.test.db
new file mode 100644 (file)
index 0000000..bb0805b
--- /dev/null
@@ -0,0 +1,14 @@
+; 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.
+
+many-updates.test. 10 IN SOA many-updates.test. hostmaster.many-updates.test. 1 3600 900 2419200 3600
+many-updates.test. 10 IN NS many-updates.test.
+many-updates.test. 10 IN A 10.53.0.3
index b62885111a5e3b77b69febf0f3894738cd0edf44..180ce700bf593d526e6f96f43160623b7e3db905 100644 (file)
@@ -91,6 +91,13 @@ zone "too-big.test" {
        file "too-big.test.db";
 };
 
+zone "many-updates.test" {
+       type primary;
+       allow-update { any; };
+       file "many-updates.test.db";
+};
+
+
 /* Zone for testing CDS and CDNSKEY updates from other provider */
 zone "multisigner.test" {
        type primary;
index 035d44d03783bca6599693cdc4f30689ef08ec1d..2995bb5b69d0d2b2f6f96b61009c69e44c07732c 100755 (executable)
@@ -732,6 +732,26 @@ EOF
   status=1
 }
 
+n=$((n + 1))
+ret=0
+i=0
+echo_i "check that nsupdate does not hang when processing a large number of updates interactively ($n)"
+{
+  echo "server 10.53.0.3 ${PORT}"
+  echo "zone many-updates.test."
+  while [ $i -le 2000 ]; do
+    echo "update add host$i.many-updates.test. 3600 IN TXT \"host $i\""
+    i=$((i + 1))
+  done
+  echo "send"
+} | $NSUPDATE
+echo_i "query for host2000.many-updates.test ($n)"
+retry_quiet 5 has_positive_response host2000.many-updates.test TXT 10.53.0.3 || ret=1
+[ $ret = 0 ] || {
+  echo_i "failed"
+  status=1
+}
+
 n=$((n + 1))
 ret=0
 echo_i "start NSEC3PARAM changes via UPDATE on a unsigned zone test ($n)"