From 1083999d3e4447ac347b8bcbb04a0733ae8c3654 Mon Sep 17 00:00:00 2001 From: Jeroen Vermeulen Date: Wed, 22 Apr 2015 12:45:41 +0700 Subject: [PATCH] Adapt test to poor Windows timer resolution. TimerTest fails on Windows unless the sleep time is set to at least a millisecond (1,000 microseconds). Keep it nice and low for other platforms though, because the sleep time is wasted. --- mert/TimerTest.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mert/TimerTest.cpp b/mert/TimerTest.cpp index d72b1c312..532e44fc1 100644 --- a/mert/TimerTest.cpp +++ b/mert/TimerTest.cpp @@ -11,7 +11,20 @@ using namespace MosesTuning; BOOST_AUTO_TEST_CASE(timer_basic_test) { Timer timer; - const int sleep_time_microsec = 40; // ad-hoc microseconds to pass unit tests. + + // Sleep time. The test will sleep for this number of microseconds, and + // expect the elapsed time to be noticeable. + // Keep this number low to avoid wasting test time sleeping, but at least as + // high as the Boost timer's resolution. Tests must pass consistently, not + // just on lucky runs. +#if defined(WIN32) + // Timer resolution on Windows seems to be a millisecond. Anything less and + // the test fails consistently. + const int sleep_time_microsec = 1000; +#else + // Unix-like systems seem to have more fine-grained clocks. + const int sleep_time_microsec = 40; +#endif timer.start(); BOOST_REQUIRE(timer.is_running());