2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00
Commit Graph

42810 Commits

Author SHA1 Message Date
Štěpán Balážik
35cec00cae [9.20] fix: nil: Only run ci-orphaned-anchors on MR events
Now, it is also run in schedules and most annoyingly on push which means
that it is run twice on a push to a branch where a MR exists and `.gitlab-ci.yml` is changed.

This was an oversight in https://gitlab.isc.org/isc-projects/bind9/-/merge_requests/10654

Backport of MR !10668

Merge branch 'backport-stepan/remove-additional-pipeline-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10669
2025-06-28 12:25:45 +00:00
Štěpán Balážik
e4a45d5ebe Only run ci-orphaned-anchors on MR events
Now, it is also run in schedules and most annoyingly on push which means
that it is run twice on a push to a branch where a MR exists.

(cherry picked from commit 7ca18df58a)
2025-06-28 10:54:44 +00:00
Nicki Křížek
ab063cb4ec [9.20] chg: test: Improve pytest log output
- increase clarity of multiline messages
- support `isc.query.*()` query&response logging
- replace use of `print()` statement with proper logging
- omit empty lines from test result output

Backport of MR !10590

Merge branch 'backport-nicki/improve-pytest-logging-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10660
2025-06-27 20:30:30 +02:00
Nicki Křížek
c0ca8854c5 Log assertion failures right after test result
The extra messages are typically traceback from assertion failures.
Previously, they'd be printed only after all individual test case
results have been printed. That made it difficult to pair the traceback
to the failing test in some cases, as the node information (aka test
name) might not always be present.

Instead, log any extra messages related to a particular test failure
directly after reporting its result, making the failure details more
readily available and easy to connect with a particular test case.

(cherry picked from commit fcf31417dd)
2025-06-27 20:30:21 +02:00
Nicki Křížek
88549e8849 Log command stdout when using isctest.run.cmd()
The command's stdout may provide useful debug info, so make sure we log
it by default. It doesn't seem to have a significant impact on the log
size.

(cherry picked from commit 9f3f6ec38e)
2025-06-27 20:30:21 +02:00
Nicki Křížek
9549c8885a Log query and response when using isctest.query.*
Make sure the queries and responses are logged at the DEBUG level, which
may provide useful information in case of failing tests.

This doesn't seem to significantly increase the overall artifacts size.
Previously, pytest.log.txt files from all system tests would take around
3 MB, with this change, it's around 8 MB).

(cherry picked from commit 56fec9ba04)
2025-06-27 20:30:21 +02:00
Nicki Křížek
7aa00bcddc Use proper logging in SPNEGO tests
Avoid using print() and use proper logging facility instead.

(cherry picked from commit 51ac5bdd14)
2025-06-27 20:30:21 +02:00
Nicki Křížek
03af371948 Add options for query&response logging to pytest
In some cases, it's useful to log the sent and received DNS messages.
Add options to enable this on demand. Query is only logged the first
time it's sent, since it doesn't change. If response logging is turned
on, then each response is logged, since it might be different every
time.

(cherry picked from commit 1e87b5ffc6)
2025-06-27 20:30:21 +02:00
Nicki Křížek
a6599a0822 Indent multiline output in pytest logging
When multiline message is logged, indent all but the first line (which
will be preceeded by the LOG_FORMAT). This improves the clarity of logs,
as it's immediately clear which lines are regular log output, and which
ones are multiline debug output.

Adjust the isctest.run.cmd() stdout/stderr logging to this new format.

(cherry picked from commit 23e6b49cc5)
2025-06-27 20:30:21 +02:00
Nicki Křížek
129dd186fc Don't log empty test result messages
The messages obtained from test results may contain stuff like detailed
failure/error information, tracebacks etc. In many cases, the message
will be empty, in which case it doesn't need to be logged.

For an example, run test with many test cases, e.g.
verify/test_verify.py, and inspect the tail of the pytest.log.txt before
and after this commit.

(cherry picked from commit 0a6b0cf68c)
2025-06-27 20:30:21 +02:00
Nicki Křížek
2b77921470 Replace print statements in checkds test
Use isctest.log logging facility for consistent and predictable logging
output rather than using print(). Remove writes of stderr, as that
output will be logged in the debug log in case the commands called with
isctest.run.cmd() fails.

(cherry picked from commit 4b8998e4ad)
2025-06-27 20:30:21 +02:00
Štěpán Balážik
90175e49df [9.20] new: ci: Add a check for defined but never used anchors in .gitlab-ci.yaml
If an new orphan anchor is (`.anchor: &anchor` with no corresponding `*anchor` elsewhere in the file) is introduced the CI job will.

Depends on https://gitlab.isc.org/isc-projects/bind9-qa/-/merge_requests/101 (merge that first and then drop the `--branch` commit).

Backport of MR !10654

Merge branch 'backport-stepan/ci-orphaned-anchors-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10666
2025-06-27 17:18:17 +00:00
Štěpán Balážik
5602c2565f Remove orphaned anchors in .gitlab-ci.yml
These were left there after previous refactors.

(cherry picked from commit 919f5d6419)
2025-06-27 16:43:52 +00:00
Štěpán Balážik
cbc113ecb9 Add a check for defined but never used anchors in .gitlab-ci.yaml
If a anchor is ever orphaned, this will fail in CI.

(cherry picked from commit 5ed2b6c080)
2025-06-27 16:43:52 +00:00
Štěpán Balážik
91267eee58 Don't redifine stage:precheck in ci-variables job definition
The value is defined in the *precheck_job anchor.

(cherry picked from commit 9331451c5f)
2025-06-27 16:43:51 +00:00
Štěpán Balážik
709b8687b0 [9.20] fix: nil: Move root zone mirror system test to a separate directory
This test doesn't require artifact checking but when bundled in the same
directory with the shell based tests, the `system:clang:tsan` job was
failing non-deterministically.

An example of the job failing and succeeding on the same commit:
- https://gitlab.isc.org/isc-projects/bind9/-/jobs/5809299
- https://gitlab.isc.org/isc-projects/bind9/-/jobs/5809447

Backport of MR !10659

Merge branch 'backport-stepan/move-root-zone-mirror-test-to-a-separate-directory-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10662
2025-06-27 16:09:06 +00:00
Štěpán Balážik
96e8e72dbe Move root zone mirror system test to a separate directory
This test doesn't require artifact checking but when bundled in the same
directory with the shell based tests, the `system:clang:tsan` job was
failing non-deterministically.

(cherry picked from commit d5874d5df9)
2025-06-27 17:28:27 +02:00
Štěpán Balážik
d4341c6111 [9.20] new: test: Add a system test that ensures root zone mirroring works out of the box
This is a test for #5380.

Backport of MR !10596

Merge branch 'backport-stepan/mirror-root-zone-from-the-internet-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10657
2025-06-27 15:22:16 +00:00
Štěpán Balážik
97caa0addc Add a system test that ensures root zone mirroring works out of the box
This is a test for #5380.

(cherry picked from commit a69efc678c)
2025-06-27 12:10:40 +00:00
Štěpán Balážik
e2a91c06c8 Add a pytest mark for system tests that require Internet connection
We skip those by default as:

a) we don't want to stress the upstream servers in every CI pipeline
b) system tests need to be runnable in a isolated environment by default

(cherry picked from commit 3a8ffc74df)
2025-06-27 12:10:40 +00:00
Š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