summaryrefslogtreecommitdiffstats
path: root/lldb/test/expression_command/timeout
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2014-10-07 20:59:00 +0000
committerJim Ingham <jingham@apple.com>2014-10-07 20:59:00 +0000
commitb7bee500629c1af5aae75471e7e07a23f9d449d4 (patch)
tree4ccc4336665c0540ce28666ea4871094d7ccb1f9 /lldb/test/expression_command/timeout
parenta92608657f7568ace836877c7f07883f4d7f9167 (diff)
downloadbcm5719-llvm-b7bee500629c1af5aae75471e7e07a23f9d449d4.tar.gz
bcm5719-llvm-b7bee500629c1af5aae75471e7e07a23f9d449d4.zip
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> llvm-svn: 219234
Diffstat (limited to 'lldb/test/expression_command/timeout')
-rw-r--r--lldb/test/expression_command/timeout/wait-a-while.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lldb/test/expression_command/timeout/wait-a-while.cpp b/lldb/test/expression_command/timeout/wait-a-while.cpp
index 8403030e41c..ac37c5d243b 100644
--- a/lldb/test/expression_command/timeout/wait-a-while.cpp
+++ b/lldb/test/expression_command/timeout/wait-a-while.cpp
@@ -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;
}
OpenPOWER on IntegriCloud