aboutsummaryrefslogtreecommitdiff
path: root/src/test/util/setup_common.h
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2019-11-07 10:18:29 -0500
committerMarcoFalke <falke.marco@gmail.com>2019-11-07 10:18:40 -0500
commit772673dfbe703a383ea05a3960a98a702288d2c6 (patch)
tree63a544542fc35dd4a3c99a05b1ddf4834f299d2c /src/test/util/setup_common.h
parent7d14e35f3fb7a1a651ff51e71c58cdea84643a82 (diff)
parentfae43a97ca947cd0802392e9bb86d9d0572c0fba (diff)
downloadbitcoin-772673dfbe703a383ea05a3960a98a702288d2c6.tar.xz
Merge #16978: test: Seed test RNG context for each test case, print seed
fae43a97ca947cd0802392e9bb86d9d0572c0fba test: Seed test RNG context for each test case, print seed (MarcoFalke) Pull request description: Debugging failing unit tests is hard if the failure is non-deterministic and the seed is not known. Fix that by printing the seed and making it possible to set the seed from outside. ACKs for top commit: davereikher: Tested ACK fae43a97ca947cd0802392e9bb86d9d0572c0fba Tree-SHA512: 33d848dd1f4180d3664ecf60e9810c2a93590c05276b2c46b1e4fe6e376b45916a46b90c803bb602750ab666da3a05ce499e550024685a90b8cc38fab6667cb8
Diffstat (limited to 'src/test/util/setup_common.h')
-rw-r--r--src/test/util/setup_common.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/test/util/setup_common.h b/src/test/util/setup_common.h
index 5467cd6cce..1e2e059a56 100644
--- a/src/test/util/setup_common.h
+++ b/src/test/util/setup_common.h
@@ -39,9 +39,21 @@ extern FastRandomContext g_insecure_rand_ctx;
*/
extern bool g_mock_deterministic_tests;
-static inline void SeedInsecureRand(bool deterministic = false)
+enum class SeedRand {
+ ZEROS, //!< Seed with a compile time constant of zeros
+ SEED, //!< Call the Seed() helper
+};
+
+/** Seed the given random ctx or use the seed passed in via an environment var */
+void Seed(FastRandomContext& ctx);
+
+static inline void SeedInsecureRand(SeedRand seed = SeedRand::SEED)
{
- g_insecure_rand_ctx = FastRandomContext(deterministic);
+ if (seed == SeedRand::ZEROS) {
+ g_insecure_rand_ctx = FastRandomContext(/* deterministic */ true);
+ } else {
+ Seed(g_insecure_rand_ctx);
+ }
}
static inline uint32_t InsecureRand32() { return g_insecure_rand_ctx.rand32(); }