diff --git a/src/test/finalization_tests.cpp b/src/test/finalization_tests.cpp --- a/src/test/finalization_tests.cpp +++ b/src/test/finalization_tests.cpp @@ -16,23 +16,27 @@ CScript() << ToByteVector(coinbaseKey.GetPubKey()) << OP_CHECKSIG; CBlock block; - LOCK(cs_main); - - // We should have no finalized block because the 100 blocks generated by the - // test setup are too close to "now"; - BOOST_CHECK_MESSAGE(GetFinalizedBlock() == nullptr, - "No block finalized (tip at height " - << chainActive.Tip()->nHeight << ")"); + { + LOCK(cs_main); + // We should have no finalized block because the 100 blocks generated by + // the test setup are too close to "now"; + BOOST_CHECK_MESSAGE(GetFinalizedBlock() == nullptr, + "No block finalized (tip at height " + << chainActive.Tip()->nHeight << ")"); + } // Create maxreorgdepth blocks. Auto-finalization will not occur because // the delay is not expired int64_t mockedTime = GetTime(); for (uint32_t i = 0; i < DEFAULT_MAX_REORG_DEPTH; i++) { block = CreateAndProcessBlock({}, p2pk_scriptPubKey); - // These blocks are too recent. - BOOST_CHECK_MESSAGE(GetFinalizedBlock() == nullptr, - "No block finalized (tip at height " - << chainActive.Tip()->nHeight << ")"); + { + LOCK(cs_main); + // These blocks are too recent. + BOOST_CHECK_MESSAGE(GetFinalizedBlock() == nullptr, + "No block finalized (tip at height " + << chainActive.Tip()->nHeight << ")"); + } } // Make the finalization time to expire @@ -46,23 +50,29 @@ for (uint32_t i = 0; i < DEFAULT_MAX_REORG_DEPTH; i++) { blockToFinalize = chainActive.Next(blockToFinalize); block = CreateAndProcessBlock({}, p2pk_scriptPubKey); - BOOST_CHECK_MESSAGE(GetFinalizedBlock() == blockToFinalize, - "Block finalized at height " - << blockToFinalize->nHeight - << " (tip at height " - << chainActive.Tip()->nHeight << ")"); + { + LOCK(cs_main); + BOOST_CHECK_MESSAGE(GetFinalizedBlock() == blockToFinalize, + "Block finalized at height " + << blockToFinalize->nHeight + << " (tip at height " + << chainActive.Tip()->nHeight << ")"); + } } // Next blocks won't cause auto-finalization because the delay is not // expired for (uint32_t i = 0; i < DEFAULT_MAX_REORG_DEPTH; i++) { block = CreateAndProcessBlock({}, p2pk_scriptPubKey); - // These blocks are finalized. - BOOST_CHECK_MESSAGE(GetFinalizedBlock() == blockToFinalize, - "Finalized block remains unchanged at height " - << blockToFinalize->nHeight - << " (tip at height " - << chainActive.Tip()->nHeight << ")"); + { + LOCK(cs_main); + // These blocks are finalized. + BOOST_CHECK_MESSAGE(GetFinalizedBlock() == blockToFinalize, + "Finalized block remains unchanged at height " + << blockToFinalize->nHeight + << " (tip at height " + << chainActive.Tip()->nHeight << ")"); + } } // Make the finalization time to expire @@ -77,11 +87,14 @@ for (uint32_t i = 0; i < DEFAULT_MAX_REORG_DEPTH; i++) { blockToFinalize = chainActive.Next(blockToFinalize); block = CreateAndProcessBlock({}, p2pk_scriptPubKey); - BOOST_CHECK_MESSAGE(GetFinalizedBlock() == blockToFinalize, - "Block finalized at height " - << blockToFinalize->nHeight - << " (tip at height " - << chainActive.Tip()->nHeight << ")"); + { + LOCK(cs_main); + BOOST_CHECK_MESSAGE(GetFinalizedBlock() == blockToFinalize, + "Block finalized at height " + << blockToFinalize->nHeight + << " (tip at height " + << chainActive.Tip()->nHeight << ")"); + } } } diff --git a/src/test/txvalidationcache_tests.cpp b/src/test/txvalidationcache_tests.cpp --- a/src/test/txvalidationcache_tests.cpp +++ b/src/test/txvalidationcache_tests.cpp @@ -198,7 +198,6 @@ const CTransaction funding_tx = CTransaction(mutableFunding_tx); // Spend the funding transaction by mining it into a block { - LOCK(cs_main); CBlock block = CreateAndProcessBlock({funding_tx}, p2pk_scriptPubKey); BOOST_CHECK(chainActive.Tip()->GetBlockHash() == block.GetHash()); BOOST_CHECK(pcoinsTip->GetBestBlock() == block.GetHash());