From 972a6722de02df0f1e723077e9bd3b350d3e41b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicki=20K=C5=99=C3=AD=C5=BEek?= Date: Tue, 26 Nov 2024 14:29:42 +0100 Subject: [PATCH 1/2] Add all env vars to jinja2 templates Ensure that the jinja2 templates have all the environment variables which are available to the tests present. This omission during the original 9.18 backport caused an issue where port numbers (determined by the pytest framework) wouldn't be available in jinja2 templates. --- bin/tests/system/conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/tests/system/conftest.py b/bin/tests/system/conftest.py index bc17f000ae..37a26bb549 100644 --- a/bin/tests/system/conftest.py +++ b/bin/tests/system/conftest.py @@ -521,8 +521,8 @@ def system_test_dir(request, env, system_test_name, expected_artifacts): @pytest.fixture(scope="module") -def templates(system_test_dir: Path): - return isctest.template.TemplateEngine(system_test_dir) +def templates(system_test_dir: Path, env): + return isctest.template.TemplateEngine(system_test_dir, env) def _run_script( From a21c650ad0c3e164ecacd04b9c76ed0d29affb20 Mon Sep 17 00:00:00 2001 From: Michal Nowak Date: Thu, 18 Jul 2024 10:16:16 +0200 Subject: [PATCH 2/2] Rewrite database system test to pytest (cherry picked from commit 8005ad0dcd619078a8c109debb505267179c951e) --- .../ns1/{named1.conf.in => named.conf.j2} | 2 +- bin/tests/system/database/ns1/named2.conf.in | 41 -------------- bin/tests/system/database/setup.sh | 16 ------ bin/tests/system/database/tests.sh | 55 ------------------- bin/tests/system/database/tests_database.py | 41 ++++++++++++++ .../system/database/tests_sh_database.py | 22 -------- 6 files changed, 42 insertions(+), 135 deletions(-) rename bin/tests/system/database/ns1/{named1.conf.in => named.conf.j2} (91%) delete mode 100644 bin/tests/system/database/ns1/named2.conf.in delete mode 100644 bin/tests/system/database/setup.sh delete mode 100644 bin/tests/system/database/tests.sh create mode 100644 bin/tests/system/database/tests_database.py delete mode 100644 bin/tests/system/database/tests_sh_database.py diff --git a/bin/tests/system/database/ns1/named1.conf.in b/bin/tests/system/database/ns1/named.conf.j2 similarity index 91% rename from bin/tests/system/database/ns1/named1.conf.in rename to bin/tests/system/database/ns1/named.conf.j2 index 5fa7ce5ce4..87153695b2 100644 --- a/bin/tests/system/database/ns1/named1.conf.in +++ b/bin/tests/system/database/ns1/named.conf.j2 @@ -37,5 +37,5 @@ options { zone "database" { type primary; - database "_builtin empty localhost. hostmaster.isc.org."; + database "_builtin empty localhost. @rname | default('hostmaster.isc.org.')@"; }; diff --git a/bin/tests/system/database/ns1/named2.conf.in b/bin/tests/system/database/ns1/named2.conf.in deleted file mode 100644 index 80cfab28b8..0000000000 --- a/bin/tests/system/database/ns1/named2.conf.in +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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. - */ - -// NS1 - -key rndc_key { - secret "1234abcd8765"; - algorithm @DEFAULT_HMAC@; -}; - -controls { - inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; }; -}; - -options { - query-source address 10.53.0.1; - notify-source 10.53.0.1; - transfer-source 10.53.0.1; - port @PORT@; - pid-file "named.pid"; - listen-on { 10.53.0.1; }; - listen-on-v6 { none; }; - recursion no; - notify yes; - dnssec-validation yes; -}; - -zone "database" { - type primary; - database "_builtin empty localhost. marka.isc.org."; -}; diff --git a/bin/tests/system/database/setup.sh b/bin/tests/system/database/setup.sh deleted file mode 100644 index f3f0088a23..0000000000 --- a/bin/tests/system/database/setup.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/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 - -copy_setports ns1/named1.conf.in ns1/named.conf diff --git a/bin/tests/system/database/tests.sh b/bin/tests/system/database/tests.sh deleted file mode 100644 index efd352c2bb..0000000000 --- a/bin/tests/system/database/tests.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/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. - -set -e - -. ../conf.sh - -status=0 -n=0 - -rm -f dig.out.* - -DIGOPTS="+tcp +noadd +nosea +nostat +nocmd +dnssec -p ${PORT}" -RNDCCMD="$RNDC -s 10.53.0.1 -p ${CONTROLPORT} -c ../_common/rndc.conf" - -# Check the example. domain - -echo_i "checking pre reload zone ($n)" -ret=0 -$DIG $DIGOPTS soa database. @10.53.0.1 >dig.out.ns1.test$n || ret=1 -grep "hostmaster\.isc\.org" dig.out.ns1.test$n >/dev/null || ret=1 -n=$((n + 1)) -if [ $ret != 0 ]; then echo_i "failed"; fi -status=$((status + ret)) - -copy_setports ns1/named2.conf.in ns1/named.conf -$RNDCCMD reload 2>&1 >/dev/null - -echo_i "checking post reload zone ($n)" -ret=1 -try=0 -while test $try -lt 6; do - sleep 1 - ret=0 - $DIG $DIGOPTS soa database. @10.53.0.1 >dig.out.ns1.test$n || ret=1 - grep "marka\.isc\.org" dig.out.ns1.test$n >/dev/null || ret=1 - try=$((try + 1)) - test $ret -eq 0 && break -done -n=$((n + 1)) -if [ $ret != 0 ]; then echo_i "failed"; fi -status=$((status + ret)) - -echo_i "exit status: $status" -[ $status -eq 0 ] || exit 1 diff --git a/bin/tests/system/database/tests_database.py b/bin/tests/system/database/tests_database.py new file mode 100644 index 0000000000..6793e50b95 --- /dev/null +++ b/bin/tests/system/database/tests_database.py @@ -0,0 +1,41 @@ +# 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. + +import isctest + +import dns.message + + +def test_database(servers, templates): + msg = dns.message.make_query("database.", "SOA") + + # checking pre reload zone + res = isctest.query.tcp(msg, "10.53.0.1") + assert res.answer[0] == dns.rrset.from_text( + "database.", + 86400, + "IN", + "SOA", + "localhost. hostmaster.isc.org. 0 28800 7200 604800 86400", + ) + + templates.render("ns1/named.conf", {"rname": "marka.isc.org."}) + servers["ns1"].rndc("reload") + + # checking post reload zone + res = isctest.query.tcp(msg, "10.53.0.1") + assert res.answer[0] == dns.rrset.from_text( + "database.", + 86400, + "IN", + "SOA", + "localhost. marka.isc.org. 0 28800 7200 604800 86400", + ) diff --git a/bin/tests/system/database/tests_sh_database.py b/bin/tests/system/database/tests_sh_database.py deleted file mode 100644 index 62b9105f1e..0000000000 --- a/bin/tests/system/database/tests_sh_database.py +++ /dev/null @@ -1,22 +0,0 @@ -# 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. - -import pytest - -pytestmark = pytest.mark.extra_artifacts( - [ - "dig.out.*", - ] -) - - -def test_database(run_tests_sh): - run_tests_sh()