From 16bf30b690a5754baa1d60c583ea054c9635b2e6 Mon Sep 17 00:00:00 2001 From: gr0vity Date: Thu, 5 Dec 2024 21:23:27 +0100 Subject: [PATCH 1/2] Reduce default poll time from 50ms to 10ms Some testcases (e.g. node.fork_publish) are racy because too many things can happen between 2 polls. While this doesn't fix the racy testcase, it greatly reduces the likelyhood that testcases are failing due to timing issues --- nano/test_common/system.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nano/test_common/system.hpp b/nano/test_common/system.hpp index 5644f0c2ce..0ad6b8170b 100644 --- a/nano/test_common/system.hpp +++ b/nano/test_common/system.hpp @@ -49,10 +49,10 @@ namespace test /** Generate work with difficulty between \p min_difficulty_a (inclusive) and \p max_difficulty_a (exclusive) */ uint64_t work_generate_limited (nano::block_hash const & root_a, uint64_t min_difficulty_a, uint64_t max_difficulty_a); /** - * Polls, sleep if there's no work to be done (default 50ms), then check the deadline + * Polls, sleep if there's no work to be done (default 10ms), then check the deadline * @returns 0 or nano::deadline_expired */ - std::error_code poll (std::chrono::nanoseconds const & sleep_time = std::chrono::milliseconds (50)); + std::error_code poll (std::chrono::nanoseconds const & sleep_time = std::chrono::milliseconds (10)); std::error_code poll_until_true (std::chrono::nanoseconds deadline, std::function); void delay_ms (std::chrono::milliseconds const & delay); void deadline_set (std::chrono::duration const & delta); From 1e085920100dbdab563c0fdee04c6c2e2c451d7a Mon Sep 17 00:00:00 2001 From: gr0vity Date: Thu, 5 Dec 2024 21:45:16 +0100 Subject: [PATCH 2/2] process blocks in rapid succession to reduce likelyhood of confirmation before fork detection --- nano/core_test/node.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nano/core_test/node.cpp b/nano/core_test/node.cpp index e9d83750a0..2004a9c942 100644 --- a/nano/core_test/node.cpp +++ b/nano/core_test/node.cpp @@ -522,13 +522,13 @@ TEST (node, fork_publish) .build (); node1.work_generate_blocking (*send2); node1.process_active (send1); + node1.process_active (send2); ASSERT_TIMELY_EQ (5s, 1, node1.active.size ()); + ASSERT_TIMELY (5s, node1.active.active (*send2)); auto election (node1.active.election (send1->qualified_root ())); ASSERT_NE (nullptr, election); // Wait until the genesis rep activated & makes vote ASSERT_TIMELY_EQ (1s, election->votes ().size (), 2); - node1.process_active (send2); - ASSERT_TIMELY (5s, node1.active.active (*send2)); auto votes1 (election->votes ()); auto existing1 (votes1.find (nano::dev::genesis_key.pub)); ASSERT_NE (votes1.end (), existing1);