mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-19 14:45:08 +01:00
Merge bitcoin/bitcoin#31317: test: Revert to random path element
faaaf59f71
test: Make g_rng_temp_path rand, not dependent on SeedRandomForTest (MarcoFalke)fa80b08fef
test: Revert to random path element (MarcoFalke) Pull request description: The randomness in the path element is required to allow a single fuzz test to run in parallel. Previous releases used a uint256 random value, but 10 random bytes should be sufficient as well, while avoiding a `MAX_PATH` violation on Windows. The issue was introduced by myself, by suggesting to use the current time in https://github.com/bitcoin/bitcoin/pull/31000#discussion_r1835351305. ACKs for top commit: kevkevinpal: reACKfaaaf59f71
hodlinator: ACKfaaaf59f71
tdb3: re ACKfaaaf59f71
dergoegge: ACKfaaaf59f71
Tree-SHA512: f12256c8b353618291030f71bf36eab97a25ffeaa28e36a5f2c6718dfc1fbbc8548c71475edec53d59026f2a779a05778db83f0530dd3e1d1faf6e4fc0ee7d70
This commit is contained in:
commit
e122309958
@ -75,6 +75,13 @@ using node::VerifyLoadedChainstate;
|
||||
const std::function<std::string(const char*)> G_TRANSLATION_FUN = nullptr;
|
||||
|
||||
constexpr inline auto TEST_DIR_PATH_ELEMENT{"test_common bitcoin"}; // Includes a space to catch possible path escape issues.
|
||||
/** Random context to get unique temp data dirs. Separate from m_rng, which can be seeded from a const env var */
|
||||
static FastRandomContext g_rng_temp_path;
|
||||
static const bool g_rng_temp_path_init{[] {
|
||||
// Must be initialized before any SeedRandomForTest
|
||||
(void)g_rng_temp_path.rand64();
|
||||
return true;
|
||||
}()};
|
||||
|
||||
struct NetworkSetup
|
||||
{
|
||||
@ -132,14 +139,16 @@ BasicTestingSetup::BasicTestingSetup(const ChainType chainType, TestOpts opts)
|
||||
}
|
||||
}
|
||||
|
||||
// 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::FIXED_SEED);
|
||||
|
||||
const std::string test_name{G_TEST_GET_FULL_NAME ? G_TEST_GET_FULL_NAME() : ""};
|
||||
if (!m_node.args->IsArgSet("-testdatadir")) {
|
||||
const auto now{TicksSinceEpoch<std::chrono::nanoseconds>(SystemClock::now())};
|
||||
m_path_root = fs::temp_directory_path() / TEST_DIR_PATH_ELEMENT / test_name / util::ToString(now);
|
||||
// To avoid colliding with a leftover prior datadir, and to allow
|
||||
// tests, such as the fuzz tests to run in several processes at the
|
||||
// same time, add a random element to the path. Keep it small enough to
|
||||
// avoid a MAX_PATH violation on Windows.
|
||||
const auto rand{HexStr(g_rng_temp_path.randbytes(10))};
|
||||
m_path_root = fs::temp_directory_path() / TEST_DIR_PATH_ELEMENT / test_name / rand;
|
||||
TryCreateDirectories(m_path_root);
|
||||
} else {
|
||||
// Custom data directory
|
||||
|
Loading…
Reference in New Issue
Block a user