split blockchain test group into two parallel CI jobs#20634
Draft
split blockchain test group into two parallel CI jobs#20634
Conversation
The blockchain test group takes ~60 min because test_blockchain.py contains 87% of all test instances (1362/1566). Split into two subdirectories so build-job-matrix.py creates separate CI jobs: - blockchain.validation (~422 tests): TestBlockHeaderValidation, TestGenesisBlock, TestPreValidation, TestReorgs, standalone tests, plus test_augmented_chain, test_get_block_generator, test_lookup_fork_chain - blockchain.transactions (~1144 tests): TestBodyValidation (extracted to new file), test_blockchain_transactions, test_build_chains Estimated critical path reduction: ~60 min -> ~40-45 min.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is kicking off a free cloud agent to fix this issue. This run is complimentary, but you can enable autofix for all future PRs in the Cursor dashboard.
Contributor
|
Contributor
|
moving these files seems a little bit risky. Any in-flight PRs could break. I would hope there's a way to make the workflow be split up instead. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
blockchaintest group (~60 min wall time) into two separate CI jobs (blockchain.validationandblockchain.transactions) by creating subdirectories underchia/_tests/blockchain/TestBodyValidation(941 parametrized test instances, 60% of total work) fromtest_blockchain.pyinto a newtest_blockchain_body_validation.pyfileDetails
The
blockchaintest group was the longest-running CI job. Analysis of job 65991611992 showed thattest_blockchain.pyalone contained 87% of all test instances (1362/1566), withTestBodyValidationbeing the dominant class (941 instances spanning the entire 58-min run).A simple file-level split would not help because
test_blockchain.pydwarfs all other files. Instead,TestBodyValidationwas extracted into its own file and placed in atransactions/subdirectory alongsidetest_blockchain_transactions.pyandtest_build_chains.py.New groups:
blockchain.validationblockchain.transactionsCI results
Before vs after (macOS Intel, slowest platform)
Baseline from 10 most recent merged PRs (single
blockchaingroup):This PR (critical path = max of the two groups):
blockchain.transactionsblockchain.validationmacOS Intel improvement: ~1h 4m -> ~50m (22% faster)
All platforms
transactionsvalidationTest plan
blockchain.validationandblockchain.transactionsboth complete successfullyblockchaingroup no longer appears