mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-09 21:47:34 +01:00
tests: make fuzz tests (mostly) deterministic with fixed seed
This commit is contained in:
@@ -102,6 +102,12 @@ void ResetCoverageCounters() {}
|
|||||||
|
|
||||||
void initialize()
|
void initialize()
|
||||||
{
|
{
|
||||||
|
// By default, make the RNG deterministic with a fixed seed. This will affect all
|
||||||
|
// randomness during the fuzz test, except:
|
||||||
|
// - GetStrongRandBytes(), which is used for the creation of private key material.
|
||||||
|
// - Creating a BasicTestingSetup or derived class will switch to a random seed.
|
||||||
|
SeedRandomForTest(SeedRand::ZEROS);
|
||||||
|
|
||||||
// Terminate immediately if a fuzzing harness ever tries to create a socket.
|
// Terminate immediately if a fuzzing harness ever tries to create a socket.
|
||||||
// Individual tests can override this by pointing CreateSock to a mocked alternative.
|
// Individual tests can override this by pointing CreateSock to a mocked alternative.
|
||||||
CreateSock = [](int, int, int) -> std::unique_ptr<Sock> { std::terminate(); };
|
CreateSock = [](int, int, int) -> std::unique_ptr<Sock> { std::terminate(); };
|
||||||
|
|||||||
@@ -145,6 +145,10 @@ BasicTestingSetup::BasicTestingSetup(const ChainType chainType, const std::vecto
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use randomly chosen seed for deterministic PRNG, so that (by default) test
|
||||||
|
// data directories use a random name that doesn't overlap with other tests.
|
||||||
|
SeedRandomForTest(SeedRand::SEED);
|
||||||
|
|
||||||
if (!m_node.args->IsArgSet("-testdatadir")) {
|
if (!m_node.args->IsArgSet("-testdatadir")) {
|
||||||
// By default, the data directory has a random name
|
// By default, the data directory has a random name
|
||||||
const auto rand_str{g_insecure_rand_ctx_temp_path.rand256().ToString()};
|
const auto rand_str{g_insecure_rand_ctx_temp_path.rand256().ToString()};
|
||||||
@@ -178,7 +182,6 @@ BasicTestingSetup::BasicTestingSetup(const ChainType chainType, const std::vecto
|
|||||||
gArgs.ForceSetArg("-datadir", fs::PathToString(m_path_root));
|
gArgs.ForceSetArg("-datadir", fs::PathToString(m_path_root));
|
||||||
|
|
||||||
SelectParams(chainType);
|
SelectParams(chainType);
|
||||||
SeedRandomForTest();
|
|
||||||
if (G_TEST_LOG_FUN) LogInstance().PushBackCallback(G_TEST_LOG_FUN);
|
if (G_TEST_LOG_FUN) LogInstance().PushBackCallback(G_TEST_LOG_FUN);
|
||||||
InitLogging(*m_node.args);
|
InitLogging(*m_node.args);
|
||||||
AppInitParameterInteraction(*m_node.args);
|
AppInitParameterInteraction(*m_node.args);
|
||||||
|
|||||||
Reference in New Issue
Block a user