From: David Zarzycki Date: Sun, 10 May 2020 09:51:14 +0000 (-0400) Subject: [libcxx testing] Remove ALLOW_RETRIES from sleep_until.pass.cpp X-Git-Tag: llvmorg-12-init~6493 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4f4d6c81f8b7505a1f0dcd887f75a7a8225ba52b;p=platform%2Fupstream%2Fllvm.git [libcxx testing] Remove ALLOW_RETRIES from sleep_until.pass.cpp Operating systems are best effort by default, so we cannot assume that sleep-like APIs return as soon as we'd like. Even if a sleep-like API returns when we want it to, the potential for preemption means that attempts to measure time are subject to delays. --- diff --git a/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp b/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp index 8777e4a..908635f 100644 --- a/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp +++ b/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp @@ -7,7 +7,6 @@ //===----------------------------------------------------------------------===// // // UNSUPPORTED: libcpp-has-no-threads -// ALLOW_RETRIES: 2 // @@ -22,16 +21,15 @@ int main(int, char**) { - typedef std::chrono::system_clock Clock; - typedef Clock::time_point time_point; - std::chrono::milliseconds ms(500); - time_point t0 = Clock::now(); - std::this_thread::sleep_until(t0 + ms); - time_point t1 = Clock::now(); - std::chrono::nanoseconds ns = (t1 - t0) - ms; - std::chrono::nanoseconds err = 5 * ms / 100; - // The time slept is within 5% of 500ms - assert(std::abs(ns.count()) < err.count()); + typedef std::chrono::system_clock Clock; + typedef Clock::time_point time_point; + std::chrono::milliseconds ms(500); + time_point t0 = Clock::now(); + std::this_thread::sleep_until(t0 + ms); + time_point t1 = Clock::now(); + // NOTE: Operating systems are (by default) best effort and therefore we may + // have slept longer, perhaps much longer than we requested. + assert(t1 - t0 >= ms); return 0; }