[Lldb-commits] [lldb] r219234 - This test case was incorrect, it was relying on the fact

Jim Ingham jingham at apple.com
Tue Oct 7 13:59:00 PDT 2014


Author: jingham
Date: Tue Oct  7 15:59:00 2014
New Revision: 219234

URL: http://llvm.org/viewvc/llvm-project?rev=219234&view=rev
Log:
This test case was incorrect, it was relying on the fact
that the function we were calling would continue to sleep
for the requested time even if it was interrupted.  That is
not true of std::this_thread::sleep_for, at least not on OS X.

Fix the test case so that if it wakes up early, it goes back
to sleep till the time is actually greater than the end point.

<rdar://problem/18523742>

Modified:
    lldb/trunk/test/expression_command/timeout/wait-a-while.cpp

Modified: lldb/trunk/test/expression_command/timeout/wait-a-while.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/expression_command/timeout/wait-a-while.cpp?rev=219234&r1=219233&r2=219234&view=diff
==============================================================================
--- lldb/trunk/test/expression_command/timeout/wait-a-while.cpp (original)
+++ lldb/trunk/test/expression_command/timeout/wait-a-while.cpp Tue Oct  7 15:59:00 2014
@@ -9,12 +9,16 @@ int
 wait_a_while (int microseconds)
 {
     int num_times = 0;
+    auto end_time = std::chrono::system_clock::now() + std::chrono::microseconds(microseconds);
 
     while (1)
     {
         num_times++;
-        std::this_thread::sleep_for(std::chrono::microseconds(microseconds));
-        break;
+        auto wait_time = end_time - std::chrono::system_clock::now();
+
+        std::this_thread::sleep_for(wait_time);
+        if (std::chrono::system_clock::now() > end_time)
+            break;
     }
     return num_times;
 }





More information about the lldb-commits mailing list