Merge branch 'tkrizek/system-tests-prereqs' into 'main'

Unify system test feature detection and add missing prerequisites

See merge request isc-projects/bind9!7151
This commit is contained in:
Tom Krizek 2022-12-02 09:44:29 +00:00
commit fc991fa79d
12 changed files with 122 additions and 44 deletions

View file

@ -45,7 +45,7 @@ n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
if [ -n "$NZD" ]; then
if $FEATURETEST --with-lmdb; then
echo_i "checking that existing NZF file was renamed after migration ($n)"
[ -e ns2/3bf305731dd26307.nzf~ ] || ret=1
n=`expr $n + 1`
@ -124,7 +124,7 @@ n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
if [ -z "$NZD" ]; then
if ! $FEATURETEST --with-lmdb; then
echo_i "verifying no comments in NZF file ($n)"
ret=0
hcount=`grep "^# New zone file for view: _default" ns2/3bf305731dd26307.nzf | wc -l`
@ -143,7 +143,7 @@ n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
if [ -n "$NZD" ]; then
if $FEATURETEST --with-lmdb; then
echo_i "checking zone is present in NZD ($n)"
ret=0
$NZD2NZF ns2/_default.nzd | grep previous.example > /dev/null || ret=1
@ -169,14 +169,14 @@ check_nzd2nzf() (
! grep previous.example nzd2nzf.out.$n > /dev/null
)
if [ -n "$NZD" ]; then
if $FEATURETEST --with-lmdb; then
echo_i "checking zone was deleted from NZD ($n)"
retry_quiet 10 check_nzd2nzf || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
fi
if [ -z "$NZD" ]; then
if ! $FEATURETEST --with-lmdb; then
echo_i "checking NZF file now has comment ($n)"
ret=0
hcount=`grep "^# New zone file for view: _default" ns2/3bf305731dd26307.nzf | wc -l`
@ -512,7 +512,7 @@ n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
if [ -z "$NZD" ]; then
if ! $FEATURETEST --with-lmdb; then
echo_i "checking new NZF file has comment ($n)"
ret=0
hcount=`grep "^# New zone file for view: external" ns2/external.nzf | wc -l`
@ -522,7 +522,7 @@ if [ -z "$NZD" ]; then
status=`expr $status + $ret`
fi
if [ -n "$NZD" ]; then
if $FEATURETEST --with-lmdb; then
echo_i "verifying added.example in external view created an external.nzd DB ($n)"
ret=0
[ -e ns2/external.nzd ] || ret=1
@ -548,7 +548,7 @@ status=`expr $status + $ret`
echo_i "checking rndc showzone with newly added zone ($n)"
_check_rndc_showzone_newly_added() (
if [ -z "$NZD" ]; then
if ! $FEATURETEST --with-lmdb; then
expected='zone "added.example" in external { type primary; file "added.db"; };'
else
expected='zone "added.example" { type primary; file "added.db"; };'
@ -655,7 +655,7 @@ n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
if [ -n "$NZD" ]; then
if $FEATURETEST --with-lmdb; then
echo_i "checking NZD file was created in new-zones-directory ($n)"
expect=ns2/new-zones/directory.nzd
else

View file

@ -113,18 +113,3 @@ export PERL=$(command -v "@PERL@")
export PYTHON=$(command -v "@PYTHON@" || true)
export PYTEST=@PYTEST@
#
# Determine if we support various optional features.
#
export LIBXML2_LIBS="@LIBXML2_LIBS@"
export HAVEXMLSTATS=${LIBXML2_LIBS:+1}
export JSON_C_LIBS="@JSON_C_LIBS@"
export HAVEJSONSTATS=${JSON_C_LIBS:+1}
export MAXMINDDB_LIBS="@MAXMINDDB_LIBS@"
export HAVEGEOIP2=${MAXMINDDB_LIBS:+1}
export ZLIB_LIBS="@ZLIB_LIBS@"
export HAVEZLIB=${ZLIB_LIBS:+1}
export LMDB_LIBS="@LMDB_LIBS@"
export NZD=${LMDB_LIBS:+1}
export CRYPTO=@CRYPTO@

View file

@ -0,0 +1,20 @@
#!/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
$FEATURETEST --enable-dnstap || {
echo_i "This test requires dnstap support." >&2
exit 255
}
exit 0

View file

@ -0,0 +1,20 @@
#!/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
$FEATURETEST --with-libnghttp2 || {
echo_i "This test requires libnghttp2 support." >&2
exit 255
}
exit 0

View file

@ -34,6 +34,7 @@ usage(void) {
fprintf(stderr, "\t--gethostname\n");
fprintf(stderr, "\t--gssapi\n");
fprintf(stderr, "\t--have-geoip2\n");
fprintf(stderr, "\t--have-json-c\n");
fprintf(stderr, "\t--have-libxml2\n");
fprintf(stderr, "\t--ipv6only=no\n");
fprintf(stderr, "\t--tsan\n");
@ -41,6 +42,7 @@ usage(void) {
fprintf(stderr, "\t--with-libidn2\n");
fprintf(stderr, "\t--with-lmdb\n");
fprintf(stderr, "\t--with-libnghttp2\n");
fprintf(stderr, "\t--with-zlib\n");
}
int
@ -112,6 +114,14 @@ main(int argc, char **argv) {
#endif /* ifdef HAVE_GEOIP2 */
}
if (strcmp(argv[1], "--have-json-c") == 0) {
#ifdef HAVE_JSON_C
return (0);
#else /* ifdef HAVE_JSON_C */
return (1);
#endif /* ifdef HAVE_JSON_C */
}
if (strcmp(argv[1], "--have-libxml2") == 0) {
#ifdef HAVE_LIBXML2
return (0);
@ -179,9 +189,17 @@ main(int argc, char **argv) {
if (strcmp(argv[1], "--with-libnghttp2") == 0) {
#ifdef HAVE_LIBNGHTTP2
return (0);
#else /* ifdef HAVE_LMDB */
#else /* ifdef HAVE_LIBNGHTTP2 */
return (1);
#endif /* ifdef HAVE_LMDB */
#endif /* ifdef HAVE_LIBNGHTTP2 */
}
if (strcmp(argv[1], "--with-zlib") == 0) {
#ifdef HAVE_ZLIB
return (0);
#else /* ifdef HAVE_ZLIB */
return (1);
#endif /* ifdef HAVE_ZLIB */
}
fprintf(stderr, "unknown arg: %s\n", argv[1]);

View file

@ -13,9 +13,9 @@
. ../conf.sh
if [ -n "${SOFTHSM2_MODULE}" ] && command -v softhsm2-util >/dev/null; then
if [ -n "${SOFTHSM2_MODULE}" ] && command -v pkcs11-tool >/dev/null && command -v softhsm2-util >/dev/null; then
exit 0
fi
echo_i "skip: softhsm2-util not available"
echo_i "skip: softhsm2-util or pkcs11-tool not available"
exit 255

View file

@ -0,0 +1,20 @@
#!/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
$FEATURETEST --with-lmdb || {
echo_i "This test requires LMDB support." >&2
exit 255
}
exit 0

View file

@ -12,6 +12,7 @@
# information regarding copyright ownership.
import os
import subprocess
import pytest
@ -19,3 +20,23 @@ import pytest
long_test = pytest.mark.skipif(
not os.environ.get("CI_ENABLE_ALL_TESTS"), reason="CI_ENABLE_ALL_TESTS not set"
)
def feature_test(feature):
feature_test_bin = os.environ["FEATURETEST"]
try:
subprocess.run([feature_test_bin, feature], check=True)
except subprocess.CalledProcessError as exc:
if exc.returncode != 1:
raise
return False
return True
have_libxml2 = pytest.mark.skipif(
feature_test("--have-libxml2"), reason="libxml2 support disabled in the build"
)
have_json_c = pytest.mark.skipif(
feature_test("--have-json-c"), reason="json-c support disabled in the build"
)

View file

@ -13,15 +13,12 @@
from datetime import datetime
import os
import pytest
import generic
import pytest_custom_markers
pytestmark = pytest.mark.skipif(
not os.environ.get("HAVEJSONSTATS"), reason="json-c support disabled in the build"
)
pytestmark = pytest_custom_markers.have_json_c
requests = pytest.importorskip("requests")

View file

@ -11,18 +11,15 @@
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
import xml.etree.ElementTree as ET
from datetime import datetime
import os
import xml.etree.ElementTree as ET
import pytest
import generic
import pytest_custom_markers
pytestmark = pytest.mark.skipif(
not os.environ.get("HAVEXMLSTATS"), reason="libxml2 support disabled in the build"
)
pytestmark = pytest_custom_markers.have_libxml2
requests = pytest.importorskip("requests")

View file

@ -17,7 +17,7 @@
DIGCMD="$DIG @10.53.0.2 -p ${PORT}"
RNDCCMD="$RNDC -c ../common/rndc.conf -p ${CONTROLPORT} -s"
if [ ! "$HAVEJSONSTATS" ]
if ! $FEATURETEST --have-json-c
then
unset PERL_JSON
echo_i "JSON was not configured; skipping" >&2
@ -29,7 +29,7 @@ else
echo_i "JSON tests require JSON library; skipping" >&2
fi
if [ ! "$HAVEXMLSTATS" ]
if ! $FEATURETEST --have-libxml2
then
unset PERL_XML
echo_i "XML was not configured; skipping" >&2
@ -139,7 +139,7 @@ ret=0
if [ -x "${CURL}" ] ; then
for i in 1 2 3 4 5; do
ret=0
if [ "$HAVEXMLSTATS" ];
if $FEATURETEST --have-libxml2;
then
URL="http://10.53.0.2:${EXTRAPORT1}/xml/v3/server"
filter_str='s#<current-time>.*</current-time>##g'
@ -167,7 +167,7 @@ n=$((n + 1))
ret=0
echo_i "checking if compressed output is really compressed ($n)"
if [ "$HAVEZLIB" ];
if $FEATURETEST --with-zlib;
then
REGSIZE=`cat regular.headers | \
grep -i Content-Length | sed -e "s/.*: \([0-9]*\).*/\1/"`

View file

@ -751,7 +751,7 @@ do
echo_i "Skipping XML statistics checks"
fi
if [ ${HAVEJSONSTATS} ] && [ -x "${CURL}" ] ; then
if $FEATURETEST --have-json-c && [ -x "${CURL}" ] ; then
echo_i "getting JSON statisistcs for (synth-from-dnssec ${description};) ($n)"
ret=0
json=json.out$n