aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/test/fuzz/fuzz.cpp6
-rw-r--r--src/test/util/setup_common.cpp5
2 files changed, 10 insertions, 1 deletions
diff --git a/src/test/fuzz/fuzz.cpp b/src/test/fuzz/fuzz.cpp
index 115cf2fc99..80652d5dd1 100644
--- a/src/test/fuzz/fuzz.cpp
+++ b/src/test/fuzz/fuzz.cpp
@@ -102,6 +102,12 @@ void ResetCoverageCounters() {}
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.
// Individual tests can override this by pointing CreateSock to a mocked alternative.
CreateSock = [](int, int, int) -> std::unique_ptr<Sock> { std::terminate(); };
diff --git a/src/test/util/setup_common.cpp b/src/test/util/setup_common.cpp
index 283e19971c..52981bd2dc 100644
--- a/src/test/util/setup_common.cpp
+++ b/src/test/util/setup_common.cpp
@@ -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")) {
// By default, the data directory has a random name
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));
SelectParams(chainType);
- SeedRandomForTest();
if (G_TEST_LOG_FUN) LogInstance().PushBackCallback(G_TEST_LOG_FUN);
InitLogging(*m_node.args);
AppInitParameterInteraction(*m_node.args);