mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
Refactor configloading test
- 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.
This commit is contained in:
parent
cf77bfacce
commit
f076d0d619
5 changed files with 38 additions and 81 deletions
|
|
@ -1,15 +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.
|
||||
|
||||
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.
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
#!/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
|
||||
38
bin/tests/system/configloading/tests_configloading.py
Normal file
38
bin/tests/system/configloading/tests_configloading.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# 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)
|
||||
|
|
@ -1,47 +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(
|
||||
[
|
||||
"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"))
|
||||
Loading…
Reference in a new issue