mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-22 10:10:06 +00:00
Add system test utility package isctest
Create a utility package for code shared by the python tests. The utility functions should use reasonable defaults and be split up into modules according to their functionality. Ensure assert rewriting is enabled for the modules to get the most useful output from pytest.
This commit is contained in:
parent
f0481c8600
commit
cba5a1d62c
@ -23,6 +23,9 @@ from typing import Any, Dict, List, Optional
|
||||
import pytest
|
||||
|
||||
|
||||
pytest.register_assert_rewrite("isctest")
|
||||
|
||||
|
||||
# Silence warnings caused by passing a pytest fixture to another fixture.
|
||||
# pylint: disable=redefined-outer-name
|
||||
|
||||
|
13
bin/tests/system/isctest/__init__.py
Normal file
13
bin/tests/system/isctest/__init__.py
Normal file
@ -0,0 +1,13 @@
|
||||
# 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.
|
||||
|
||||
from . import check
|
||||
from . import query
|
34
bin/tests/system/isctest/check.py
Normal file
34
bin/tests/system/isctest/check.py
Normal file
@ -0,0 +1,34 @@
|
||||
# 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.
|
||||
|
||||
from typing import Any
|
||||
|
||||
import dns.rcode
|
||||
import dns.message
|
||||
|
||||
|
||||
# compatiblity with dnspython<2.0.0
|
||||
try:
|
||||
# In dnspython>=2.0.0, dns.rcode.Rcode class is available
|
||||
# pylint: disable=invalid-name
|
||||
dns_rcode = dns.rcode.Rcode # type: Any
|
||||
except AttributeError:
|
||||
# In dnspython<2.0.0, selected rcodes are available as integers directly
|
||||
# from dns.rcode
|
||||
dns_rcode = dns.rcode
|
||||
|
||||
|
||||
def rcode(message: dns.message.Message, expected_rcode) -> None:
|
||||
assert message.rcode() == expected_rcode, str(message)
|
||||
|
||||
|
||||
def noerror(message: dns.message.Message) -> None:
|
||||
rcode(message, dns_rcode.NOERROR)
|
35
bin/tests/system/isctest/query.py
Normal file
35
bin/tests/system/isctest/query.py
Normal file
@ -0,0 +1,35 @@
|
||||
# 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 os
|
||||
from typing import Optional
|
||||
|
||||
import dns.query
|
||||
import dns.message
|
||||
|
||||
|
||||
QUERY_TIMEOUT = 10
|
||||
|
||||
|
||||
def udp(
|
||||
message: dns.message.Message, ip: str, port: Optional[int] = None
|
||||
) -> dns.message.Message:
|
||||
if port is None:
|
||||
port = int(os.environ["PORT"])
|
||||
return dns.query.udp(message, ip, QUERY_TIMEOUT, port=port)
|
||||
|
||||
|
||||
def tcp(
|
||||
message: dns.message.Message, ip: str, port: Optional[int] = None
|
||||
) -> dns.message.Message:
|
||||
if port is None:
|
||||
port = int(os.environ["PORT"])
|
||||
return dns.query.tcp(message, ip, QUERY_TIMEOUT, port=port)
|
@ -462,6 +462,7 @@ for testname in testnames:
|
||||
not os.path.isdir(dirpath)
|
||||
or testname.startswith(".")
|
||||
or testname.startswith("_")
|
||||
or testname == "isctest"
|
||||
):
|
||||
continue
|
||||
if "_" in testname:
|
||||
|
Loading…
x
Reference in New Issue
Block a user