diff --git a/nano/test_common/system.cpp b/nano/test_common/system.cpp index d5bc43b1d0..912f5b058d 100644 --- a/nano/test_common/system.cpp +++ b/nano/test_common/system.cpp @@ -335,22 +335,24 @@ void nano::test::system::deadline_set (std::chrono::duration std::error_code nano::test::system::poll (std::chrono::nanoseconds const & wait_time) { -#if NANO_ASIO_HANDLER_TRACKING == 0 - io_ctx->run_one_for (wait_time); -#else - nano::timer<> timer; - timer.start (); - auto count = io_ctx.poll_one (); - if (count == 0) + if constexpr (asio_handler_tracking_threshold () == 0) { - std::this_thread::sleep_for (wait_time); + io_ctx->run_one_for (wait_time); } - else if (count == 1 && timer.since_start ().count () >= NANO_ASIO_HANDLER_TRACKING) + else { - auto timestamp = std::chrono::duration_cast (std::chrono::system_clock::now ().time_since_epoch ()).count (); - std::cout << (boost::format ("[%1%] io_thread held for %2%ms") % timestamp % timer.since_start ().count ()).str () << std::endl; + nano::timer<> timer; + timer.start (); + auto count = io_ctx->poll_one (); + if (count == 0) + { + std::this_thread::sleep_for (wait_time); + } + else if (count == 1 && timer.since_start ().count () >= asio_handler_tracking_threshold ()) + { + logger.warn (nano::log::type::system, "Async handler processing took too long: {}ms", timer.since_start ().count ()); + } } -#endif std::error_code ec; if (std::chrono::steady_clock::now () > deadline) diff --git a/nano/test_common/system.hpp b/nano/test_common/system.hpp index 971319818c..93265a782b 100644 --- a/nano/test_common/system.hpp +++ b/nano/test_common/system.hpp @@ -95,3 +95,15 @@ namespace test } } REGISTER_ERROR_CODES (nano, error_system); + +namespace nano::test +{ +constexpr unsigned asio_handler_tracking_threshold () +{ +#if NANO_ASIO_HANDLER_TRACKING == 0 + return 0; +#else + return NANO_ASIO_HANDLER_TRACKING; +#endif +} +} \ No newline at end of file