[libcxx-commits] [libcxx] 4f4d6c8 - [libcxx testing] Remove ALLOW_RETRIES from sleep_until.pass.cpp

David Zarzycki via libcxx-commits libcxx-commits at lists.llvm.org
Sun May 10 03:02:10 PDT 2020


Author: David Zarzycki
Date: 2020-05-10T05:59:09-04:00
New Revision: 4f4d6c81f8b7505a1f0dcd887f75a7a8225ba52b

URL: https://github.com/llvm/llvm-project/commit/4f4d6c81f8b7505a1f0dcd887f75a7a8225ba52b
DIFF: https://github.com/llvm/llvm-project/commit/4f4d6c81f8b7505a1f0dcd887f75a7a8225ba52b.diff

LOG: [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.

Added: 
    

Modified: 
    libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp

Removed: 
    


################################################################################
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 8777e4aac133..908635f30b76 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
 
 // <thread>
 
@@ -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;
 }


        


More information about the libcxx-commits mailing list