test: Undo thread_local g_insecure_rand_ctx

pull/14985/head
MarcoFalke 6 years ago
parent b545a6e689
commit fa0d3c4407
No known key found for this signature in database
GPG Key ID: CE2B75697E69A548

@ -22,6 +22,8 @@
const std::function<std::string(const char*)> G_TRANSLATION_FUN = nullptr; const std::function<std::string(const char*)> G_TRANSLATION_FUN = nullptr;
FastRandomContext g_insecure_rand_ctx;
void CConnmanTest::AddNode(CNode& node) void CConnmanTest::AddNode(CNode& node)
{ {
LOCK(g_connman->cs_vNodes); LOCK(g_connman->cs_vNodes);
@ -37,8 +39,6 @@ void CConnmanTest::ClearNodes()
g_connman->vNodes.clear(); g_connman->vNodes.clear();
} }
thread_local FastRandomContext g_insecure_rand_ctx;
std::ostream& operator<<(std::ostream& os, const uint256& num) std::ostream& operator<<(std::ostream& os, const uint256& num)
{ {
os << num.ToString(); os << num.ToString();

@ -26,7 +26,7 @@ std::ostream& operator<<(typename std::enable_if<std::is_enum<T>::value, std::os
return stream << static_cast<typename std::underlying_type<T>::type>(e); return stream << static_cast<typename std::underlying_type<T>::type>(e);
} }
thread_local extern FastRandomContext g_insecure_rand_ctx; extern FastRandomContext g_insecure_rand_ctx;
static inline void SeedInsecureRand(bool deterministic = false) static inline void SeedInsecureRand(bool deterministic = false)
{ {

@ -152,12 +152,13 @@ BOOST_AUTO_TEST_CASE(processnewblock_signals_ordering)
// create a bunch of threads that repeatedly process a block generated above at random // create a bunch of threads that repeatedly process a block generated above at random
// this will create parallelism and randomness inside validation - the ValidationInterface // this will create parallelism and randomness inside validation - the ValidationInterface
// will subscribe to events generated during block validation and assert on ordering invariance // will subscribe to events generated during block validation and assert on ordering invariance
boost::thread_group threads; std::vector<std::thread> threads;
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
threads.create_thread([&blocks]() { threads.emplace_back([&blocks]() {
bool ignored; bool ignored;
FastRandomContext insecure;
for (int i = 0; i < 1000; i++) { for (int i = 0; i < 1000; i++) {
auto block = blocks[InsecureRandRange(blocks.size() - 1)]; auto block = blocks[insecure.randrange(blocks.size() - 1)];
ProcessNewBlock(Params(), block, true, &ignored); ProcessNewBlock(Params(), block, true, &ignored);
} }
@ -171,7 +172,9 @@ BOOST_AUTO_TEST_CASE(processnewblock_signals_ordering)
}); });
} }
threads.join_all(); for (auto& t : threads) {
t.join();
}
while (GetMainSignals().CallbacksPending() > 0) { while (GetMainSignals().CallbacksPending() > 0) {
MilliSleep(100); MilliSleep(100);
} }

Loading…
Cancel
Save