mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-09 15:18:03 +02:00
support multiple block status checks in CheckBlockDataAvailability
This commit is contained in:
@@ -126,6 +126,14 @@ BOOST_FIXTURE_TEST_CASE(blockmanager_block_data_availability, TestChain100Setup)
|
||||
CBlockIndex* lower_block = chainman->ActiveChain()[tip.nHeight / 2];
|
||||
BOOST_CHECK(blockman.CheckBlockDataAvailability(tip, *lower_block));
|
||||
|
||||
// Ensure we don't fail due to the expected absence of undo data in the genesis block
|
||||
CBlockIndex* upper_block = chainman->ActiveChain()[2];
|
||||
CBlockIndex* genesis = chainman->ActiveChain()[0];
|
||||
BOOST_CHECK(blockman.CheckBlockDataAvailability(*upper_block, *genesis, BlockStatus{BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO}));
|
||||
// Ensure we detect absence of undo data in the first block
|
||||
chainman->ActiveChain()[1]->nStatus &= ~BLOCK_HAVE_UNDO;
|
||||
BOOST_CHECK(!blockman.CheckBlockDataAvailability(tip, *genesis, BlockStatus{BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO}));
|
||||
|
||||
// Prune half of the blocks
|
||||
int height_to_prune = tip.nHeight / 2;
|
||||
CBlockIndex* first_available_block = chainman->ActiveChain()[height_to_prune + 1];
|
||||
@@ -136,6 +144,11 @@ BOOST_FIXTURE_TEST_CASE(blockmanager_block_data_availability, TestChain100Setup)
|
||||
BOOST_CHECK_EQUAL(&blockman.GetFirstBlock(tip, BLOCK_HAVE_DATA), first_available_block);
|
||||
BOOST_CHECK(blockman.CheckBlockDataAvailability(tip, *first_available_block));
|
||||
BOOST_CHECK(!blockman.CheckBlockDataAvailability(tip, *last_pruned_block));
|
||||
|
||||
// Simulate that the first available block is missing undo data and
|
||||
// detect this by using a status mask.
|
||||
first_available_block->nStatus &= ~BLOCK_HAVE_UNDO;
|
||||
BOOST_CHECK(!blockman.CheckBlockDataAvailability(tip, *first_available_block, BlockStatus{BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO}));
|
||||
}
|
||||
|
||||
BOOST_FIXTURE_TEST_CASE(blockmanager_block_data_part, TestChain100Setup)
|
||||
|
||||
Reference in New Issue
Block a user