2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-31 14:35:26 +00:00
Commit Graph

42790 Commits

Author SHA1 Message Date
Štěpán Balážik
02cf400dc9 Rename CI_ENABLE_ALL_TESTS to CI_ENABLE_LONG_TESTS
New name is more descriptive and allows us to created more optional
test sets.

(cherry picked from commit c7a8f61055)
2025-06-27 12:10:39 +00:00
Štěpán Balážik
abe7547799 [9.20] fix: ci: Ensure that junit.xml is present and non-empty after each system/unit test job
Previously, JUnit files were not generated or were generated empty for various reasons for some system/unit test runs.

Now, the number of tests collected for a MR is up from about 4k to 5.8k in the "Tests" tab of a pipeline.

Additionally, there is a check that ensures that [a somewhat sane](c5a271eb8b) `junit.xml` file is generated after every system/unit test job and fails the job otherwise.

Closes #5316

Backport of MR !10556

Merge branch 'backport-5316-ensure-junit-xml-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10649
2025-06-26 15:37:05 +00:00
Štěpán Balážik
d8e6609aaa Use :global-test-result: when converting trs file to JUnit XML
There might be more than one :test-result: and they are collated into
the :global-test-result: field.

This only happens when system tests are run with `make check`.
2025-06-26 17:05:20 +02:00
Štěpán Balážik
af4b445257 Clean up the definitions and usages of &unit_test_* anchors
Remove redundant indirections and overwrites.

(cherry picked from commit 4303e06919)
2025-06-26 17:05:20 +02:00
Štěpán Balážik
c052007d05 Hoist the junit and artifact handling to the &unit_test_common anchor
In some cases the report wasn't generated, sometimes it wasn't kept
properly. This unifies the way artifacts are generated and kept.

(cherry picked from commit 4ec1a37ca0)
2025-06-26 17:05:20 +02:00
Štěpán Balážik
aa10df5111 Clean up the definitions and usages of &system_test_* anchors
Remove redundant indirections and overwrites.

(cherry picked from commit cbe9972d3e)
2025-06-26 17:05:20 +02:00
Štěpán Balážik
85df35c6a3 Hoist the artifact handling to the &system_test_common anchor
In the past artifacts of different types of system test jobs were
treated differently but this is no longer the case.

(cherry picked from commit c61ff639b3)
2025-06-26 15:17:09 +02:00
Štěpán Balážik
57b343c624 Add a check for existence and sanity of the junit.xml file
And use if after system tests are run using pytest.

(cherry picked from commit dfd6097f7b)
2025-06-26 15:14:06 +02:00
Michal Nowak
bad04f74a5 [9.20] chg: ci: Disable Kerberos in tumbleweed
In the tumbleweed image, we utilize LibreSSL. Several BIND 9 libraries
are linked against LibreSSL's libcrypto.so.55, and when Kerberos is
enabled, we link against libk5crypto.so.3, which in turn links against
OpenSSL's libcrypto.so.3. This might theoretically lead to a symbol
conflict.

Closes #5394

Backport of MR !10643

Merge branch 'backport-5394-disable-kerberos-in-tumbleweed-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10651
2025-06-26 13:36:58 +02:00
Michal Nowak
511f609481 Disable Kerberos in tumbleweed
In the tumbleweed image, we utilize LibreSSL. Several BIND 9 libraries
are linked against LibreSSL's libcrypto.so.55, and when Kerberos is
enabled, we link against libk5crypto.so.3, which in turn links against
OpenSSL's libcrypto.so.3. This might theoretically lead to a symbol
conflict.

(cherry picked from commit 1b2c191bed)
2025-06-26 13:01:24 +02:00
Michal Nowak
b5a407b535 [9.20] chg: doc: Make empty changelog fatal error
The prep_doc_mr.py script of the bind9-qa repo needs a way to know that
gitchangelog.py did not produce entries. In the case of release notes,
it dies with "No commits matching given revlist". For changelog entries
it used to warn about "Empty changelog", but did not return non-zero
exit code.

Backport of MR !10591

Merge branch 'backport-mnowak/make-empty-changelog-fatal-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10641
2025-06-25 14:50:41 +02:00
Michal Nowak
5fa13bedf5 Make empty changelog fatal error
The prep_doc_mr.py script of the bind9-qa repo needs a way to know that
gitchangelog.py did not produce entries. In the case of release notes,
it dies with "No commits matching given revlist". For changelog entries
it used to warn about "Empty changelog", but did not return non-zero
exit code.

(cherry picked from commit 4d0ae4068f)
2025-06-25 12:08:14 +00:00
Michal Nowak
997b443d77 new: ci: Add GNU Make --shuffle option
GNU Make 4.4 introduced the --shuffle option to randomize the order of
goal targets and prerequisites. This helps detect hidden dependencies
and improve build robustness by exposing order-related issues during
parallel builds.

See:

    https://trofi.github.io/posts/238-new-make-shuffle-mode.html
    https://www.gnu.org/software/make/manual/html_node/Options-Summary.html#index-_002d_002dshuffle

Merge branch 'mnowak/add-gnu-make-shuffle-options' into 'bind-9.20'

See merge request isc-projects/bind9!10460
2025-06-25 13:58:11 +02:00
Michal Nowak
2fd72f10d2 Add GNU Make --shuffle option
GNU Make 4.4 introduced the --shuffle option to randomize the order of
goal targets and prerequisites. This helps detect hidden dependencies
and improve build robustness by exposing order-related issues during
parallel builds.

See:

    https://trofi.github.io/posts/238-new-make-shuffle-mode.html
    https://www.gnu.org/software/make/manual/html_node/Options-Summary.html#index-_002d_002dshuffle
2025-06-25 13:57:07 +02:00
Petr Špaček
7cc623ece1 [9.20] fix: test: Do not rely on failure in default configuration
Backport of MR !10631

Merge branch 'backport-main-systemtest-cpu-hang-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10638
2025-06-25 11:37:32 +00:00
Petr Menšík
a741244bc4 Do not expect fail in cpu test default configuration
Previous CPU test relied on either missing default named.conf or the
missing permissions to write into its default directory. In short that
default configuration would be unusable with current user. It would hang
indefinitely at cpu test if the named user could write into directory
specified in default configuration.

Change it instead to explicitly try non-existent configuration file.
It will still fail immediately, but will not rely on running user or
presence of file at default configuration file path.

(cherry picked from commit 8e789ea62f)
2025-06-25 11:36:35 +00:00
Mark Andrews
c360100ab5 [9.20] new: ci: Update Clang to version 20
Backport of MR !10565

Merge branch 'backport-mnowak/llvm-20-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10634
2025-06-25 15:02:19 +10:00
Mark Andrews
5f7ba5e1f9 Ignore reformat sources with up-to-date clang-format-20
(cherry picked from commit d36b0f2b43)
2025-06-25 13:33:14 +10:00
Mark Andrews
53738b0e5e Use clang-format-20 to update formatting
(cherry picked from commit 422b9118e8)
2025-06-25 13:32:08 +10:00
Mark Andrews
072f5d0009 Preserve brackets around string concatenation
We need disable clang-format here to preserve the brackets around
the string concatenation to prevent -Wstring-concatenation -Werror
breaking the build.

(cherry picked from commit eeafcee7ad)
2025-06-25 13:26:13 +10:00
Mark Andrews
e70a976958 Preserve brackets in DNS_SLABHEADER_GETATTR macro
We need to turn off clang-format to preserve the brackets as
'attribute' can be an expression and we need it to be evaluated
first.

Similarly we need the entire result to be evaluated independent of
the adjoining code.

(cherry picked from commit 3620db5ea6)
2025-06-25 13:26:13 +10:00
Michal Nowak
a3c10ad7d1 Update Clang to version 20
(cherry picked from commit 31922536c0)
2025-06-25 13:26:11 +10:00
Nicki Křížek
ec4ae08e4c [9.20] chg: ci: Add newline for changelog CI job
In case the changelog file doesn't have an empty line at the end of the
file, the job may fail with the following error:

WARNING: Bullet list ends without a blank line; unexpected unindent.

This typically happens in MRs targeting the -S edition, as those
changelogs usually don't have an empty newline. This change ensures the
changelog job can pass and verify the title/desc contents even in those
cases.

Backport of MR !10628

Merge branch 'backport-nicki/ci-changelog-add-missing-newline-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10632
2025-06-24 17:41:55 +02:00
Nicki Křížek
01f20420b2 Add newline for changelog CI job
In case the changelog file doesn't have an empty line at the end of the
file, the job may fail with the following error:

WARNING: Bullet list ends without a blank line; unexpected unindent.

This typically happens in MRs targeting the -S edition, as those
changelogs usually don't have an empty newline. This change ensures the
changelog job can pass and verify the title/desc contents even in those
cases.

(cherry picked from commit ebf155ecc8)
2025-06-24 15:31:56 +00:00
Nicki Křížek
a40e1f0e65 [9.20] chg: test: Make extra_artifacts check optional
There is an ongoing debate about the usefulness of the extra artifacts
check. While it might be useful to detect unexpected behaviour in some
tests, it feels extraneous in many cases. This change provides a middle
ground by making the artifact checking optional. This might be
especially useful for writing new tests, since the author gets to decide
whether the check is useful -- and can utilize it, or can skip it for
sake of brevity.

Backport of MR !10622

Merge branch 'backport-nicki/make-extra-artifacts-check-optional-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10629
2025-06-24 17:12:59 +02:00
Nicki Křížek
da7cab2243 Make extra_artifacts check optional
There is an ongoing debate about the usefulness of the extra artifacts
check. While it might be useful to detect unexpected behaviour in some
tests, it feels extraneous in many cases. This change provides a middle
ground by making the artifact checking optional. This might be
especially useful for writing new tests, since the author gets to decide
whether the check is useful -- and can utilize it, or can skip it for
sake of brevity.

(cherry picked from commit c06dc71cd5)
2025-06-24 14:57:59 +00:00
Michal Nowak
d8936471a4 [9.20] new: ci: Add Alpine Linux 3.22
Backport of MR !10539

Merge branch 'backport-mnowak/alpine-3.22-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10623
2025-06-24 15:52:25 +02:00
Michal Nowak
cfb36234ec Add Alpine Linux 3.22
(cherry picked from commit b20c71c2dc)
2025-06-24 15:12:16 +02:00
Michał Kępień
fc3282f866 [9.20] chg: ci: move "stress" test generation script to QA repo
Move the util/generate-stress-test-configs.py script from the BIND 9
source repository to the BIND 9 QA repository.  This simplifies the
maintenance of that script by eliminating the need to backport every
change applied to it to multiple branches.

Backport of MR !10585

Merge branch 'backport-michal/move-stress-test-generation-script-to-qa-repo-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10612
2025-06-21 04:58:59 +00:00
Michał Kępień
1a7931cf20 Move "stress" test generation script to QA repo
Move the util/generate-stress-test-configs.py script from the BIND 9
source repository to the BIND 9 QA repository.  This simplifies the
maintenance of that script by eliminating the need to backport every
change applied to it to multiple branches.

(cherry picked from commit 4f7f420534)
2025-06-21 06:53:12 +02:00
Mark Andrews
2c11ebdd0e [9.20] fix: test: verify-axfr.db gets updated too fast in mirror test
Add a 1 second wait before updating verify-axfr.db so that the
modification time of the file changes.

Closes #5376

Backport of MR !10586

Merge branch 'backport-5376-verify-axfr-db-gets-updated-too-fast-in-mirror-test-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10609
2025-06-19 20:19:17 +00:00
Mark Andrews
9bc7a73e50 verify-axfr.db gets updated too fast in mirror test
Add a 1 second wait before updating verify-axfr.db so that the
modification time of the file changes.

(cherry picked from commit c19956b3cb)
2025-06-19 16:27:45 +00:00
Nicki Křížek
ea48c1e322 [9.20] fix: test: Ignore softhsm2 errors when deleting token in keyfromlabel test
In some rare cases, the softhsm2 utility reports failure to delete the
token directory, despite the token being found. Subsequent attempts to
delete the token again indicate that the token was deleted.

Ignore this cleanup error, as it doesn't prevent our tests from working
properly. There is also an attempt to delete the token before the test
starts which ensures a clean state before the test is executed, in case
there's actually a leftover token.

Closes #5244

Backport of MR !10607

Merge branch 'backport-5244-ignore-softhsm2util-delete-token-error-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10608
2025-06-19 14:25:07 +00:00
Nicki Křížek
e19e108698 Ignore softhsm2 errors when deleting token in keyfromlabel test
In some rare cases, the softhsm2 utility reports failure to delete the
token directory, despite the token being found. Subsequent attempts to
delete the token again indicate that the token was deleted.

Ignore this cleanup error, as it doesn't prevent our tests from working
properly. There is also an attempt to delete the token before the test
starts which ensures a clean state before the test is executed, in case
there's actually a leftover token.

(cherry picked from commit e786a2e950)
2025-06-19 13:52:16 +00:00
Nicki Křížek
270970a461 [9.20] chg: test: Improve logging from isctest.run.retry_with_timeout
Allow use of exception (and by extension, assert statements) in the
called function in order to extract essential debug information about
the type of failure that was encountered.

In case the called function fails to succeed on the last retry and
raised an exception, log it as error and set it as the assert message to
propagate it through the pytest framework.

Closes #5324

Backport of MR !10580

Merge branch 'backport-5324-pytest-isctest-run-logging-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10605
2025-06-19 13:41:17 +00:00
Nicki Křížek
455766e643 Use time.monotonic() for time measumeremts in pytest
For duration measurements, i.e. deadlines and timeouts, it's more
suitable to use monotonic time as it's guaranteed to only go forward,
unlike time.time() which can be affected by local clock settings.

(cherry picked from commit 069e4ef0f7)
2025-06-19 13:06:39 +00:00
Nicki Křížek
3e927e43d7 Move param to isctest.util
(cherry picked from commit 481b46ffcc)
2025-06-19 13:06:39 +00:00
Nicki Křížek
ab9b2c947f Improve logging from isctest.run.retry_with_timeout
Allow use of exception (and by extension, assert statements) in the
called function in order to extract essential debug information about
the type of failure that was encountered.

In case the called function fails to succeed on the last retry and
raised an exception, log it as error and set it as the assert message to
propagate it through the pytest framework.

(cherry picked from commit 620c884133)
2025-06-19 13:06:39 +00:00
Matthijs Mekking
35efa742b0 [9.20] fix: usr: Fix purge-keys bug when using views
Previously, when a DNSSEC key was purged by one zone view, other zone views would return an error about missing key files. This has been fixed.

Closes #5315

Backport of MR !10550

Merge branch 'backport-5315-fix-spurious-some-key-files-are-missing-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10598
2025-06-19 10:17:03 +00:00
Matthijs Mekking
54a68a4a97 Fix spurious missing key files log messages
This happens because old key is purged by one zone view, then the other
is freaking out about it.

Keys that are unused or being purged should not be taken into account
when verifying key files are available.

The keyring is maintained per zone. So in one zone, a key in the
keyring is being purged. The corresponding key file is removed.

The key maintenance is done for the other zone view. The key in that
keyring is not yet set to purge, but its corresponding key file is
removed. This leads to "some keys are missing" log errors.

We should not check the purge variable at this point, but the
current time and purge-keys duration.

This commit fixes this erroneous logic.

(cherry picked from commit d494698852)
2025-06-19 11:42:04 +02:00
Matthijs Mekking
61b2b4074e Test purge-keys with views
Create a test scenario where a signed zone is in multiple views and
then a key may be purged. This is a bug case where the key files are
removed by one view and then the other view starts complaining.

(cherry picked from commit 752d8617f5)
2025-06-19 11:42:03 +02:00
Michal Nowak
bf2ffe7aba Merge tag 'v9.20.10' into bind-9.20 2025-06-19 11:27:36 +02:00
Matthijs Mekking
950314df06 [9.20] chg: test: Rewrite kasp system test to pytest (6)
These test cases involve a reconfig, dnssec policy changes.

Backport of MR !10295

Merge branch 'backport-matthijs-pytest-rewrite-kasp-system-test-6-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10594
2025-06-19 09:18:40 +00:00
Matthijs Mekking
546fdb9c20 Remove kasp shell script remainders
Now that all tests have been converted, we can remove 'kasp/tests.sh'
and 'kasp/tests_sh_kasp.py'.

(cherry picked from commit 6994a604a7)
2025-06-18 14:47:17 +02:00
Matthijs Mekking
383605c902 Convert algorithm rollover tests to pytest
Roll the algorithm rollover test cases over to the rollover directory
and rewrite using pytest.

(cherry picked from commit 80992c7b96)
2025-06-18 14:47:07 +02:00
Matthijs Mekking
ffccf1fe8b Convert going insecure kasp test to pytest
When going insecure, we publish CDS and CDNSKEY DELETE records. Update
the check_apex function to test this.

Also, skip some tests in the 'check_rollover_step()' function. If
we change the DNSSEC Policy, keys that no longer match the policy will
be retired. When this exactly happens is hard to determine, as it
happens on the reconfigure. So for these tests, we skip the key timing
metadata checks.

Also, the zone becomes unsigned, so don't call 'check_zone_is_signed'
in those cases.

(cherry picked from commit b1d8217d1a)
2025-06-18 12:20:45 +00:00
Matthijs Mekking
62adf9957f Convert policy changes tests to pytest
These test cases involve a reconfiguration. The first one is a zone
that changes from dynamic to inline-signing. The others are tests that
key lifetimes are updated correctly after changing them.

(cherry picked from commit de3c0970eb)
2025-06-18 12:20:45 +00:00
Mark Andrews
7a0620bc54 [9.20] fix: test: unstable rollover/tests_rollover.py::test_rollover_manual
The state files need to be written before trying to identify zsk/ksk
keys.  Wait for "keymgr: manual-rollover.kasp done" to appear in
named.run first.

Closes #5371

Backport of MR !10587

Merge branch 'backport-5371-unstable-rollover-tests_rollover-py-test_rollover_manual-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10589
2025-06-17 08:30:17 +00:00
Mark Andrews
3bb5c3c52b unstable rollover/tests_rollover.py::test_rollover_manual
The state files need to be written before trying to identify zsk/ksk
keys.  Wait for "keymgr: manual-rollover.kasp done" to appear in
named.run first.

(cherry picked from commit 80fedf7fcf)
2025-06-17 07:56:12 +00:00
Mark Andrews
47108af9f2 [9.20] new: usr: Add support to set and display the CO flag
Add support to display the CO (Compact denial of existence Ok flag) when displaying messages.

Add support to set the CO flag when making queries in dig (+coflag).

Closes #5319

Backport of MR !10482

Merge branch 'backport-5319-add-support-to-set-and-display-the-co-flag-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10578
2025-06-13 11:52:39 +00:00