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.
This commit is contained in:
Jeroen Vermeulen 2015-04-22 12:45:41 +07:00
parent 02d1d9a4af
commit 1083999d3e

View File

@ -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());