Commit graph

12761 commits

Author SHA1 Message Date
Nicki Křížek
e7bd28dbf8 Parametrize dnssec/tests_badkey.py tests
Utilize test parametrization to reduce code duplication.
2025-07-31 12:55:40 -07:00
Evan Hunt
3c067e99b3 tidy up the dnssec test tree
many of the zones in the dnssec system test were identical or
had only trivial differences, and it would be easier to keep track
of them if they were sourced from template files.

also, the extra_artifacts have been simplified and restored to
the test files.
2025-07-31 12:55:40 -07:00
Evan Hunt
5a457268d1 convert delv tests to python
move all dnssec tests using delv from the shell test to tests_delv.py,
and remove tests.sh and tests_sh_dnssec.py.
2025-07-31 12:55:40 -07:00
Evan Hunt
4bd0213fe7 convert dnssec signing tests to python
the shell tests that queried servers to check correct signing
behavior (using dnssec-signzone, dnssec-policy and nsupdate),
as well as "rndc signing", private-type records, rndc zonestatus,
offline keys, etc, have been moved to tests_signing.py.

the minimal update test in the dnssec_update_test.pl script
was also moved here and the perl script has been removed.
2025-07-31 12:55:40 -07:00
Evan Hunt
950df056b3 convert dnssec validation tests to python
begin converting DNSSEC validation tests from shell to python,
and simplify the name servers used in the test.

ns4, the name server used for validation tests, is now configured
using jinja2 templates.

ns8, which was previously used for testing unsupported, disabled
and revoked keys and trust anchors, has been removed.  we now
use a jinja2 configuration in ns5 for this purpose.

the configurations in ns7 and ns6 didn't conflict with one another,
so the two servers have been merged into one.
2025-07-31 12:55:40 -07:00
Evan Hunt
8ddec41987 convert dnssec-policy tests to python
move the signatures-validity tests to tests_policy.py
2025-07-31 12:55:40 -07:00
Evan Hunt
0fabb0fbb6 convert TAT tests to python
the trust-anchor-telemetry tests have been moved to a new
python subtest, dnssec/tests_tat.py.
2025-07-31 12:55:40 -07:00
Evan Hunt
e1fa6f089b move some test cases to different system tests
- dnssec tool tests (i.e., dnssec-signzone, dnssec-keygen, etc) that
  don't require interaction with a running server have been moved
  to a new 'dnssectools' system test directory.
- a dig formatting test has been moved to digdelv.
- a named-rrchecker test has been moved to rrchecker
2025-07-31 12:55:40 -07:00
Evan Hunt
d3bfa916b3 move NTA test cases to a separate python test
the tests of "rndc nta" behavior have been moved out of the
dnssec shell test, into bin/tests/system/nta, and converted
to python. features of the dnssec test framework that were
needed for NTA testing have been moved to the nta test, and
dnssec has been correspondingly simplified.
2025-07-31 12:55:40 -07:00
Evan Hunt
bcf41973bb start converting dnssec system test to python/jinja2
- changed named.conf.in to named.conf.j2 in all server directories that
  don't currently need to use copy_setports() during the test.
- converted the tests that use ns5 to python, and replaced
  named1.conf.in and named2.conf.in with a jinja2 template instead.
  the only remaining server that still needs copy_setports() is ns4.
- removed ns4/named5.conf.in, and moved its functions to ns5 (which
  is supposed to be for servers with broken trust-anchor configurations,
  so it should have been there in the first place). converted the tests
  that used that ns4 configuration to use ns5 with jinja instead.
- revised the remaining ns4 configurations (named[1-4].conf.in) to
  minimize the differences between them. this will make it easier to
  convert it into a jinja2 template later.
2025-07-31 12:55:40 -07:00
Petr Špaček
b0c7f8b598 Fix compatibility with Python < 3.10
Dataclass kw_only argument was added only in Python 3.10 but EL9 image
has only 3.9.21.
2025-07-30 14:35:32 +00:00
Petr Špaček
6ae224fc9c Fix minimal dnspython version test
Wrong version number was uncovered by Ubuntu 22.04 Jammy which actually
has dnspython 2.1.0.
2025-07-30 14:35:32 +00:00
Nicki Křížek
64143ea077 Use isctest.query.create across system tests
Rather than using the dnspython's facilities and defaults to create the
queries, use the isctest.query.create function in all the cases that
don't require special handling to have consistent defaults.
2025-07-29 12:13:11 -07:00
Nicki Křížek
f2a4c5dcb0 Add RA flag checks to isctest.check 2025-07-29 12:12:44 -07:00
Nicki Křížek
989e64b9b0 Refactor and move query helper to isctest.query.create
Make the query helper function more universal and reusable across our
system tests -- default to using EDNS and sending AD=1.
2025-07-29 12:12:44 -07:00
Nicki Křížek
efd60348b9 Unify RR counting in isctest.check helper
Use a common function to count the number of RRs in any section of the
DNS message. For the ADDITIONAL section, stick with the dnspython
convention of not including OPT and TSIG.
2025-07-29 12:12:44 -07:00
Nicki Křížek
b24dd20e5a Refactor isctest.check.section_equal comparison
Use the same logic as dnspython uses in dns.message.Message.
2025-07-29 12:12:44 -07:00
Evan Hunt
b69097f139 add helper functions to isctest
added some helper functions in isctest to reduce code repetition
in dnssec-related tests:

- isctest.check.adflag() - checks that a response contains AD=1
- isctest.check.noadflag() - checks that a response contains AD=0

- isctest.check.rdflag() - checks that a response contains RD=1
- isctest.check.nordflag() - checks that a response contains RD=0

- isctest.check.answer_count_eq() - checks the answer count is correct
- isctest.check.additional_count_eq() - same for authority count
- isctest.check.authority_count_eq() - same for additional count

- isctest.check.same_data() - check that two message have the
                              same rcode and data
- isctest.check.same_answer() - check that two message have the same
                                rcode and answer

- isctest.dnssec.msg() - a wrapper for dns.message.make_query() that
                         creates a query message similar to dig +dnssec:
                         use_edns=True, want_dnssec=True,
                         and flags are set to (RD|AD) by default, but
                         options exist to disable AD or enable CD.
                         (to generate non-DNSSEC queries, use
                         message.make_query() directly.)
2025-07-29 12:12:44 -07:00
Matthijs Mekking
abdb9a1334 Improve key collision detection in ksr system test
MR !10238 added key collision detection in the ksr system test but it
was flawed because for every "collide" in the output we also log
"Generating an new key" and for each "Generating" we add the counter
by one, nullifying the subtract by one.

Use regular expressions to search in the output and make the string
expression more strict.
2025-07-29 13:57:06 +02:00
Michał Kępień
adb931f700 Adjust type hints for the "nsec3-answer" test
Add missing type hints in the tests_nsec3.py module.  Tweak the syntax
used for type hints for better consistency with other Python code in
bin/tests/system/.
2025-07-29 10:00:46 +02:00
Petr Špaček
fc3d5e5918 Add more empty non-terminals to test zone
I don't know exactly why, I just have a feeling there might be
interesting corner cases somewhere.
2025-07-29 10:00:46 +02:00
Petr Špaček
46781845ea Randomize NSEC3 salt
This should prevent the case where are are unlucky enough that static
values hash 'just right' for the test to pass, but only accidentally.
2025-07-29 10:00:46 +02:00
Petr Špaček
548632b18a Test proof of nonexistance of DS in insecure referrals
Currently this test is limited only to auth because currently BIND
resolver does not send DS proof of nonexistence for RD=0 queries.
2025-07-29 10:00:46 +02:00
Petr Špaček
73e4201331 Test dangling DNAME answers come with NXDOMAIN proofs
Simplistic test. Ignores the possibility of DNAME chain going through
multiple zones and/or wildcard expansions.
2025-07-29 10:00:46 +02:00
Petr Špaček
d0e413dd57 Test dangling CNAMEs come with NXDOMAIN proofs
Simplistic test. Ignores the possibility of CNAME chain going through
multiple zones and/or wildcard expansions.
2025-07-29 10:00:46 +02:00
Petr Špaček
cc6544b417 Move query outside of check_() functions
This allows better check() code reuse.
2025-07-29 10:00:46 +02:00
Petr Špaček
ac58b58002 Separate test into a new directory
The test actually needs just two servers - auth and resolver. The rest
was not needed and made test setup only slower and harder to debug.
2025-07-29 10:00:46 +02:00
Petr Špaček
a92391f60f Test simple NODATA answers with NSEC3 2025-07-29 10:00:46 +02:00
Petr Špaček
b854d5a3f5 Detect extraneous NSEC3 RRs in responses
We expect minimal possible answers which prove what they have to
according to DNSSEC protocol.
2025-07-29 10:00:46 +02:00
Petr Špaček
c45ad51860 Move proof checking into a NSEC3Checker class 2025-07-29 10:00:46 +02:00
Petr Špaček
cfaf5c997f Add consistency checks to responses with NSEC3
Basic sanity checks - limited to responses from a single zone:
- NSEC3 type cannot be present in type bitmap:
  By definition, the type bitmap describes state of the unhashed name
  but NSEC3 RR is present at a different owner name. RFC 7129 section 5
- NSEC3 owner names cannot be duplicated:
  Unless the response crosses zone boundary, parent zone has insecure
  delegation for child, but child is signed ... don't do that.
- All parameters are consistent across all RRs present in answer:
  RFC 5155 section 7.2, last paragraph - at least when we don't cross
  zone boundary.
2025-07-29 10:00:46 +02:00
Petr Špaček
9ca2077274 Split NXDOMAIN/NOERROR/NODATA test cases
Untangling individual cases allows for clearer documentation and makes
it easier to build similar but slightly different test cases.  Wildcard
NODATA answer was added.
2025-07-29 10:00:45 +02:00
Petr Špaček
f0592de608 Extract closest encloser and source of synthesis logic into ZoneAnalyzer
As a side-effect, we now have set of all existing names in a zone with a
test, too. These parts should be shared with new NSEC tests.
2025-07-29 10:00:45 +02:00
Petr Špaček
9cea2af25c Use isctest library to check hypothesis version
Side-effect of importing from isctest.hypothesis first is a version
check and clean Pytest skip if version is too old.
2025-07-29 10:00:45 +02:00
Petr Špaček
42b60a3819 Generate comprehensive tests for ZoneAnalyzer utility class
Test all combinations of wildcard, ENT, DNAME, NS, and ordinary
TXT records.

Test zone and expected outputs are generated by another script which
encodes node content into node name. This encoding removes 'node
content' level of indirection and thus enables simpler implementation of
same logic which needs to be in ZoneAnalyzer itself.

For humans the generated zone file also lists expected 'categories' a
name belongs to as dot-separated list on right hand side of a generated
RR.
2025-07-29 10:00:45 +02:00
Petr Špaček
cad48e56ab Test ZoneAnalyzer utility class
I've considered writing hypothesis test for this but I would have to
reimplement the same thing, which would probably have the same logic
bugs, so I will leave it as an exercise for someone else.
2025-07-29 10:00:37 +02:00
Petr Špaček
dbba59f48b Separate zone analyzer from NSEC3 test
Code to generate ENTs, detect wildcards, occlusion etc. is generic
enough to be in an utility module.
2025-07-29 10:00:37 +02:00
Petr Špaček
3fb6b990af Shorten syntax to access Name object
dns.name all over the place does not make it easier to read the code at
all, and I'm going to add lot more code here.
2025-07-29 10:00:36 +02:00
Petr Špaček
bd8be10329 Move multi-subdomain name generator into shared utilities 2025-07-29 10:00:36 +02:00
Evan Hunt
e263df8848 Add property based test for nsec3hash utility
Check the correctness of NSEC3 hash generation by generating random
combinations of name, salt, and iterations and comparing the outputs
of the nsec3hash tool against the dnspython nsec3_hash function
for the same inputs.
2025-07-29 10:00:36 +02:00
Petr Špaček
84ad35e7af Test also with subdomains of existing names
Composite strategy makes sure we always test with a subdomain of an
existing name.
2025-07-29 10:00:36 +02:00
Petr Špaček
f9e12a840d Dedup NSEC3 get_next_name function 2025-07-29 10:00:36 +02:00
Matthijs Mekking
955e3ccf3e Add a property based test for NSEC3 proofs for non-existent QNAMEs
For any given NSEC3 signed zone, when doing queries for non-existent
names, the response must contain:
- NSEC3 RR that matches the closest encloser,
- NSEC3 RR that covers the next closer name,
- NSEC3 RR that covers the wildcard.
2025-07-29 10:00:36 +02:00
Mark Andrews
132e68fddb Check that correct NSEC3 proofs are returned 2025-07-29 10:00:36 +02:00
Colin Vidal
b0061843b7 update test_hooks system tests
Add the case where the plugin name is provided without the extension in
the test_hooks system tests.
2025-07-28 23:08:04 +02:00
Michał Kępień
48e705d738 Account for idle timeouts in the "dispatch" test
When the tests-connreset.py module was initially implemented in commit
5c17919019, the dispatch code did not
properly apply the idle timeout to TCP connections.  This allowed the
check in that test module to reset the TCP connection after 5 seconds as
named did not attempt to tear the connection down earlier than that.
However, as the dispatch code was improved, the idle timeout started
being enforced for TCP dispatches; the exact value it is set to in the
current code depends on a given server's SRTT, but it defaults to about
1.2 seconds for responsive servers.  This means that the code paths
triggered by the "dispatch" system test are now different than the ones
it was originally supposed to trigger because it is now named itself
that shuts the TCP connection down cleanly before the ans3 server gets a
chance to reset it.

Account for the above by lowering the amount of time after which the
ans3 server in the "dispatch" system test resets TCP connections to just
1 second, so that the test actually does what its name implies.
2025-07-24 13:09:49 +02:00
Štěpán Balážik
316b7d5590 Use isctest.asyncserver in the "dispatch" test
Replace the custom DNS server used in the "dispatch" system test with
new code based on the isctest.asyncserver module.
2025-07-24 13:09:49 +02:00
Michał Kępień
e407888507 Enable resetting TCP connections
Add a TCP connection handler, ConnectionReset, which enables closing TCP
connections without emptying the client socket buffer, causing the
kernel to send an RST segment to the client.  This relies on a horrible
asyncio hack that can break at any point in the future due to abusing
implementation details in the Python Standard Library.  Despite the eye
bleeding this code may cause, the approach it takes was still deemed
preferable to implementing an asyncio transport from scratch just to
enable triggering connection resets.
2025-07-24 13:09:49 +02:00
Štěpán Balážik
b4d53e7287 Add support for TCP connection handlers
Add a new abstract class, ConnectionHandler, instances of which can be
installed on AsyncDnsServer to manipulate TCP connections upon
accepting.
2025-07-24 13:09:49 +02:00
Michał Kępień
06b0800df8 Enable requesting TCP connections to be closed
In response to client queries, AsyncDnsServer users can currently only
make the server either send a reply or silently ignore the query.  In
the case of TCP queries, neither of these actions causes the client's
connection to be closed - the onus of doing that is on the client.
However, in some cases the server may be required to close the
connection on its own, so AsyncDnsServer users need to have some way of
requesting such an action.

Add a new ResponseAction subclass, ResponseDropAndCloseConnection, which
enables AsyncDnsServer users to conveniently request TCP connections to
be closed.  Instead of returning the response to send,
ResponseDropAndCloseConnection raises a custom exception that
AsyncDnsServer._handle_tcp() handles accordingly.
2025-07-24 13:09:49 +02:00
Ondřej Surý
f6aed602f0
Refactor the network manager to be a singleton
There is only a single network manager running on top of the loop
manager (except for tests).  Refactor the network manager to be a
singleton (a single instance) and change the unit tests, so that the
shorter read timeouts apply only to a specific handle, not the whole
extra 'connect_nm' network manager instance.
2025-07-23 22:45:38 +02:00
Ondřej Surý
b8d00e2e18
Change the loopmgr to be singleton
All the applications built on top of the loop manager were required to
create just a single instance of the loop manager.  Refactor the loop
manager to not expose this instance to the callers and keep the loop
manager object internal to the isc_loop compilation unit.

This significantly simplifies a number of data structures and calls to
the isc_loop API.
2025-07-23 22:44:16 +02:00
Štěpán Balážik
ec5729bee3 Use isctest.asyncserver in the "zero" test
The original `ans.pl` server was based on a copy of the one in
`fetchlimit`, so there are some changes:

- The server now only responds with A replies (which is the only thing
  needed).
- The incrementing of the IP address goes beyond the least significant
  octet (so, after 192.0.2.255 it will yield 192.0.3.0).
2025-07-23 09:45:50 +00:00
Matthijs Mekking
dc649735ad Add reproducer as test case
The issue provided a reproducer that can be easily converted into a
test case.
2025-07-23 07:18:48 +00:00
Ondřej Surý
6b7c99027d
Disable clang-format for Local IPv6 Unicast Addresses strings
The LSP server (using clangd) was always complaining about:

    Suspicious string literal, probably missing a comma

for the two Local IPv6 Unicast Addresses strings that spanned
across multiple lines.  Disable clang-format for these two lines.
2025-07-23 07:40:41 +02:00
Štěpán Balážik
9ffc833919 Use isctest.asyncserver in the "fetchlimit" test
Replace the custom DNS server used in the "fetchlimit" system test
with new code based on the isctest.asyncserver module.
2025-07-22 08:33:30 +02:00
Mark Andrews
df04924209 test synth-from-dnssec with no cached parent NSECs
Add \007.no-apex-covering as an owner name so that the cache does
not get primed with a parent NSEC RRset to test the case where
dns_qp_lookup returns ISC_R_NOTFOUND.
2025-07-21 17:05:50 +02:00
Nicki Křížek
467b826162 Add wait_for_keymgr_done() util function to tests
The kasp test cases assume that keymgr operations on the zone under test
have been completed before the test is executed. These are typically
quite fast, but the logs need to be explicitly checked for the messages,
otherwise there's a possibility of race conditions causing the
kasp/rollover tests to become unstable.

Call the wait function in all the kasp/rollover tests where it is
expected (which is generally in each test, unless we're dealing with
unsigned zones).
2025-07-18 14:37:32 +02:00
Nicki Křížek
fe55342916 Add nsX fixtures to system tests
Many of our test cases only use a single NamedInstance from the
`servers` fixture. Introduce `nsX` helper fixtures to simplify these
tests and reduce boilterplate code further.

Specifically, the test no longer has to either define its own variable
to extract a single server from the list, or use the longer
servers["nsX"] syntax. While this may seem minor, the amount of times it
is repeated across the tests justifies the change. It also promotes
using more explicit server identification, i.e. `nsX`, rather than
generic `server`. This also improves the clarity of the tests and may be
helpful in traceback during debugging as well.
2025-07-18 14:37:32 +02:00
Nicki Křížek
42b034460f Clean up rollover test case 2025-07-18 13:43:53 +02:00
Nicki Křížek
86c3c1da77 Isolate rollover-multisigner test case 2025-07-18 13:43:51 +02:00
Nicki Křížek
e294177312 Isolate rollover-enable-dnssec test case 2025-07-18 13:37:58 +02:00
Nicki Křížek
64199e062d Isolate rollover-zsk-prepub test case 2025-07-18 13:37:58 +02:00
Nicki Křížek
bc7be041e1 Isolate rollover-ksk-3crowd test case 2025-07-18 13:37:58 +02:00
Nicki Křížek
d6dffe6603 Use common test functions for three-is-a-crowd test
Previously, a lot of the checking was re-implemented and duplicated from
check_rollover_step(). Use that function where possible and only
override the needed checks.
2025-07-18 13:37:58 +02:00
Nicki Křížek
bd5a55c5b7 Isolate rollover-ksk-doubleksk test case 2025-07-18 13:37:58 +02:00
Nicki Křížek
296cfc8363 Isolate rollover-csk-roll1 test case 2025-07-18 13:37:58 +02:00
Nicki Křížek
9d2bd1b646 Isolate rollover-csk-roll2 test case 2025-07-18 13:37:58 +02:00
Nicki Křížek
fdecef5378 Isolate rollover-algo-csk test 2025-07-18 13:37:58 +02:00
Nicki Křížek
8be9a8b52a Isolate rollover-algo-ksk-zsk test 2025-07-18 13:37:58 +02:00
Nicki Křížek
519f9082df Isolate rollover-straight2none test 2025-07-18 13:37:58 +02:00
Nicki Křížek
a9c70c3e26 Isolate rollover-lifetime test 2025-07-18 13:37:58 +02:00
Nicki Křížek
7001056eab Isolate rollover-going-insecure test case 2025-07-18 13:37:58 +02:00
Nicki Křížek
8503a218c3 Isolate rollover-dynamic2inline test 2025-07-18 13:37:58 +02:00
Nicki Křížek
44dd5b3240 Separate common templates and test code for rollover tests
This is a preparation to split up and further isolate the various
rollover tests in a subsequent commits.
2025-07-18 13:37:58 +02:00
Nicki Křížek
b410710354 Move shared test code into isctest.kasp module
Move key calculations and rollover step checks into the shared
isctest.kasp module. Deduplicate the key interval calculations.
2025-07-18 13:37:58 +02:00
Nicki Křížek
784a252425 Use a single named.conf template in rollover test
Rather than using multiple slightly modified named.conf files, use a
single template which can be rendered differently based on an input
argument -- in this case, csk_roll.
2025-07-18 13:37:58 +02:00
Nicki Křížek
f076d0d619 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.
2025-07-18 12:13:30 +02:00
Nicki Křížek
d737986ea2 Turn on doctest in CI
Run doctests for the isctest module in a dedicated CI job.
2025-07-18 11:32:41 +02:00
Nicki Křížek
dcfb6c23da Change NamedInstance.rndc() doctest into doc example
The test is troublesome, because NamedInstance(identifier) expects that
a directory with such a name exists. While it'd be possible to mock
those directories as well, it'd make the doctest overly long and
complex, which isn't justified, given that it's only testing a couple of
options. Turn it into regular documentation instead.
2025-07-18 11:32:41 +02:00
Nicki Křížek
ee782fb4b1 Separate LineReader functionality from WatchLog
The buffered reading of finished lines deserves its own class to make
its function clearer, rather than bundling it within the WatchLog class.

Co-Authored-By: Michał Kępień <michal@isc.org>
2025-07-18 11:32:41 +02:00
Nicki Křížek
3c8432d196 Refactor WatchLog for better readability
Various improvements for typing, naming, code deduplication and better
code organization to make the code easier to read.
2025-07-18 11:32:41 +02:00
Nicki Křížek
628b47dd30 Use custom WatchLog timeout exception
The TimeoutError is raised when system functions time out. Define a
custom WatchLogTimeout to improve clarity.
2025-07-18 11:32:41 +02:00
Nicki Křížek
0a839cd0bd Add wait_for_all() and wait_for_sequence() to WatchLog
Extend the WatchLog API with a couple of new matching options.

wait_for_sequence() can be used to check a specific sequence of lines
appears in the log file in the given order.

wait_for_all() ensure that all the provided patterns appear in the log
at least once.

Co-authored-by: Colin Vidal <colin@isc.org>
2025-07-18 11:32:41 +02:00
Nicki Křížek
365f8b6af6 Split up waiting for match to a separate WatchLog method
To allow re-use in upcoming functions, isolate the line matching logic
into a separate function. Use an instance-wide deadline attribute, which
is set by the calling function.
2025-07-18 11:32:41 +02:00
Nicki Křížek
2afb3755b2 Allow WatchLog.wait_for_line() to be called more than once
In some cases, it can be useful to be able to re-use the same WatchLog
to wait for another line.
2025-07-18 11:32:41 +02:00
Nicki Křížek
5840908ead Unify the WatchLog.wait_for_line/s() API
Rather than using two distinct functions for matching either one pattern
(wait_for_line()), or any of multiple patterns (wait_for_lines()), use a
single function that handles both in the same way.

Extend the wait_for_line() API:
1. To allow for usage of one or more FlexPatterns, i.e. either plain
   strings to be matched verbatim, or regular expressions. Both can be
   used interchangeably to provide the caller to write simple and
   readable test code, while allowing for increased complexity to allow
   special cases.
2. Always return the regex match, which allows the caller to identify
   which line was matched, as well as to extract any additional
   information, such as individual regex groups.
2025-07-18 11:32:41 +02:00
Nicki Křížek
f2679bff19 Set timeout for WatchLog per-instance rather than per-call
To simplify usage of multiple wait_for_*() calls, configure the timeout
value for the WatchLog instance, rather than specifying it for each
call.

This is a preparation/cleanup for implementing multiple wait_for_*()
calls in subsequent commits.
2025-07-18 11:32:41 +02:00
Nicki Křížek
67896ddde2 Abstract WatchLog line buffering to a separate function
Move the line buffering functionality into _readline() to improve the
readability of code. This also allows reading the file contents from
other functions, since the line buffer is now an attribute of the class.
2025-07-18 11:32:41 +02:00
Colin Vidal
9778068253 fix watchlog.py doctest
Fix some broken doctest in watchlog.py (no semantic error, but API
slightly changed and broke some output messags). Also add a test for a
missing failure case.
2025-07-18 11:32:40 +02:00
Alessio Podda
fdbcdcfc06 Remove unused link field from rdatacommon
The field link in rdatacommon is unused. This change should save 16
bytes for each rdata we create.
2025-07-17 12:57:51 +02:00
Štěpán Balážik
c2b800a552 Remove contrib/scripts
The scripts are ancient, trivial and/or unmaintained.
Since switching to Meson, we don't even build `*.in` ones.
2025-07-17 07:17:12 +02:00
Mark Andrews
7ba91e3820 Fix ifconfig.sh script
Add missing test for the variable 'a' being empty on linux.
2025-07-17 07:36:40 +10:00
Mark Andrews
1a82a1999b Remove leftover test development echo 2025-07-15 23:53:57 +10:00
Mark Andrews
370d28de97 Redirect named-checkzone output to file 2025-07-15 23:53:57 +10:00
Mark Andrews
86fb638085 Check deprecated algorithms in dnssec-policy 2025-07-15 23:53:57 +10:00
Mark Andrews
95a82d0893 Check that named-checkzone reports deprecated digests 2025-07-15 23:53:57 +10:00
Mark Andrews
5d406677f1 Check that named-checkzone reports deprecated algorithms 2025-07-15 23:53:57 +10:00
Mark Andrews
1e3e61ba53 Update man pages for deprecated algorithms 2025-07-15 23:53:57 +10:00
Mark Andrews
cb6903c55e Warn about deprecated DNSKEY and DS algorithms / digest types
DNSKEY algorithms RSASHA1 and RSASHA-NSEC3-SHA1 and DS digest type
SHA1 are deprecated.  Log when these are present in primary zone
files and when generating new DNSKEYs, DS and CDS records.
2025-07-15 23:53:57 +10:00