- Use WatchLog.wait_for_sequence() for the configloading test.
- Omit artifacts check, as it seems quite useless for this test case.
- Join all the tests together. The test case is fairly simple here and
this is the easiest way to ensure the log will be in a predictable
state for all tests. Previously, there was no way to ensure
test_configloading_loading() won't be executed after the other tests,
which would render the check moot. It could also be separated into
its own module, but that seems excessive for a simple test case like
this.
- Use jinja2 template for named.conf and remove setup.sh.
- Remove README and put the relevent comment directly next to the test.
- Remove _sh_ from the test filename to uphold the naming convention.
+++ /dev/null
-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.
-
-This test is a "guard/warning" to make sure the named.conf loading (parsing) is
-done outside of the exclusive mode (so, named is still able to answer queries
-and operating normally in case of configuration reload). It is currently based
-on logging, so it's quite brittle.
+++ /dev/null
-#!/bin/sh -e
-
-# 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.
-
-# shellcheck source=conf.sh
-. ../conf.sh
-
-set -e
-
-copy_setports ns1/named.conf.in ns1/named.conf
--- /dev/null
+# 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.
+
+
+def test_configloading_log(servers):
+ """
+ This test is a "guard/warning" to make sure the named.conf loading
+ (parsing) is done outside of the exclusive mode (so, named is still able to
+ answer queries and operating normally in case of configuration reload). It
+ is currently based on logging, so it's quite brittle.
+ """
+
+ server = servers["ns1"]
+ log_sequence = [
+ "load_configuration",
+ "parsing user configuration from ",
+ "apply_configuration",
+ "loop exclusive mode: starting",
+ ]
+
+ with server.watch_log_from_start() as watcher:
+ watcher.wait_for_sequence(log_sequence)
+
+ with server.watch_log_from_here() as watcher:
+ server.rndc("reconfig")
+ watcher.wait_for_sequence(log_sequence)
+
+ with server.watch_log_from_here() as watcher:
+ server.rndc("reload")
+ watcher.wait_for_sequence(log_sequence)
+++ /dev/null
-# 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(
- [
- "ns1/managed-keys.bind.jnl",
- ]
-)
-
-
-def assert_log_sequence(server, fnname, scopefn):
- triggers = {
- "load_configuration": 0,
- "parsing user configuration from ": 1,
- "apply_configuration": 2,
- "loop exclusive mode: starting": 3,
- }
- fn = getattr(server, fnname)
- for i in range(len(triggers.items())):
- with fn() as watcher:
- scopefn()
- assert watcher.wait_for_lines(dict(list(triggers.items())[i:])) == i
-
-
-def test_configloading_loading(servers):
- server = servers["ns1"]
- assert_log_sequence(server, "watch_log_from_start", lambda: ())
-
-
-def test_configloading_reconfig(servers):
- server = servers["ns1"]
- assert_log_sequence(server, "watch_log_from_here", lambda: server.rndc("reconfig"))
-
-
-def test_configloading_reload(servers):
- server = servers["ns1"]
- assert_log_sequence(server, "watch_log_from_here", lambda: server.rndc("reload"))