From de747f9b6bea8bd0bc219f470e7ab648219ce36b Mon Sep 17 00:00:00 2001 From: Tony Finch Date: Wed, 31 Aug 2022 21:09:06 +0100 Subject: [PATCH 1/2] The system tests are using another IP address Reduce the number of places that know about the number of IP addresses required by the system tests, by changing `testsock.pl` to read the `max` from `ifconfig.sh.in`. This should make the test runner fail early with a clear message when the interfaces have been set up by an obsolete script. Add comments to cross-reference `ifconfig.sh.in`, `testsock.pl`, and `org.isc.bind.system` to make it easier to remember what needs updating when an IP address is added. (cherry picked from commit 258a896a0cf9b26be64f80c3b9fba7b0d5d43f50) --- bin/tests/system/ifconfig.sh.in | 8 ++++++++ bin/tests/system/org.isc.bind.system | 4 +++- bin/tests/system/testsock.pl | 10 +++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/bin/tests/system/ifconfig.sh.in b/bin/tests/system/ifconfig.sh.in index 76233d6184..298bd3f041 100755 --- a/bin/tests/system/ifconfig.sh.in +++ b/bin/tests/system/ifconfig.sh.in @@ -24,6 +24,10 @@ # We also set the MTU on the 1500 bytes to match the default MTU on physical # interfaces, so we can properly test the cases with packets bigger than # interface MTU. +# +# See also org.isc.bind.system (a version of this script for use on macOS) +# and testsock.pl (which checks the interfaces are configured) +# top_srcdir=@abs_top_srcdir@ @@ -237,6 +241,10 @@ sequence() ( # 'ns' in the namserver being configured. # 'int' interface identifier. # +# See also `org.isc.bind.system`. +# +# This `max` setting is grepped out for use by testsock.pl +# max=11 case $1 in start|up|stop|down) diff --git a/bin/tests/system/org.isc.bind.system b/bin/tests/system/org.isc.bind.system index 276437ad6e..6c5a8cd4fe 100644 --- a/bin/tests/system/org.isc.bind.system +++ b/bin/tests/system/org.isc.bind.system @@ -11,12 +11,14 @@ # See the COPYRIGHT file distributed with this work for additional # information regarding copyright ownership. +# see also ifconfig.sh.in and testsock.pl + ifup() { /sbin/ifconfig lo0 10.53.$1.$3 alias /sbin/ifconfig lo0 inet6 fd92:7065:b8e:${2}ff::${3} alias } -for ns in 1 2 3 4 5 6 7 8 9 10 +for ns in 1 2 3 4 5 6 7 8 9 10 11 do ifup 0 ff $ns done diff --git a/bin/tests/system/testsock.pl b/bin/tests/system/testsock.pl index e9448ed380..3677e200b2 100755 --- a/bin/tests/system/testsock.pl +++ b/bin/tests/system/testsock.pl @@ -27,7 +27,15 @@ my @ids; if ($id != 0) { @ids = ($id); } else { - @ids = (1..8); + my $fn = "ifconfig.sh"; + open FH, "< $fn" or die "open < $fn: $!\n"; + while () { + @ids = (1..$1) + if /^max=(\d+)\s*$/; + } + close FH; + die "could not find max IP address in $fn\n" + unless @ids > 1; } foreach $id (@ids) { From 1c6627f6e3172ca097fd55ea501fd6292022cafb Mon Sep 17 00:00:00 2001 From: Tony Finch Date: Thu, 1 Sep 2022 12:08:52 +0100 Subject: [PATCH 2/2] Skip the xfer test when Net::DNS is too old This allows the system tests to run to completion on macOS without requiring extra modules from CPAN. (cherry picked from commit d8053785b0d60c158b14f1ddda3b6ef608abc541) --- bin/tests/system/xfer/prereq.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 bin/tests/system/xfer/prereq.sh diff --git a/bin/tests/system/xfer/prereq.sh b/bin/tests/system/xfer/prereq.sh new file mode 100644 index 0000000000..c7b78281e2 --- /dev/null +++ b/bin/tests/system/xfer/prereq.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +# 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. + +. ../conf.sh + +# macOS ships with Net::DNS 0.74 which does not work with +# HMAC-SHA256, despite the workarounds in ans.pl + +if perl -MNet::DNS -e 'exit $Net::DNS::VERSION >= 1.0' +then + version=$(perl -MNet::DNS -e 'print $Net::DNS::VERSION') + echo_i "perl Net::DNS $version is too old - skipping xfer test" + exit 1 +fi + +exit 0