Skip to content

Commit

Permalink
better printing
Browse files Browse the repository at this point in the history
  • Loading branch information
stratospher committed Mar 4, 2025
1 parent f452ffa commit 1b03a62
Showing 1 changed file with 25 additions and 20 deletions.
45 changes: 25 additions & 20 deletions src/test/fuzz/block_index_tree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ void initialize_block_index_tree()

FUZZ_TARGET(block_index_tree, .init = initialize_block_index_tree)
{
SeedRandomStateForTest(SeedRand::ZEROS);
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
SetMockTime(ConsumeTime(fuzzed_data_provider));
ChainstateManager& chainman = *g_setup->m_node.chainman;
Expand Down Expand Up @@ -98,6 +99,7 @@ FUZZ_TARGET(block_index_tree, .init = initialize_block_index_tree)
printf("call ReceivedBlockTransactions, index is now BLOCK_VALID_TRANSACTIONS\n");
}
} else {
// todo: better print statements
printf("index->nTx == 0 = %d\n", index->nTx == 0);
printf("index->nStatus & BLOCK_FAILED_MASK = %d\n", index->nStatus & BLOCK_FAILED_MASK);
printf("Don't do anything since index->nTx == %d is not 0 && index->nStatus = %s is BLOCK_FAILED_MASK\n", index->nTx, BlockStatusToString(index->nStatus).c_str());
Expand Down Expand Up @@ -186,7 +188,7 @@ FUZZ_TARGET(block_index_tree, .init = initialize_block_index_tree)
printf("4. Prune chain\n");
auto& chain = chainman.ActiveChain();
int prune_height = fuzzed_data_provider.ConsumeIntegralInRange<int>(0, chain.Height());
printf("prune_height = %d\n", prune_height);
printf("chain.Height() = %d and prune_height = %d\n", chain.Height(), prune_height);
CBlockIndex* prune_block{chain[prune_height]};
if (prune_block != chain.Tip()) {
blockman.m_have_pruned = true;
Expand All @@ -206,27 +208,30 @@ FUZZ_TARGET(block_index_tree, .init = initialize_block_index_tree)
}
},
[&] {
// InvalidateBlock
printf("5. Invalidateblock\n");
CBlockIndex* prev_block = PickValue(fuzzed_data_provider, blocks);
printf("block to invalidate (height = %d, block hash = %s, nStatus = %s, chainwork = %s)\n", prev_block->nHeight, prev_block->GetBlockHash().ToString().c_str(), BlockStatusToString(prev_block->nStatus).c_str(), prev_block->nChainWork.ToString().c_str());
BlockValidationState state;
chainman.ActiveChainstate().InvalidateBlock(state, prev_block);
printf("block after invalidation (height = %d, block hash = %s, nStatus = %s, chainwork = %s)\n", prev_block->nHeight, prev_block->GetBlockHash().ToString().c_str(), BlockStatusToString(prev_block->nStatus).c_str(), prev_block->nChainWork.ToString().c_str());
},
[&] {
// ReconsiderBlock
LOCK(cs_main);
printf("6. Reconsiderblock\n");
CBlockIndex* prev_block = PickValue(fuzzed_data_provider, blocks);
printf("block to reconsider (height = %d, block hash = %s, nStatus = %s, chainwork = %s)\n", prev_block->nHeight, prev_block->GetBlockHash().ToString().c_str(), BlockStatusToString(prev_block->nStatus).c_str(), prev_block->nChainWork.ToString().c_str());
chainman.ActiveChainstate().ResetBlockFailureFlags(prev_block);
printf("block after reconsider (height = %d, block hash = %s, nStatus = %s, chainwork = %s)\n", prev_block->nHeight, prev_block->GetBlockHash().ToString().c_str(), BlockStatusToString(prev_block->nStatus).c_str(), prev_block->nChainWork.ToString().c_str());
});
printf("\n\n");
if (fuzzed_data_provider.ConsumeBool()) {
// InvalidateBlock
printf("5. Invalidateblock\n");
CBlockIndex* prev_block = PickValue(fuzzed_data_provider, blocks);
printf("block to invalidate (height = %d, block hash = %s, nStatus = %s, chainwork = %s)\n", prev_block->nHeight, prev_block->GetBlockHash().ToString().c_str(), BlockStatusToString(prev_block->nStatus).c_str(), prev_block->nChainWork.ToString().c_str());
BlockValidationState state;
chainman.ActiveChainstate().InvalidateBlock(state, prev_block);
printf("block after invalidation (height = %d, block hash = %s, nStatus = %s, chainwork = %s)\n", prev_block->nHeight, prev_block->GetBlockHash().ToString().c_str(), BlockStatusToString(prev_block->nStatus).c_str(), prev_block->nChainWork.ToString().c_str());
} else {
// ReconsiderBlock
LOCK(cs_main);
printf("6. Reconsiderblock\n");
CBlockIndex* prev_block = PickValue(fuzzed_data_provider, blocks);
printf("block to reconsider (height = %d, block hash = %s, nStatus = %s, chainwork = %s)\n", prev_block->nHeight, prev_block->GetBlockHash().ToString().c_str(), BlockStatusToString(prev_block->nStatus).c_str(), prev_block->nChainWork.ToString().c_str());
chainman.ActiveChainstate().ResetBlockFailureFlags(prev_block);
printf("block after reconsider (height = %d, block hash = %s, nStatus = %s, chainwork = %s)\n", prev_block->nHeight, prev_block->GetBlockHash().ToString().c_str(), BlockStatusToString(prev_block->nStatus).c_str(), prev_block->nChainWork.ToString().c_str());
chainman.RecalculateBestHeader();
// BlockValidationState state;
// chainman.ActiveChainstate().ActivateBestChain(state);
}
});
}
chainman.CheckBlockIndex();
printf("END\n");
printf("END\n\n");

// clean up global state changed by last iteration and prepare for next iteration
{
Expand Down

0 comments on commit 1b03a62

Please sign in to comment.