mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-09 00:43:21 -04:00
Merge branch '4262-make-check-pytest' into 'main'
Use pytest runner for make check Closes #4262 See merge request isc-projects/bind9!8286
This commit is contained in:
commit
94856ade3c
28 changed files with 601 additions and 151 deletions
|
|
@ -417,6 +417,14 @@ cross-version-config-tests:
|
|||
reports:
|
||||
junit: junit.xml
|
||||
|
||||
.system_test_make_check: &system_test_make_check_job
|
||||
<<: *system_test_common
|
||||
script:
|
||||
- cd bin/tests/system
|
||||
- make -j${TEST_PARALLEL_JOBS:-1} check
|
||||
after_script:
|
||||
- cat bin/tests/system/test-suite.log || true
|
||||
|
||||
.system_test_gcov: &system_test_gcov_job
|
||||
<<: *system_test_common
|
||||
artifacts:
|
||||
|
|
@ -1323,6 +1331,7 @@ clang:openbsd:amd64:
|
|||
system:clang:openbsd:amd64:
|
||||
<<: *openbsd_amd64_image
|
||||
<<: *system_test_job
|
||||
<<: *system_test_make_check_job
|
||||
<<: *api_schedules_triggers_web_triggering_rules
|
||||
variables:
|
||||
USER: gitlab-runner
|
||||
|
|
|
|||
1
bin/tests/system/.gitignore
vendored
1
bin/tests/system/.gitignore
vendored
|
|
@ -13,6 +13,7 @@ named.run
|
|||
/random.data
|
||||
/*.log
|
||||
/*.trs
|
||||
/*.xml
|
||||
/resolve
|
||||
/legacy.run.sh
|
||||
/run.log
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ LDADD += \
|
|||
$(LIBDNS_LIBS)
|
||||
|
||||
if HAVE_PERL
|
||||
if HAVE_PYTHON
|
||||
if HAVE_PYTEST
|
||||
|
||||
noinst_PROGRAMS = \
|
||||
feature-test \
|
||||
|
|
@ -68,23 +70,14 @@ rpz_dnsrps_LDADD = \
|
|||
$(LIBDNS_LIBS) \
|
||||
$(DLOPEN_LIBS)
|
||||
|
||||
TESTS =
|
||||
|
||||
if HAVE_PERLMOD_TIME_HIRES
|
||||
TESTS += serve-stale
|
||||
endif HAVE_PERLMOD_TIME_HIRES
|
||||
|
||||
if HAVE_PERLMOD_NET_DNS
|
||||
TESTS += \
|
||||
rpzrecurse
|
||||
endif HAVE_PERLMOD_NET_DNS
|
||||
|
||||
if HAVE_LIBNGHTTP2
|
||||
TESTS += \
|
||||
doth
|
||||
endif
|
||||
|
||||
TESTS += \
|
||||
# Longer running tests are listed (and executed) first to take the most
|
||||
# advantage of parallel execution.
|
||||
TESTS = \
|
||||
rpz \
|
||||
rpzrecurse \
|
||||
serve-stale \
|
||||
timeouts \
|
||||
upforwd \
|
||||
acl \
|
||||
additional \
|
||||
addzone \
|
||||
|
|
@ -96,13 +89,21 @@ TESTS += \
|
|||
case \
|
||||
catz \
|
||||
cds \
|
||||
chain \
|
||||
checkconf \
|
||||
checkds \
|
||||
checknames \
|
||||
checkzone \
|
||||
cookie \
|
||||
database \
|
||||
dialup \
|
||||
digdelv \
|
||||
dispatch \
|
||||
dlzexternal \
|
||||
dns64 \
|
||||
dnssec \
|
||||
dnstap \
|
||||
doth \
|
||||
dsdigest \
|
||||
dyndb \
|
||||
ecdsa \
|
||||
|
|
@ -111,16 +112,20 @@ TESTS += \
|
|||
emptyzones \
|
||||
enginepkcs11 \
|
||||
filter-aaaa \
|
||||
fetchlimit \
|
||||
formerr \
|
||||
forward \
|
||||
geoip2 \
|
||||
glue \
|
||||
idna \
|
||||
include-multiplecfg \
|
||||
inline \
|
||||
integrity \
|
||||
ixfr \
|
||||
hooks \
|
||||
host \
|
||||
journal \
|
||||
kasp \
|
||||
keepalive \
|
||||
keyfromlabel \
|
||||
legacy \
|
||||
|
|
@ -131,28 +136,40 @@ TESTS += \
|
|||
metadata \
|
||||
mirror \
|
||||
mkeys \
|
||||
multisigner \
|
||||
names \
|
||||
notify \
|
||||
nsec3 \
|
||||
nslookup \
|
||||
nsupdate \
|
||||
nzd2nzf \
|
||||
padding \
|
||||
pending \
|
||||
pipelined \
|
||||
qmin \
|
||||
reclimit \
|
||||
redirect \
|
||||
resolver \
|
||||
rndc \
|
||||
rootkeysentinel \
|
||||
rpz \
|
||||
rpzextra \
|
||||
rrchecker \
|
||||
rrl \
|
||||
rrsetorder \
|
||||
rsabigexponent \
|
||||
runtime \
|
||||
sfcache \
|
||||
shutdown \
|
||||
smartsign \
|
||||
sortlist \
|
||||
spf \
|
||||
staticstub \
|
||||
statistics \
|
||||
statschannel \
|
||||
stress \
|
||||
stub \
|
||||
synthfromdnssec \
|
||||
tcp \
|
||||
tools \
|
||||
transport-acl \
|
||||
tsig \
|
||||
|
|
@ -162,62 +179,21 @@ TESTS += \
|
|||
verify \
|
||||
views \
|
||||
wildcard \
|
||||
xfer \
|
||||
xferquota \
|
||||
zero \
|
||||
zonechecks
|
||||
|
||||
if HAVE_LMDB
|
||||
TESTS += nzd2nzf
|
||||
endif # HAVE_LMDB
|
||||
|
||||
if HAVE_PERLMOD_NET_DNS
|
||||
|
||||
TESTS += \
|
||||
fetchlimit \
|
||||
ixfr \
|
||||
nsupdate \
|
||||
resolver \
|
||||
statistics \
|
||||
stress \
|
||||
upforwd \
|
||||
zero
|
||||
|
||||
if HAVE_DNSTAP
|
||||
TESTS += dnstap
|
||||
endif
|
||||
|
||||
if HAVE_PERLMOD_FILE_FETCH
|
||||
TESTS += statschannel
|
||||
endif HAVE_PERLMOD_FILE_FETCH
|
||||
|
||||
if HAVE_PERLMOD_DIGEST_HMAC
|
||||
TESTS += xfer
|
||||
endif HAVE_PERLMOD_DIGEST_HMAC
|
||||
|
||||
if HAVE_PERLMOD_NET_DNS_NAMESERVER
|
||||
TESTS += reclimit
|
||||
endif HAVE_PERLMOD_NET_DNS_NAMESERVER
|
||||
|
||||
endif HAVE_PERLMOD_NET_DNS
|
||||
|
||||
if HAVE_PYTHON
|
||||
TESTS += kasp multisigner tcp pipelined
|
||||
|
||||
if HAVE_PYTEST
|
||||
TESTS += checkds dispatch rpzextra shutdown timeouts
|
||||
endif
|
||||
|
||||
if HAVE_PYMOD_DNS
|
||||
TESTS += qmin cookie
|
||||
if HAVE_PERLMOD_NET_DNS
|
||||
TESTS += digdelv dnssec forward
|
||||
if HAVE_PERLMOD_NET_DNS_NAMESERVER
|
||||
TESTS += chain
|
||||
endif HAVE_PERLMOD_NET_DNS_NAMESERVER
|
||||
endif HAVE_PERLMOD_NET_DNS
|
||||
endif HAVE_PYMOD_DNS
|
||||
|
||||
endif HAVE_PYTHON
|
||||
|
||||
else !HAVE_PYTEST
|
||||
check:
|
||||
echo pytest is not available, no tests were ran
|
||||
exit 1
|
||||
endif !HAVE_PYTEST
|
||||
else !HAVE_PYTHON
|
||||
check:
|
||||
echo Python is not available, no tests were ran
|
||||
exit 1
|
||||
endif !HAVE_PYTHON
|
||||
else !HAVE_PERL
|
||||
check:
|
||||
echo Perl is not available, no tests were ran
|
||||
|
|
@ -232,10 +208,7 @@ LOG_DRIVER_V_1 = --verbose yes
|
|||
LOG_DRIVER = $(srcdir)/custom-test-driver
|
||||
AM_LOG_DRIVER_FLAGS = $(LOG_DRIVER_V)
|
||||
|
||||
LOG_COMPILER = $(builddir)/legacy.run.sh
|
||||
AM_LOG_FLAGS = -r
|
||||
|
||||
$(TESTS): legacy.run.sh
|
||||
LOG_COMPILER = $(srcdir)/run.sh
|
||||
|
||||
test-local: check
|
||||
|
||||
|
|
|
|||
34
bin/tests/system/chain/prereq.sh
Normal file
34
bin/tests/system/chain/prereq.sh
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PYTHON} -c 'import dns'
|
||||
then
|
||||
echo_i "python dns module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! ${PERL} -MNet::DNS::Nameserver -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS::Nameserver module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
@ -267,13 +267,21 @@ else:
|
|||
|
||||
@pytest.fixture(scope="session")
|
||||
def modules():
|
||||
"""Sorted list of all modules. Used to determine port distribution."""
|
||||
"""
|
||||
Sorted list of ALL modules.
|
||||
|
||||
The list includes even test modules that are not tested in the current
|
||||
session. It is used to determine port distribution. Using a complete
|
||||
list of all possible test modules allows independent concurrent pytest
|
||||
invocations.
|
||||
"""
|
||||
mods = []
|
||||
for dirpath, _dirs, files in os.walk(os.getcwd()):
|
||||
for dirpath, _dirs, files in os.walk(FILE_DIR):
|
||||
for file in files:
|
||||
if file.startswith("tests_") and file.endswith(".py"):
|
||||
mod = f"{dirpath}/{file}"
|
||||
mods.append(mod)
|
||||
if not pytest_ignore_collect(mod):
|
||||
mods.append(mod)
|
||||
return sorted(mods)
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
|
|
@ -281,11 +289,11 @@ else:
|
|||
"""
|
||||
Dictionary containing assigned base port for every module.
|
||||
|
||||
Note that this is a session-wide fixture. The port numbers are
|
||||
deterministically assigned before any testing starts. This fixture MUST
|
||||
return the same value when called again during the same test session.
|
||||
When running tests in parallel, this is exactly what happens - every
|
||||
worker thread will call this fixture to determine test ports.
|
||||
The port numbers are deterministically assigned before any testing
|
||||
starts. This fixture MUST return the same value when called again
|
||||
during the same test session. When running tests in parallel, this is
|
||||
exactly what happens - every worker thread will call this fixture to
|
||||
determine test ports.
|
||||
"""
|
||||
port_min = PORT_MIN
|
||||
port_max = PORT_MAX - len(modules) * PORTS_PER_TEST
|
||||
|
|
|
|||
70
bin/tests/system/convert-junit-to-trs.py
Executable file
70
bin/tests/system/convert-junit-to-trs.py
Executable file
|
|
@ -0,0 +1,70 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# Convert JUnit pytest output to automake .trs files
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from xml.etree import ElementTree
|
||||
|
||||
|
||||
def junit_to_trs(junit_xml):
|
||||
root = ElementTree.fromstring(junit_xml)
|
||||
testcases = root.findall("./testsuite/testcase")
|
||||
|
||||
if len(testcases) < 1:
|
||||
print(":test-result: ERROR convert-junit-to-trs.py")
|
||||
return 99
|
||||
|
||||
has_fail = False
|
||||
has_error = False
|
||||
has_skipped = False
|
||||
for testcase in testcases:
|
||||
filename = f"{testcase.attrib['classname'].replace('.', '/')}.py"
|
||||
name = f"{filename}::{testcase.attrib['name']}"
|
||||
res = "PASS"
|
||||
for node in testcase:
|
||||
if node.tag == "failure":
|
||||
res = "FAIL"
|
||||
has_fail = True
|
||||
elif node.tag == "error":
|
||||
res = "ERROR"
|
||||
has_error = True
|
||||
elif node.tag == "skipped":
|
||||
if node.attrib["type"] == "pytest.xfail":
|
||||
res = "XFAIL"
|
||||
else:
|
||||
res = "SKIP"
|
||||
has_skipped = True
|
||||
print(f":test-result: {res} {name}")
|
||||
|
||||
if has_error:
|
||||
return 99
|
||||
if has_fail:
|
||||
return 1
|
||||
if has_skipped:
|
||||
return 77
|
||||
return 0
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Convert JUnit XML to Automake TRS and exit with "
|
||||
"the appropriate Automake-compatible exit code."
|
||||
)
|
||||
parser.add_argument(
|
||||
"junit_file",
|
||||
type=argparse.FileType("r", encoding="utf-8"),
|
||||
help="junit xml result file",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
junit_xml = args.junit_file.read()
|
||||
sys.exit(junit_to_trs(junit_xml))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
1
bin/tests/system/cookie/.gitignore
vendored
1
bin/tests/system/cookie/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
prereq.sh
|
||||
22
bin/tests/system/cookie/prereq.sh
Normal file
22
bin/tests/system/cookie/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PYTHON} -c 'import dns'
|
||||
then
|
||||
echo_i "python dns module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
@ -56,7 +56,7 @@ END
|
|||
test_name= # Used for reporting.
|
||||
log_file= # Where to save the output of the test script.
|
||||
trs_file= # Where to save the metadata of the test run.
|
||||
status_file= # Where to save the status of the test run.
|
||||
junit_file= # Where to save pytest junit output.
|
||||
expect_failure=no
|
||||
color_tests=no
|
||||
enable_hard_errors=yes
|
||||
|
|
@ -67,8 +67,7 @@ while test $# -gt 0; do
|
|||
--version) echo "test-driver $scriptversion"; exit $?;;
|
||||
--test-name) test_name=$2; shift;;
|
||||
--log-file) log_file=$2; shift;;
|
||||
--trs-file) trs_file=$2; shift;;
|
||||
--status-file) status_file=$2; shift;;
|
||||
--trs-file) trs_file=$2; junit_file=$(echo $trs_file | sed 's/\.trs$/\.xml/'); shift;;
|
||||
--color-tests) color_tests=$2; shift;;
|
||||
--expect-failure) expect_failure=$2; shift;;
|
||||
--enable-hard-errors) enable_hard_errors=$2; shift;;
|
||||
|
|
@ -104,22 +103,22 @@ else
|
|||
red= grn= lgn= blu= mgn= std=
|
||||
fi
|
||||
|
||||
do_exit='rm -f $log_file $trs_file $status_file; (exit $st); exit $st'
|
||||
do_exit='rm -f $log_file $trs_file $junit_file; (exit $st); exit $st'
|
||||
trap "st=129; $do_exit" 1
|
||||
trap "st=130; $do_exit" 2
|
||||
trap "st=141; $do_exit" 13
|
||||
trap "st=143; $do_exit" 15
|
||||
|
||||
# Set default
|
||||
test x"$status_file" = x && status_file=$(mktemp ./custom-test-runner.XXXXXX)
|
||||
# Test script is run here.
|
||||
if test $verbose = yes; then
|
||||
("$@" 2>&1; echo $? > "$status_file") | tee $log_file
|
||||
"$@" --junit-xml $PWD/$junit_file 2>&1 | tee $log_file
|
||||
else
|
||||
"$@" >$log_file 2>&1; echo $? > "$status_file"
|
||||
"$@" --junit-xml $PWD/$junit_file >$log_file 2>&1
|
||||
fi
|
||||
read -r estatus < "$status_file"
|
||||
rm "$status_file"
|
||||
|
||||
# Run junit to trs converter script.
|
||||
./convert-junit-to-trs.py $junit_file > $trs_file
|
||||
estatus=$?
|
||||
|
||||
if test $enable_hard_errors = no && test $estatus -eq 99; then
|
||||
tweaked_estatus=1
|
||||
|
|
@ -145,8 +144,7 @@ echo "$res $test_name (exit status: $estatus)" >>$log_file
|
|||
# Report outcome to console.
|
||||
echo "${col}${res}${std}: $test_name"
|
||||
|
||||
# Register the test result, and other relevant metadata.
|
||||
echo ":test-result: $res" > $trs_file
|
||||
# Register other relevant test metadata.
|
||||
echo ":global-test-result: $res" >> $trs_file
|
||||
echo ":recheck: $recheck" >> $trs_file
|
||||
echo ":copy-in-global-log: $gcopy" >> $trs_file
|
||||
|
|
|
|||
28
bin/tests/system/digdelv/prereq.sh
Normal file
28
bin/tests/system/digdelv/prereq.sh
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PYTHON} -c 'import dns'
|
||||
then
|
||||
echo_i "python dns module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
28
bin/tests/system/dnssec/prereq.sh
Normal file
28
bin/tests/system/dnssec/prereq.sh
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PYTHON} -c 'import dns'
|
||||
then
|
||||
echo_i "python dns module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
22
bin/tests/system/fetchlimit/prereq.sh
Normal file
22
bin/tests/system/fetchlimit/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
28
bin/tests/system/forward/prereq.sh
Normal file
28
bin/tests/system/forward/prereq.sh
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PYTHON} -c 'import dns'
|
||||
then
|
||||
echo_i "python dns module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
22
bin/tests/system/ixfr/prereq.sh
Normal file
22
bin/tests/system/ixfr/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
@ -44,11 +44,8 @@ else
|
|||
clean=true
|
||||
fi
|
||||
|
||||
do_run=false
|
||||
restart=false
|
||||
log_flags="-r"
|
||||
while getopts "sknp:r-:t" OPT; do
|
||||
log_flags="$log_flags -$OPT$OPTARG"
|
||||
while getopts "sknp:-:t" OPT; do
|
||||
if [ "$OPT" = "-" ] && [ -n "$OPTARG" ]; then
|
||||
OPT="${OPTARG%%=*}"
|
||||
OPTARG="${OPTARG#$OPT}"
|
||||
|
|
@ -60,7 +57,6 @@ while getopts "sknp:r-:t" OPT; do
|
|||
k | keep) stopservers=false ;;
|
||||
n | noclean) clean=false ;;
|
||||
p | port) baseport=$OPTARG ;;
|
||||
r | run) do_run=true ;;
|
||||
s | skip) exit 77 ;;
|
||||
t | restart) restart=true ;;
|
||||
-) break ;;
|
||||
|
|
@ -70,31 +66,6 @@ done
|
|||
|
||||
shift $((OPTIND-1))
|
||||
|
||||
if ! $do_run; then
|
||||
if [ "$baseport" -eq 0 ]; then
|
||||
log_flags="$log_flags -p 5300"
|
||||
fi
|
||||
env - \
|
||||
SYSTEMTEST_FORCE_COLOR="$SYSTEMTEST_FORCE_COLOR" \
|
||||
SYSTEMTEST_NO_CLEAN="$SYSTEMTEST_NO_CLEAN" \
|
||||
SLOT="$SLOT" \
|
||||
${OPENSSL_CONF:+OPENSSL_CONF="$OPENSSL_CONF"} \
|
||||
SOFTHSM2_CONF="$SOFTHSM2_CONF" \
|
||||
PATH="$PATH" \
|
||||
${LD_LIBRARY_PATH:+"LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"} \
|
||||
TESTS="$*" \
|
||||
TEST_SUITE_LOG=run.log \
|
||||
LOG_DRIVER_FLAGS="--verbose yes --color-tests yes" \
|
||||
LOG_FLAGS="$log_flags" \
|
||||
TEST_LARGE_MAP="${TEST_LARGE_MAP}" \
|
||||
CI_ENABLE_ALL_TESTS="${CI_ENABLE_ALL_TESTS}" \
|
||||
${TSAN_OPTIONS:+"TSAN_OPTIONS=${TSAN_OPTIONS}"} \
|
||||
${VIRTUAL_ENV:+"VIRTUAL_ENV=${VIRTUAL_ENV}"} \
|
||||
${PERL5LIB:+"PERL5LIB=${PERL5LIB}"} \
|
||||
make -e check
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echofail "Usage: $0 [-k] [-n] [-p <PORT>] test-directory [test-options]" >&2;
|
||||
exit 1
|
||||
|
|
|
|||
22
bin/tests/system/nsupdate/prereq.sh
Normal file
22
bin/tests/system/nsupdate/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
22
bin/tests/system/qmin/prereq.sh
Normal file
22
bin/tests/system/qmin/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PYTHON} -c 'import dns'
|
||||
then
|
||||
echo_i "python dns module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
28
bin/tests/system/reclimit/prereq.sh
Normal file
28
bin/tests/system/reclimit/prereq.sh
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! ${PERL} -MNet::DNS::Nameserver -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS::Nameserver module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
22
bin/tests/system/resolver/prereq.sh
Normal file
22
bin/tests/system/resolver/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
22
bin/tests/system/rpzrecurse/prereq.sh
Normal file
22
bin/tests/system/rpzrecurse/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
22
bin/tests/system/serve-stale/prereq.sh
Normal file
22
bin/tests/system/serve-stale/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MTime::HiRes -e ''
|
||||
then
|
||||
echo_i "perl Time::HiRes module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
22
bin/tests/system/statistics/prereq.sh
Normal file
22
bin/tests/system/statistics/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
28
bin/tests/system/statschannel/prereq.sh
Normal file
28
bin/tests/system/statschannel/prereq.sh
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! ${PERL} -MFile::Fetch -e ''
|
||||
then
|
||||
echo_i "perl File::Fetch module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
22
bin/tests/system/stress/prereq.sh
Normal file
22
bin/tests/system/stress/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
22
bin/tests/system/upforwd/prereq.sh
Normal file
22
bin/tests/system/upforwd/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
@ -16,11 +16,17 @@
|
|||
# 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'
|
||||
if ${PERL} -MNet::DNS -e 'exit ($Net::DNS::VERSION >= 1.0)'
|
||||
then
|
||||
version=$(perl -MNet::DNS -e 'print $Net::DNS::VERSION')
|
||||
version=$(${PERL} -MNet::DNS -e 'print $Net::DNS::VERSION')
|
||||
echo_i "perl Net::DNS $version is too old - skipping xfer test"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! ${PERL} -MDigest::HMAC -e ''
|
||||
then
|
||||
echo_i "perl Digest::HMAC module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
|
|||
22
bin/tests/system/zero/prereq.sh
Normal file
22
bin/tests/system/zero/prereq.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/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
|
||||
|
||||
if ! ${PERL} -MNet::DNS -e ''
|
||||
then
|
||||
echo_i "perl Net::DNS module is required"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
23
configure.ac
23
configure.ac
|
|
@ -311,26 +311,6 @@ AC_PATH_PROGS([PERL], [perl5 perl])
|
|||
AC_SUBST([PERL])
|
||||
AM_CONDITIONAL([HAVE_PERL], [test -n "$PERL"])
|
||||
|
||||
AX_PERL_MODULE([Digest::HMAC])
|
||||
AM_CONDITIONAL([HAVE_PERLMOD_DIGEST_HMAC],
|
||||
[test "$HAVE_PERLMOD_DIGEST__HMAC" = "yes"])
|
||||
|
||||
AX_PERL_MODULE([File::Fetch])
|
||||
AM_CONDITIONAL([HAVE_PERLMOD_FILE_FETCH],
|
||||
[test "$HAVE_PERLMOD_FILE__FETCH" = "yes"])
|
||||
|
||||
AX_PERL_MODULE([Net::DNS])
|
||||
AM_CONDITIONAL([HAVE_PERLMOD_NET_DNS],
|
||||
[test "$HAVE_PERLMOD_NET__DNS" = "yes"])
|
||||
|
||||
AX_PERL_MODULE([Net::DNS::Nameserver])
|
||||
AM_CONDITIONAL([HAVE_PERLMOD_NET_DNS_NAMESERVER],
|
||||
[test "$HAVE_PERLMOD_NET__DNS__NAMESERVER" = "yes"])
|
||||
|
||||
AX_PERL_MODULE([Time::HiRes])
|
||||
AM_CONDITIONAL([HAVE_PERLMOD_TIME_HIRES],
|
||||
[test "$HAVE_PERLMOD_TIME__HIRES" = "yes"])
|
||||
|
||||
#
|
||||
# Python is optional, it is used only by some of the system test scripts.
|
||||
#
|
||||
|
|
@ -343,9 +323,6 @@ AS_IF([test -z "$PYTEST"],
|
|||
AC_SUBST([PYTEST])
|
||||
AM_CONDITIONAL([HAVE_PYTEST], [test -n "$PYTEST"])
|
||||
|
||||
AX_PYTHON_MODULE([dns])
|
||||
AM_CONDITIONAL([HAVE_PYMOD_DNS], [test "$HAVE_PYMOD_DNS" = "yes"])
|
||||
|
||||
#
|
||||
# xsltproc is optional, it is used only by system test scripts.
|
||||
#
|
||||
|
|
|
|||
Loading…
Reference in a new issue