-
Notifications
You must be signed in to change notification settings - Fork 37.7k
ci: Run unit tests parallel with functional tests #33000
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
a1c66c6
to
fa8aa95
Compare
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code Coverage & BenchmarksFor details see: https://corecheck.dev/bitcoin/bitcoin/pulls/33000. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
Looks like this gives a 20% faster Msan, Tsan, and previous releases task with N=1, comparing with the fastest master run in the last week: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know how much variance we typically see in CI run times, but light lgtm ACK fab25c6
$ /test_runner.py -h
--valgrind run nodes under the valgrind memory error detector: expect at least a ~10x slowdown. valgrind 3.14 or later required. Does not apply to previous release
binaries.
--bash-cmd-extra-tests BASH_CMD_EXTRA_TESTS
Run an arbitrary string as Bash command in parallel to the functional tests, for example to run unit tests. See tool_extra_cmd.py
--randomseed RANDOMSEED
set a random seed for deterministically reproducing a previous test run
$ ./build/test/functional/tool_extra_cmd.py
2025-07-25T17:15:46.612122Z TestFramework (INFO): PRNG seed is: 5551363100202563085
2025-07-25T17:15:46.612554Z TestFramework (INFO): Initializing test directory /var/folders/bz/mn3hr6td37bczwp7j89frs4w0000gn/T/bitcoin_func_test_c89awace
2025-07-25T17:15:46.612626Z TestFramework (INFO): No command to run.
2025-07-25T17:15:46.667850Z TestFramework (INFO): Stopping nodes
2025-07-25T17:15:46.667957Z TestFramework (INFO): Cleaning up /var/folders/bz/mn3hr6td37bczwp7j89frs4w0000gn/T/bitcoin_func_test_c89awace on exit
2025-07-25T17:15:46.667990Z TestFramework (INFO): Tests successful
Concept ACK |
Concept ACK. Not sure about the approach of more Bash, to call new Python, that wraps more Bash. |
The implementation can be adjusted, if needed. I guess the main questions are:
|
|
I'd say it should be done after the move. No need to delay the move or block it on this. |
Yeah, it is ugly. I think I'll drop some of the (actually redundant) Bash in #33136 first. Then, this can be done in pure Python, possibly. |
🐙 This pull request conflicts with the target branch and needs rebase. |
Fixes #32770