From 3325383b74c55d0d36a3a2fa7e730fdde68d12cd Mon Sep 17 00:00:00 2001 From: Timothy Palpant Date: Wed, 7 Aug 2019 14:32:35 -0400 Subject: [PATCH] Fix real_time test by retrying interrupted sleep --- src/vmprof_unix.c | 4 ---- vmprof/test/test_run.py | 14 +++++++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/vmprof_unix.c b/src/vmprof_unix.c index 1a85a10c..595fff55 100644 --- a/src/vmprof_unix.c +++ b/src/vmprof_unix.c @@ -244,11 +244,7 @@ void sigprof_handler(int sig_nr, siginfo_t* info, void *ucontext) if (commit) { commit_buffer(fd, p); } else { -#ifndef RPYTHON_VMPROF - fprintf(stderr, "WARNING: canceled buffer, no stack trace was written\n"); -#else fprintf(stderr, "WARNING: canceled buffer, no stack trace was written\n"); -#endif cancel_buffer(p); } } diff --git a/vmprof/test/test_run.py b/vmprof/test/test_run.py index f1790cea..cc8029d4 100644 --- a/vmprof/test/test_run.py +++ b/vmprof/test/test_run.py @@ -81,13 +81,22 @@ def function_bar(): def functime_foo(t=0.05, insert=False): if (insert): vmprof.insert_real_time_thread() - return time.sleep(t) + sleep_retry_eintr(t) def functime_bar(t=0.05, remove=False): if (remove): vmprof.remove_real_time_thread() - return time.sleep(t) + sleep_retry_eintr(t) + + +def sleep_retry_eintr(t): + start = time.time() + remaining = t + while remaining > 0: + time.sleep(remaining) + elapsed = time.time() - start + remaining = t - elapsed foo_full_name = "py:function_foo:%d:%s" % (function_foo.__code__.co_firstlineno, @@ -255,7 +264,6 @@ def test_vmprof_real_time(): assert d[foo_time_name] > 0 -@py.test.mark.xfail() @py.test.mark.skipif("'__pypy__' in sys.builtin_module_names") @py.test.mark.skipif("sys.platform == 'win32'") @py.test.mark.parametrize("insert_foo,remove_bar", [