mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-05 14:06:27 -05:00
test: Clear block index flags when testing snapshots
When simulating a snapshot, remove the HAVE_DATA status for blocks below the snapshot height, to simulate never having downloaded them at all. This makes tests more realistic (and more closely match what will happen when using assumeutxo).
This commit is contained in:
parent
272fbc370c
commit
3cfc75366e
1 changed files with 17 additions and 0 deletions
|
@ -71,6 +71,7 @@ CreateAndActivateUTXOSnapshot(
|
|||
// This is a stripped-down version of node::LoadChainstate which
|
||||
// preserves the block index.
|
||||
LOCK(::cs_main);
|
||||
CBlockIndex *orig_tip = node.chainman->ActiveChainstate().m_chain.Tip();
|
||||
uint256 gen_hash = node.chainman->ActiveChainstate().m_chain[0]->GetBlockHash();
|
||||
node.chainman->ResetChainstates();
|
||||
node.chainman->InitializeChainstate(node.mempool.get());
|
||||
|
@ -83,6 +84,22 @@ CreateAndActivateUTXOSnapshot(
|
|||
chain.setBlockIndexCandidates.insert(node.chainman->m_blockman.LookupBlockIndex(gen_hash));
|
||||
chain.LoadChainTip();
|
||||
node.chainman->MaybeRebalanceCaches();
|
||||
|
||||
// Reset the HAVE_DATA flags below the snapshot height, simulating
|
||||
// never-having-downloaded them in the first place.
|
||||
// TODO: perhaps we could improve this by using pruning to delete
|
||||
// these blocks instead
|
||||
CBlockIndex *pindex = orig_tip;
|
||||
while (pindex && pindex != chain.m_chain.Tip()) {
|
||||
pindex->nStatus &= ~BLOCK_HAVE_DATA;
|
||||
pindex->nStatus &= ~BLOCK_HAVE_UNDO;
|
||||
// We have to set the ASSUMED_VALID flag, because otherwise it
|
||||
// would not be possible to have a block index entry without HAVE_DATA
|
||||
// and with nTx > 0 (since we aren't setting the pruned flag);
|
||||
// see CheckBlockIndex().
|
||||
pindex->nStatus |= BLOCK_ASSUMED_VALID;
|
||||
pindex = pindex->pprev;
|
||||
}
|
||||
}
|
||||
BlockValidationState state;
|
||||
if (!node.chainman->ActiveChainstate().ActivateBestChain(state)) {
|
||||
|
|
Loading…
Add table
Reference in a new issue