0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-03 09:56:38 -05:00

test: Remove option to make TestChain100Setup non-deterministic

Seems odd to have an option for non-deterministic tests
when the goal should be for all tests to be deterministic.

Can be reviewed with `--ignore-all-space`.
This commit is contained in:
MarcoFalke 2021-04-04 10:50:12 +02:00
parent fa732bccb3
commit fa6183d776
No known key found for this signature in database
GPG key ID: CE2B75697E69A548
3 changed files with 11 additions and 31 deletions

View file

@ -202,26 +202,17 @@ TestingSetup::TestingSetup(const std::string& chainName, const std::vector<const
} }
} }
TestChain100Setup::TestChain100Setup(bool deterministic) TestChain100Setup::TestChain100Setup()
{ {
m_deterministic = deterministic; SetMockTime(1598887952);
constexpr std::array<unsigned char, 32> vchKey = {
if (m_deterministic) { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}};
SetMockTime(1598887952); coinbaseKey.Set(vchKey.begin(), vchKey.end(), true);
constexpr std::array<unsigned char, 32> vchKey = {
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
}
};
coinbaseKey.Set(vchKey.begin(), vchKey.end(), true);
} else {
coinbaseKey.MakeNewKey(true);
}
// Generate a 100-block chain: // Generate a 100-block chain:
this->mineBlocks(COINBASE_MATURITY); this->mineBlocks(COINBASE_MATURITY);
if (m_deterministic) { {
LOCK(::cs_main); LOCK(::cs_main);
assert( assert(
m_node.chainman->ActiveChain().Tip()->GetBlockHash().ToString() == m_node.chainman->ActiveChain().Tip()->GetBlockHash().ToString() ==
@ -232,13 +223,10 @@ TestChain100Setup::TestChain100Setup(bool deterministic)
void TestChain100Setup::mineBlocks(int num_blocks) void TestChain100Setup::mineBlocks(int num_blocks)
{ {
CScript scriptPubKey = CScript() << ToByteVector(coinbaseKey.GetPubKey()) << OP_CHECKSIG; CScript scriptPubKey = CScript() << ToByteVector(coinbaseKey.GetPubKey()) << OP_CHECKSIG;
for (int i = 0; i < num_blocks; i++) for (int i = 0; i < num_blocks; i++) {
{
std::vector<CMutableTransaction> noTxns; std::vector<CMutableTransaction> noTxns;
CBlock b = CreateAndProcessBlock(noTxns, scriptPubKey); CBlock b = CreateAndProcessBlock(noTxns, scriptPubKey);
if (m_deterministic) { SetMockTime(GetTime() + 1);
SetMockTime(GetTime() + 1);
}
m_coinbase_txns.push_back(b.vtx[0]); m_coinbase_txns.push_back(b.vtx[0]);
} }
} }
@ -315,9 +303,7 @@ CMutableTransaction TestChain100Setup::CreateValidMempoolTransaction(CTransactio
TestChain100Setup::~TestChain100Setup() TestChain100Setup::~TestChain100Setup()
{ {
gArgs.ForceSetArg("-segwitheight", "0"); gArgs.ForceSetArg("-segwitheight", "0");
if (m_deterministic) { SetMockTime(0);
SetMockTime(0);
}
} }
CTxMemPoolEntry TestMemPoolEntryHelper::FromTx(const CMutableTransaction& tx) const CTxMemPoolEntry TestMemPoolEntryHelper::FromTx(const CMutableTransaction& tx) const

View file

@ -112,7 +112,7 @@ class CScript;
* Testing fixture that pre-creates a 100-block REGTEST-mode block chain * Testing fixture that pre-creates a 100-block REGTEST-mode block chain
*/ */
struct TestChain100Setup : public RegTestingSetup { struct TestChain100Setup : public RegTestingSetup {
TestChain100Setup(bool deterministic = false); TestChain100Setup();
/** /**
* Create a new block with just given transactions, coinbase paying to * Create a new block with just given transactions, coinbase paying to
@ -143,16 +143,10 @@ struct TestChain100Setup : public RegTestingSetup {
~TestChain100Setup(); ~TestChain100Setup();
bool m_deterministic;
std::vector<CTransactionRef> m_coinbase_txns; // For convenience, coinbase transactions std::vector<CTransactionRef> m_coinbase_txns; // For convenience, coinbase transactions
CKey coinbaseKey; // private/public key needed to spend coinbase transactions CKey coinbaseKey; // private/public key needed to spend coinbase transactions
}; };
struct TestChain100DeterministicSetup : public TestChain100Setup {
TestChain100DeterministicSetup() : TestChain100Setup(true) { }
};
/** /**
* Make a test setup that has disk access to the debug.log file disabled. Can * Make a test setup that has disk access to the debug.log file disabled. Can
* be used in "hot loops", for example fuzzing or benchmarking. * be used in "hot loops", for example fuzzing or benchmarking.

View file

@ -200,7 +200,7 @@ CreateAndActivateUTXOSnapshot(NodeContext& node, const fs::path root, F malleati
} }
//! Test basic snapshot activation. //! Test basic snapshot activation.
BOOST_FIXTURE_TEST_CASE(chainstatemanager_activate_snapshot, TestChain100DeterministicSetup) BOOST_FIXTURE_TEST_CASE(chainstatemanager_activate_snapshot, TestChain100Setup)
{ {
ChainstateManager& chainman = *Assert(m_node.chainman); ChainstateManager& chainman = *Assert(m_node.chainman);