Commit graph

43607 commits

Author SHA1 Message Date
Mark Andrews
19cf7bb2cd dsync_from struct produced an invalid record
uint16_tobuffer was used instead of uint8_tobuffer when adding the
scheme to the buffer.  This produced a record that was one octet
too long.  This has been fixed.

(cherry picked from commit 3180e50459)
2026-01-23 14:24:27 +00:00
Andoni Duarte
963737fa3f [9.20] chg: ci: Use a small always-on runner for lightweight CI jobs
Some CI jobs spend more time pulling the docker image and setting up their environment than running the script. This MR adds a tag `smalljob` to jobs considered lightweight in order to run them on a dedicated small VM.

Backport of MR !11266

Merge branch 'backport-andoni/try-small-vm-for-lightweight-ci-jobs-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11481
2026-01-23 12:38:56 +00:00
Andoni Duarte Pintado
b9106402cb
Add smalljob tag to small jobs not in the quick-checks stage
Jobs using the "post_merge" and "manual_release_job_qa" anchors also
complete in less than a minute, so they now include the "smalljob" tag.

Since the "release" job is also a fast one, but without an anchor, the
"smalljob" tag is added to its definition.

The "autoconf_job" definion also includes the tag and it is kept in its
own stage.

(cherry picked from commit e9f2b7944e)
2026-01-23 12:50:50 +01:00
Andoni Duarte Pintado
760f95bafa
De-duplicate yaml for "other-checks" jobs
In .gitlab-ci.yml, since "&other_checks_job" has "needs: []", remove
that line from the jobs that use that anchor.

(cherry picked from commit 66175b448c)
2026-01-23 12:50:50 +01:00
Andoni Duarte Pintado
5b087d8964
Move "needs: []" to the "quick_checks_job" anchor
Most jobs in this stage have it by default, so it makes sense to
add it to their common anchor. Jobs with different "needs:" will
override it.

(cherry picked from commit 432b7d7954)
2026-01-23 12:50:50 +01:00
Andoni Duarte Pintado
5044be551c
Group CI jobs in "quick-checks" stage together
Move the jobs in the "quick-checks" stage to the same place in
.gitlab-ci.yml.

(cherry picked from commit b3ac6b47d9)
2026-01-23 12:50:50 +01:00
Andoni Duarte Pintado
292951be90
Add faster CI jobs to the "quick-checks" stage
Given the short runtime (<1min) of the "linkcheck" and
"generate-tsan-stress-test-configs" CI jobs, move them to the
"quick-checks" stage.

(cherry picked from commit ae76829157)
2026-01-23 12:50:50 +01:00
Andoni Duarte Pintado
9694a1a06e
Move CI stage "other-checks" right after "quick-checks"
Move CI stage "other-checks" right after "quick-checks" and get the jobs
in it as close to each other as possible in .gitlab-ci.yml.

Since no job is allowed to depend (via "needs") on any job that is
assigned to a stage later than its own, move the "tsan:stress" and
"gcov" jobs to the "system" stage.

(cherry picked from commit 4f89d32bff)
2026-01-23 12:50:50 +01:00
Andoni Duarte Pintado
00e7621cd1
Move slower CI jobs out of "quick-checks" stage
Jobs with more than one minute of runtime are not considered for the
small VM.

The "tarball-create" job goes to the more appropriate "build" stage.

"coccinelle" and "checkbashisms" are moved to the generic
"other-checks".

(cherry picked from commit ba5844a1de)
2026-01-23 12:50:50 +01:00
Andoni Duarte Pintado
d2b9831950
Create "other_checks_job" anchor in CI yaml
Use an anchor for the common parts of "other-checks" jobs in CI yaml.

(cherry picked from commit e61bc3ad72)
2026-01-23 12:50:50 +01:00
Andoni Duarte Pintado
18b8517350
Rename the "postcheck" stage to "other-checks" in CI
Rename the "postcheck" CI stage to the more generic "other-checks".
Slower jobs that still run in autoscaled runners belong here, as opposed
to the lightweight ones in "quick-checks".

(cherry picked from commit 6d442c4a06)
2026-01-23 12:50:50 +01:00
Andoni Duarte Pintado
001bd6f361
Rename the "precheck" stage in CI to "quick-checks"
Most jobs in the "precheck" stage spend more time setting up their
environment than running the script (seconds), this allows us to add a
small always on dedicated runner instead of the autoscaled ones.

Hence, the stage is renamed to "quick-checks", and a tag "smalljob" is
added to the anchor so that these jobs are picked by the dedicated
runner.

(cherry picked from commit 9aa5041a88)
2026-01-23 12:50:50 +01:00
Andoni Duarte
80b2e49414 [9.20] fix: ci: Read the Docs picking old version when stable tag is updated
Read the Docs fails to pick the latest version when updating the `stable` tag, i.e. a build is triggered but it takes the previous version of it. This is a known bug in RtD: https://github.com/readthedocs/readthedocs.org/issues/10838.

The only approach that seems to solve this on our end, is to wait some time and trigger the build again so that it picks the latest version of the tag.

Backport of MR !11475

Merge branch 'backport-andoni/fix-rtd-picking-old-version-when-stable-branch-update-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11476
2026-01-22 19:17:49 +00:00
Andoni Duarte Pintado
aaed535171 Fix Read the Docs stable branch update bug
Read the Docs fails to pick the latest version of the stable tag when
updated, i.e. a build is triggered but it takes the previous version.
This commit triggers a second build after 5 minutes to ensure that the
correct tag version is used for the documentation.

This is a known bug in RtD:
https://github.com/readthedocs/readthedocs.org/issues/10838.

(cherry picked from commit 168b15cfd9)
2026-01-22 18:41:21 +00:00
Nicki Křížek
384ed04b84 [9.20] fix: ci: Apply black formatting changes
Generated by black 26.1.0 which got updated in CI.

Merge branch 'nicki/python-black-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11472
2026-01-22 09:44:36 +01:00
Nicki Křížek
bf303c793e Apply black formatting changes
Generated by black 26.1.0 which got updated in CI.
2026-01-21 22:39:09 +01:00
Nicki Křížek
a2a9b1b878 [9.20] chg: pkg: Update requirements for system test suite
Python 3.10 or newer is now required for running the system test suite. The required python packages and their version requirements are now tracked in `bin/tests/system/requirements.txt`.

Support for pytest 9.0.0 has been added its minimum supported version has been raised to 7.0.0. The minimum supported dnspython version has been raised to 2.3.0.

Closes #5690 

Closes #5614

Backport of MR !11415

Merge branch 'backport-nicki/pytest-9-compat-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11469
2026-01-21 16:36:52 +01:00
Nicki Křížek
ad212589bf Silence incorrect pylint warnings for hypothesis.assume()
With hypothesis>6.148.3, pylint generates

W0101: Unreachable code (unreachable)

when any code is present after hypothesis.assume(). Silence these until
it is fixed upstream.

See https://github.com/pylint-dev/pylint/issues/10785#issuecomment-3677224217

(cherry picked from commit 08630ca744)
2026-01-21 16:29:34 +01:00
Nicki Křížek
fe1b33fb7e Remove hypothesis version checks
The minimum required hypothesis version has been set in requirements.txt
and no longer needs to be checked at runtime.

Since the hypothesis package is now a mandatory prerequisite, include it
in isctest as the other subpackages.

(cherry picked from commit 1291fa1a6d)
2026-01-21 16:29:14 +01:00
Nicki Křížek
5c931d8045 Remove compatibility hacks for dnspython<2.7.0
The minimum required dnspython version is now 2.7.0 and those
compatibility hacks can be dropped.

(cherry picked from commit ce385d8100)
2026-01-21 16:29:01 +01:00
Nicki Křížek
a78d19c597 Bump the minimum required python version to 3.10
Drop support of EoL python versions for running system tests. The
maintenance cost of supporting end of life ecosystem, especially Python
3.6 on EL8 and the related outdated packages (pytest, dnspython, ...),
has become unreasonable.

(cherry picked from commit ac8e2905b8)
2026-01-21 16:28:52 +01:00
Nicki Křížek
1830df3fc5 Remove pytest<7 compatibility hacks
Minimum pytest version has been bumped to 7.0.0, thus these are no
longer needed.

(cherry picked from commit e276c3d5bd)
2026-01-21 16:28:43 +01:00
Nicki Křížek
7c2a8e63f6 Add support for pytest>=9.0.0
Use collection_path rather than the deprecated path argument for
pytest_ignore_collect() hook.

The collection_path argument was added in pytest 7.0.0, which is the
minimum supported pytest version from now on.

(cherry picked from commit 093bef9211)
2026-01-21 16:28:33 +01:00
Nicki Křížek
6e98ed3b2b Add requirements.txt for system tests
This file lists the required Python packages and versions for running
system tests. The easiest way to obtain them is:

    pip install -r requirements.txt

The minimum dnspython version is 2.7.0 because it supports TSIG parsing
without validation (for tsig/tests_tsig_hypothesis.py) and wire() (for
names/tests_names.py).

The minimum pytest version was bumped to 7.0.0 because it supports the
collection hook API required by pytest 9.

The minimum hypothesis version was set to 4.41.2 as prior versions might
have issues on FIPS systems.

(cherry picked from commit 628e16d057)
2026-01-21 16:26:25 +01:00
Nicki Křížek
324d726377 Merge tag 'v9.20.18' into bind-9.20 2026-01-21 14:37:29 +00:00
Mark Andrews
090f33849b [9.20] fix: test: Fix timing issues in nsec3/tests_nsec3_reconfig.py
`ns3/nsec3-ent.kasp.db` is regenerated too fast resulting in
the subsequent `rndc reload` call failing.  This has been
fixed.

Closes #5707

Backport of MR !11467

Merge branch 'backport-5707-timing-issues-in-nsec3-tests_nsec3_reconfig-py-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11468
2026-01-21 22:02:36 +11:00
Mark Andrews
8dc183f598 Fix timing issues in nsec3/tests_nsec3_reconfig.py
ns3/nsec3-ent.kasp.db is regenerated too fast resulting in
the subsequent 'rndc reload' call failing.  This has been
fixed.

(cherry picked from commit f01497e05b)
2026-01-21 10:26:46 +00:00
Mark Andrews
736b84ad46 [9.20] fix: dev: Use const pointer with strchr of const pointer
Closes #5694

Backport of MR !11394

Merge branch 'backport-5694-fedora-builds-with-werror-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11463
2026-01-20 17:40:55 +11:00
Mark Andrews
31bdd01227 Use const pointer with strchr of const pointer
C23 now has qualifier preserving standard functions for strchr,
bsearch, strpbrk, strrchr, strstr, memchr.  There where a few places
where the return value was not assigned to a const qualified pointer.
These have been fixed.

(cherry picked from commit af379e10cc)
2026-01-20 06:00:50 +00:00
Michal Nowak
8af17ab933 [9.20] fix: test: Portions of two dnssec-malformed-dnskey tests need querytrace
Without querytrace set, test_malformed_ecdsa and test_multiple_rrsigs
fail on the log_validation_failed string.

Backport of MR !11454

Merge branch 'backport-mnowak/dnssec-malformed-dnskey-needs-querytrace-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11456
2026-01-15 14:48:17 +01:00
Michal Nowak
2cd2f82c15 Portions of two dnssec-malformed-dnskey tests need querytrace
Without querytrace set, test_malformed_ecdsa and test_multiple_rrsigs
fail on the log_validation_failed string.

(cherry picked from commit d03b3f5a1d)
2026-01-15 13:08:03 +00:00
Štěpán Balážik
d790527bd0 [9.20] chg: test: Use isctest.asyncserver in the "ixfr" test
Backport of MR !11403

Merge branch 'backport-stepan/ixfr-asyncserver-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11453
2026-01-14 12:58:47 +00:00
Štěpán Balážik
ecbce10790 Use isctest.asyncserver in the "ixfr" system test
Replace the usage of the `bin/tests/system/ans.pl` server with an
instance of ControllableAsyncServer.

(cherry picked from commit 46ecbbed0a)
2026-01-14 12:22:06 +00:00
Štěpán Balážik
8a088183e6 Add SwitchControlCommand for ControllableAsyncServer
To provide feature parity with `bin/tests/system/ans.pl` add a control
command to allow easy switching between different sequences of
ResponseHandlers.

(cherry picked from commit 2302fe1235)
2026-01-14 12:22:06 +00:00
Štěpán Balážik
5284dfd4fe Use variadic positional parameters for plural install_* methods
It saves an indent and brackets on the call sites.

Also sort the handlers alphabetically where their order doesn't matter
and split the fallback handlers into a separate call to signify that
their position in the end matters.

(cherry picked from commit 7e587201a4)
2026-01-14 12:22:06 +00:00
Arаm Sаrgsyаn
cd23f0250a [9.20] fix: usr: Make catalog zone names and member zones' entry names case-insensitive
Previously, the catalog zone names and their member zones' entry
names were unintentionally case-sensitive. This has been fixed.

Closes #5693

Backport of MR !11410

Merge branch 'backport-5693-catz-case-sensitivity-fix-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11450
2026-01-12 16:33:55 +00:00
Aram Sargsyan
0004175c64 Ignore case for some messages in the catz system test
RBT and QP builds output some log messages in different cases. Ignore
the case of the affected log messages.
2026-01-12 15:52:35 +00:00
Aram Sargsyan
e2bfce435f Test that catalog zones' entry names are case-insensitive
(cherry picked from commit 4e9d97b4f7)
2026-01-12 13:01:53 +00:00
Aram Sargsyan
439e4ddf2f Make catalog zones' entry names case-insensitive
Previously, the isc_ht hash table module was case-sensitive, but now
it supports case-insensitive mode. Use the case-insensitive mode
for the catalog zones' entry names.

(cherry picked from commit 6f4b5d6958)
2026-01-12 13:01:53 +00:00
Aram Sargsyan
5a00d2ffe0 Test that catalog zone names are case-insensitive
Change one of the existing catalog zone names to test that
catalog zones are now case-insensitive.

(cherry picked from commit 6d0e6454ac)
2026-01-12 13:01:53 +00:00
Aram Sargsyan
5f30b6a9be Make catalog zone names case-insensitive
Previously, the isc_ht hash table module was case-sensitive, but now
it supports case-insensitive mode. Use the case-insensitive mode
for catalog zone names.

(cherry picked from commit 0e0ba06dbf)
2026-01-12 13:01:53 +00:00
Nicki Křížek
8b0d752db2 [9.20] chg: test: Replace digdelv ans.pl with AsyncDnsServer
Rewrite ans servers in digdelv test to use AsyncDnsServer.

Backport of MR !11308

Merge branch 'backport-nicki/asyncdnsserver-digdelv-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11448
2026-01-12 13:21:42 +01:00
Nicki Křížek
5e02d42a23 Renumber ans7->ans6 and ans8->ans7 in digdelv test
Since there was no 10.53.0.6 server in the test, renumber the remaining
ones so that there's no gap in the server names.

This commit simply moves the ans.py files without any changes and
renumbers the IP addresses in tests.

(cherry picked from commit 9b63187a99)
2026-01-12 10:53:23 +00:00
Nicki Křížek
25540fdead Add dnspython>=2.0.0 requirement for digdelv
Now that the test uses AsyncDnsServer, require the appropriate dnspython
version for the test.

(cherry picked from commit 6c69abf783)
2026-01-12 10:53:23 +00:00
Nicki Křížek
5c2dc5ad3b Replace digdelv/ans8 with AsyncDnsServer
Previously, the ans8 server had different response modes that applied to
all queries. Replace it with AsyncDnsServer that has serves the different
response modes under different domains without the need to change the
server behaviour at runtime.

Add the new queries that require an ns3 fallback to the ns3/example.db
zone.

(cherry picked from commit 0b7a089c7f)
2026-01-12 10:53:23 +00:00
Nicki Křížek
4a1f4d67a9 Replace digdelv/ans5 with ControllableAsyncDnsServer
The server has three modes of operation - either no response, a partial
AXFR or a complete AXFR. To test the fallback behaviour of dig, these
actions are be combined in a specific sequences. To set up the desired
server behaviour, use the _control queries for the server.

(cherry picked from commit 575f0e3916)
2026-01-12 10:53:23 +00:00
Nicki Křížek
9d8cd877a0 Rename ResponseDropAndCloseConnection action
The action can be used to close the connection even after some response
was sent, depending on the ordering of actions in the handler that uses
it. Rename it to CloseConnection to use a more fitting name.

(cherry picked from commit 20887ff80f)
2026-01-12 10:53:23 +00:00
Nicki Křížek
4fddae6100 Replace digdelv/ans7 with AsyncDnsServer
ans7 server always replies with an UPDATE opcode in the message.

(cherry picked from commit c50a7d2de1)
2026-01-12 10:53:23 +00:00
Nicki Křížek
0e6c9cae68 Replace digdelv/ans4 with AsyncDnsServer
Configure the AsyncDnsServer to ignore all queries to ensure the same
behaviour as with "//" command for ans.pl.

(cherry picked from commit 648f2534b1)
2026-01-12 10:53:23 +00:00
Nicki Křížek
808e84d1b9 Remove unused digdelv/ans6 server
This server receives no queries during the test and doesn't affect the
test outcome.

(cherry picked from commit 3a6b977a92)
2026-01-12 10:53:23 +00:00