@@ -18,8 +18,34 @@ concurrency:
1818 cancel-in-progress : ${{ github.event_name == 'pull_request' }}
1919
2020jobs :
21+ generate-tests :
22+ name : Generate JSON of tests to run
23+ runs-on : ubuntu-latest
24+ outputs :
25+ matrix : ${{ steps.set-matrix.outputs.matrix }}
26+ steps :
27+ # # Setup test environment
28+ - name : Setup Test Environment
29+ id : setup_tests
30+ uses : stacks-network/actions/stacks-core/testenv@main
31+ with :
32+ btc-version : " 25.0"
33+ - name : Generate tests JSON
34+ id : generate_tests_json
35+ # List all of the tests using the nextest archive (so we don't need to do another build task)
36+ # Filter them such that we only select tests from `--bin stacks-node` which are marked `ignored`
37+ # Transform the output JSON into something that can be used as the matrix input
38+ run : |
39+ cargo nextest list --archive-file ~/test_archive.tar.zst -Tjson | \
40+ jq -c '.["rust-suites"]["stacks-node::bin/stacks-node"]["testcases"] | map_values(select(.["ignored"] == true)) | keys' > ./tests.json
41+ - id : set-matrix
42+ run : |
43+ json_obj=`cat ./tests.json`
44+ echo "matrix=$json_obj" >> $GITHUB_OUTPUT
45+
2146 # Bitcoin integration tests with code coverage
2247 integration-tests :
48+ needs : generate-tests
2349 name : Integration Tests
2450 runs-on : ubuntu-latest
2551 strategy :
@@ -28,155 +54,74 @@ jobs:
2854 # # Run a maximum of 32 concurrent tests from the test matrix
2955 max-parallel : 32
3056 matrix :
31- test-name :
32- - tests::bitcoin_regtest::bitcoind_integration_test
33- - tests::integrations::integration_test_get_info
34- - tests::neon_integrations::antientropy_integration_test
35- - tests::neon_integrations::bitcoind_forking_test
36- - tests::neon_integrations::bitcoind_integration_test
37- - tests::neon_integrations::block_large_tx_integration_test
38- - tests::neon_integrations::block_limit_hit_integration_test
39- - tests::neon_integrations::cost_voting_integration
40- - tests::neon_integrations::filter_long_runtime_tx_integration_test
41- - tests::neon_integrations::filter_low_fee_tx_integration_test
42- - tests::neon_integrations::fuzzed_median_fee_rate_estimation_test_window10
43- - tests::neon_integrations::fuzzed_median_fee_rate_estimation_test_window5
44- - tests::neon_integrations::liquid_ustx_integration
57+ test-name : ${{fromJson(needs.generate-tests.outputs.matrix)}}
58+ exclude :
59+ # The following tests are excluded from CI runs. Some of these may be
60+ # worth investigating adding back into the CI
61+ - test-name : tests::bitcoin_regtest::bitcoind_integration_test_segwit
62+ - test-name : tests::nakamoto_integrations::consensus_hash_event_dispatcher
63+ - test-name : tests::neon_integrations::atlas_integration_test
64+ - test-name : tests::neon_integrations::atlas_stress_integration_test
65+ - test-name : tests::neon_integrations::bitcoind_resubmission_test
66+ - test-name : tests::neon_integrations::block_replay_integration_test
67+ - test-name : tests::neon_integrations::deep_contract
68+ - test-name : tests::neon_integrations::filter_txs_by_origin
69+ - test-name : tests::neon_integrations::filter_txs_by_type
70+ - test-name : tests::neon_integrations::lockup_integration
71+ - test-name : tests::neon_integrations::most_recent_utxo_integration_test
72+ - test-name : tests::neon_integrations::run_with_custom_wallet
73+ - test-name : tests::neon_integrations::test_competing_miners_build_anchor_blocks_and_microblocks_on_same_chain
74+ - test-name : tests::neon_integrations::test_competing_miners_build_anchor_blocks_on_same_chain_without_rbf
75+ - test-name : tests::neon_integrations::test_one_miner_build_anchor_blocks_on_same_chain_without_rbf
76+ - test-name : tests::signer::v0::tenure_extend_after_2_bad_commits
77+ - test-name : tests::stackerdb::test_stackerdb_event_observer
78+ - test-name : tests::stackerdb::test_stackerdb_load_store
4579 # Microblock tests that are no longer needed on every CI run
4680 # (microblocks are unsupported starting in Epoch 2.5)
47- # - tests::neon_integrations::bad_microblock_pubkey
48- # - tests::neon_integrations::microblock_fork_poison_integration_test
49- # - tests::neon_integrations::microblock_integration_test
50- # - tests::neon_integrations::microblock_limit_hit_integration_test
51- # - tests::neon_integrations::test_problematic_microblocks_are_not_mined
52- # - tests::neon_integrations::test_problematic_microblocks_are_not_relayed_or_stored
53- # - tests::neon_integrations::size_overflow_unconfirmed_invalid_stream_microblocks_integration_test
54- # - tests::neon_integrations::size_overflow_unconfirmed_microblocks_integration_test
55- # - tests::neon_integrations::size_overflow_unconfirmed_stream_microblocks_integration_test
56- # - tests::neon_integrations::runtime_overflow_unconfirmed_microblocks_integration_test
57- # - tests::epoch_25::microblocks_disabled
58- # Disable this flaky test. Microblocks are no longer supported anyways.
59- # - tests::neon_integrations::microblock_large_tx_integration_test_FLAKY
60- - tests::neon_integrations::miner_submit_twice
61- - tests::neon_integrations::mining_events_integration_test
62- - tests::neon_integrations::pox_integration_test
63- - tests::neon_integrations::push_boot_receipts
64- - tests::neon_integrations::should_fix_2771
65- - tests::neon_integrations::size_check_integration_test
66- - tests::neon_integrations::stx_delegate_btc_integration_test
67- - tests::neon_integrations::stx_transfer_btc_integration_test
68- - tests::neon_integrations::stack_stx_burn_op_test
69- - tests::neon_integrations::test_chainwork_first_intervals
70- - tests::neon_integrations::test_chainwork_partial_interval
71- - tests::neon_integrations::test_flash_block_skip_tenure
72- - tests::neon_integrations::test_problematic_blocks_are_not_mined
73- - tests::neon_integrations::test_problematic_blocks_are_not_relayed_or_stored
74- - tests::neon_integrations::test_problematic_txs_are_not_stored
75- - tests::neon_integrations::use_latest_tip_integration_test
76- - tests::neon_integrations::confirm_unparsed_ongoing_ops
77- - tests::neon_integrations::min_txs
78- - tests::neon_integrations::vote_for_aggregate_key_burn_op_test
79- - tests::neon_integrations::mock_miner_replay
80- - tests::neon_integrations::listunspent_max_utxos
81- - tests::neon_integrations::bitcoin_reorg_flap
82- - tests::neon_integrations::bitcoin_reorg_flap_with_follower
83- - tests::neon_integrations::start_stop_bitcoind
84- - tests::should_succeed_handling_malformed_and_valid_txs
85- - tests::nakamoto_integrations::simple_neon_integration
86- - tests::nakamoto_integrations::flash_blocks_on_epoch_3
87- - tests::nakamoto_integrations::mine_multiple_per_tenure_integration
88- - tests::nakamoto_integrations::block_proposal_api_endpoint
89- - tests::nakamoto_integrations::miner_writes_proposed_block_to_stackerdb
90- - tests::nakamoto_integrations::correct_burn_outs
91- - tests::nakamoto_integrations::vote_for_aggregate_key_burn_op
92- - tests::nakamoto_integrations::follower_bootup_simple
93- - tests::nakamoto_integrations::follower_bootup_custom_chain_id
94- - tests::nakamoto_integrations::forked_tenure_is_ignored
95- - tests::nakamoto_integrations::nakamoto_attempt_time
96- - tests::nakamoto_integrations::skip_mining_long_tx
97- - tests::signer::v0::block_proposal_rejection
98- - tests::signer::v0::miner_gather_signatures
99- - tests::signer::v0::end_of_tenure
100- - tests::signer::v0::forked_tenure_okay
101- - tests::signer::v0::forked_tenure_invalid
102- - tests::signer::v0::empty_sortition
103- - tests::signer::v0::empty_sortition_before_approval
104- - tests::signer::v0::empty_sortition_before_proposal
105- - tests::signer::v0::bitcoind_forking_test
106- - tests::signer::v0::multiple_miners
107- - tests::signer::v0::mock_sign_epoch_25
108- - tests::signer::v0::multiple_miners_mock_sign_epoch_25
109- - tests::signer::v0::miner_forking
110- - tests::signer::v0::reloads_signer_set_in
111- - tests::signer::v0::signers_broadcast_signed_blocks
112- - tests::signer::v0::min_gap_between_blocks
113- - tests::signer::v0::duplicate_signers
114- - tests::signer::v0::retry_on_rejection
115- - tests::signer::v0::locally_accepted_blocks_overriden_by_global_rejection
116- - tests::signer::v0::locally_rejected_blocks_overriden_by_global_acceptance
117- - tests::signer::v0::reorg_locally_accepted_blocks_across_tenures_succeeds
118- - tests::signer::v0::reorg_locally_accepted_blocks_across_tenures_fails
119- - tests::signer::v0::miner_recovers_when_broadcast_block_delay_across_tenures_occurs
120- - tests::signer::v0::multiple_miners_with_nakamoto_blocks
121- - tests::signer::v0::partial_tenure_fork
122- - tests::signer::v0::mine_2_nakamoto_reward_cycles
123- - tests::signer::v0::signer_set_rollover
124- - tests::signer::v0::signing_in_0th_tenure_of_reward_cycle
125- - tests::signer::v0::continue_after_tenure_extend
126- - tests::signer::v0::tenure_extend_after_idle_signers
127- - tests::signer::v0::tenure_extend_after_idle_miner
128- - tests::signer::v0::tenure_extend_after_failed_miner
129- - tests::signer::v0::tenure_extend_succeeds_after_rejected_attempt
130- - tests::signer::v0::stx_transfers_dont_effect_idle_timeout
131- - tests::signer::v0::idle_tenure_extend_active_mining
132- - tests::signer::v0::multiple_miners_with_custom_chain_id
133- - tests::signer::v0::block_commit_delay
134- - tests::signer::v0::continue_after_fast_block_no_sortition
135- - tests::signer::v0::block_validation_response_timeout
136- - tests::signer::v0::block_validation_pending_table
137- - tests::signer::v0::new_tenure_while_validating_previous_scenario
138- - tests::signer::v0::tenure_extend_after_bad_commit
139- - tests::signer::v0::block_proposal_max_age_rejections
140- - tests::signer::v0::global_acceptance_depends_on_block_announcement
141- - tests::signer::v0::no_reorg_due_to_successive_block_validation_ok
142- - tests::signer::v0::incoming_signers_ignore_block_proposals
143- - tests::signer::v0::outgoing_signers_ignore_block_proposals
144- - tests::signer::v0::injected_signatures_are_ignored_across_boundaries
145- - tests::signer::v0::fast_sortition
146- - tests::signer::v0::single_miner_empty_sortition
147- - tests::signer::v0::multiple_miners_empty_sortition
148- - tests::signer::v0::block_proposal_timeout
149- - tests::signer::v0::rejected_blocks_count_towards_miner_validity
150- - tests::signer::v0::allow_reorg_within_first_proposal_burn_block_timing_secs
151- - tests::nakamoto_integrations::burn_ops_integration_test
152- - tests::nakamoto_integrations::check_block_heights
153- - tests::nakamoto_integrations::clarity_burn_state
154- - tests::nakamoto_integrations::check_block_times
155- - tests::nakamoto_integrations::check_block_info
156- - tests::nakamoto_integrations::check_block_info_rewards
157- - tests::nakamoto_integrations::continue_tenure_extend
158- - tests::nakamoto_integrations::mock_mining
159- - tests::nakamoto_integrations::multiple_miners
160- - tests::nakamoto_integrations::follower_bootup_across_multiple_cycles
161- - tests::nakamoto_integrations::nakamoto_lockup_events
162- - tests::nakamoto_integrations::utxo_check_on_startup_panic
163- - tests::nakamoto_integrations::utxo_check_on_startup_recover
164- - tests::nakamoto_integrations::v3_signer_api_endpoint
165- - tests::nakamoto_integrations::test_shadow_recovery
166- - tests::nakamoto_integrations::signer_chainstate
167- - tests::nakamoto_integrations::sip029_coinbase_change
168- - tests::nakamoto_integrations::clarity_cost_spend_down
169- - tests::nakamoto_integrations::v3_blockbyheight_api_endpoint
170- - tests::nakamoto_integrations::mine_invalid_principal_from_consensus_buff
171- - tests::nakamoto_integrations::test_tenure_extend_from_flashblocks
172- # TODO: enable these once v1 signer is supported by a new nakamoto epoch
173- # - tests::signer::v1::dkg
174- # - tests::signer::v1::sign_request_rejected
175- # - tests::signer::v1::filter_bad_transactions
176- # - tests::signer::v1::delayed_dkg
177- # - tests::signer::v1::mine_2_nakamoto_reward_cycles
178- # - tests::signer::v1::sign_after_signer_reboot
179- # - tests::signer::v1::block_proposal
81+ - test-name : tests::neon_integrations::bad_microblock_pubkey
82+ - test-name : tests::neon_integrations::microblock_fork_poison_integration_test
83+ - test-name : tests::neon_integrations::microblock_integration_test
84+ - test-name : tests::neon_integrations::microblock_large_tx_integration_test_FLAKY
85+ - test-name : tests::neon_integrations::microblock_limit_hit_integration_test
86+ - test-name : tests::neon_integrations::microblock_miner_multiple_attempts
87+ - test-name : tests::neon_integrations::test_problematic_microblocks_are_not_mined
88+ - test-name : tests::neon_integrations::test_problematic_microblocks_are_not_relayed_or_stored
89+ - test-name : tests::neon_integrations::runtime_overflow_unconfirmed_microblocks_integration_test
90+ - test-name : tests::neon_integrations::size_overflow_unconfirmed_invalid_stream_microblocks_integration_test
91+ - test-name : tests::neon_integrations::size_overflow_unconfirmed_microblocks_integration_test
92+ - test-name : tests::neon_integrations::size_overflow_unconfirmed_stream_microblocks_integration_test
93+ - test-name : tests::epoch_25::microblocks_disabled
94+ # Epoch tests are covered by the epoch-tests CI workflow, and don't need to run
95+ # on every PR (for older epochs)
96+ - test-name : tests::epoch_205::bigger_microblock_streams_in_2_05
97+ - test-name : tests::epoch_205::test_cost_limit_switch_version205
98+ - test-name : tests::epoch_205::test_dynamic_db_method_costs
99+ - test-name : tests::epoch_205::test_exact_block_costs
100+ - test-name : tests::epoch_205::transition_empty_blocks
101+ - test-name : tests::epoch_21::test_pox_missing_five_anchor_blocks
102+ - test-name : tests::epoch_21::test_pox_reorg_flap_duel
103+ - test-name : tests::epoch_21::test_pox_reorg_flap_reward_cycles
104+ - test-name : tests::epoch_21::test_pox_reorg_one_flap
105+ - test-name : tests::epoch_21::test_pox_reorgs_three_flaps
106+ - test-name : tests::epoch_21::test_sortition_divergence_pre_21
107+ - test-name : tests::epoch_21::test_v1_unlock_height_with_current_stackers
108+ - test-name : tests::epoch_21::test_v1_unlock_height_with_delay_and_current_stackers
109+ - test-name : tests::epoch_21::trait_invocation_cross_epoch
110+ - test-name : tests::epoch_21::transition_adds_burn_block_height
111+ - test-name : tests::epoch_21::transition_adds_get_pox_addr_recipients
112+ - test-name : tests::epoch_21::transition_adds_mining_from_segwit
113+ - test-name : tests::epoch_21::transition_adds_pay_to_alt_recipient_contract
114+ - test-name : tests::epoch_21::transition_adds_pay_to_alt_recipient_principal
115+ - test-name : tests::epoch_21::transition_empty_blocks
116+ - test-name : tests::epoch_21::transition_fixes_bitcoin_rigidity
117+ - test-name : tests::epoch_21::transition_removes_pox_sunset
118+ - test-name : tests::epoch_22::disable_pox
119+ - test-name : tests::epoch_22::pox_2_unlock_all
120+ - test-name : tests::epoch_22::test_pox_reorg_one_flap
121+ - test-name : tests::epoch_23::trait_invocation_behavior
122+ - test-name : tests::epoch_24::fix_to_pox_contract
123+ - test-name : tests::epoch_24::verify_auto_unlock_behavior
124+
180125 steps :
181126 # # Setup test environment
182127 - name : Setup Test Environment
0 commit comments