@@ -18,8 +18,34 @@ concurrency:
18
18
cancel-in-progress : ${{ github.event_name == 'pull_request' }}
19
19
20
20
jobs :
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
+
21
46
# Bitcoin integration tests with code coverage
22
47
integration-tests :
48
+ needs : generate-tests
23
49
name : Integration Tests
24
50
runs-on : ubuntu-latest
25
51
strategy :
@@ -28,157 +54,74 @@ jobs:
28
54
# # Run a maximum of 32 concurrent tests from the test matrix
29
55
max-parallel : 32
30
56
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
45
79
# Microblock tests that are no longer needed on every CI run
46
80
# (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_with_other_transactions
128
- - tests::signer::v0::tenure_extend_after_idle_miner
129
- - tests::signer::v0::tenure_extend_after_failed_miner
130
- - tests::signer::v0::tenure_extend_succeeds_after_rejected_attempt
131
- - tests::signer::v0::stx_transfers_dont_effect_idle_timeout
132
- - tests::signer::v0::idle_tenure_extend_active_mining
133
- - tests::signer::v0::multiple_miners_with_custom_chain_id
134
- - tests::signer::v0::block_commit_delay
135
- - tests::signer::v0::continue_after_fast_block_no_sortition
136
- - tests::signer::v0::block_validation_response_timeout
137
- - tests::signer::v0::block_validation_pending_table
138
- - tests::signer::v0::new_tenure_while_validating_previous_scenario
139
- - tests::signer::v0::tenure_extend_after_bad_commit
140
- - tests::signer::v0::block_proposal_max_age_rejections
141
- - tests::signer::v0::global_acceptance_depends_on_block_announcement
142
- - tests::signer::v0::no_reorg_due_to_successive_block_validation_ok
143
- - tests::signer::v0::incoming_signers_ignore_block_proposals
144
- - tests::signer::v0::outgoing_signers_ignore_block_proposals
145
- - tests::signer::v0::injected_signatures_are_ignored_across_boundaries
146
- - tests::signer::v0::fast_sortition
147
- - tests::signer::v0::single_miner_empty_sortition
148
- - tests::signer::v0::multiple_miners_empty_sortition
149
- - tests::signer::v0::block_proposal_timeout
150
- - tests::signer::v0::rejected_blocks_count_towards_miner_validity
151
- - tests::signer::v0::allow_reorg_within_first_proposal_burn_block_timing_secs
152
- - tests::nakamoto_integrations::burn_ops_integration_test
153
- - tests::nakamoto_integrations::check_block_heights
154
- - tests::nakamoto_integrations::clarity_burn_state
155
- - tests::nakamoto_integrations::check_block_times
156
- - tests::nakamoto_integrations::check_block_info
157
- - tests::nakamoto_integrations::check_block_info_rewards
158
- - tests::nakamoto_integrations::continue_tenure_extend
159
- - tests::nakamoto_integrations::mock_mining
160
- - tests::nakamoto_integrations::multiple_miners
161
- - tests::nakamoto_integrations::follower_bootup_across_multiple_cycles
162
- - tests::nakamoto_integrations::nakamoto_lockup_events
163
- - tests::nakamoto_integrations::utxo_check_on_startup_panic
164
- - tests::nakamoto_integrations::utxo_check_on_startup_recover
165
- - tests::nakamoto_integrations::v3_signer_api_endpoint
166
- - tests::nakamoto_integrations::test_shadow_recovery
167
- - tests::nakamoto_integrations::signer_chainstate
168
- - tests::nakamoto_integrations::sip029_coinbase_change
169
- - tests::nakamoto_integrations::clarity_cost_spend_down
170
- - tests::nakamoto_integrations::v3_blockbyheight_api_endpoint
171
- - tests::nakamoto_integrations::mine_invalid_principal_from_consensus_buff
172
- - tests::nakamoto_integrations::test_tenure_extend_from_flashblocks
173
- - tests::nakamoto_integrations::restarting_miner
174
- # TODO: enable these once v1 signer is supported by a new nakamoto epoch
175
- # - tests::signer::v1::dkg
176
- # - tests::signer::v1::sign_request_rejected
177
- # - tests::signer::v1::filter_bad_transactions
178
- # - tests::signer::v1::delayed_dkg
179
- # - tests::signer::v1::mine_2_nakamoto_reward_cycles
180
- # - tests::signer::v1::sign_after_signer_reboot
181
- # - 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
+
182
125
steps :
183
126
# # Setup test environment
184
127
- name : Setup Test Environment
0 commit comments