diff options
| author | Damien George <damien@micropython.org> | 2024-01-05 10:35:34 +1100 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2024-01-05 10:35:34 +1100 |
| commit | a003ac2f73b8f54643e42138ad10249e2b861b63 (patch) | |
| tree | 7312322c87bc12602d8aa26d65ecde07b2f3942c | |
| parent | 2265d70add3ecfaf2ffbfb8393ab29a887d8d7fd (diff) | |
tests/thread: Add a test for accuracy of sleep within a thread.
The existing thread_sleep1.py test only tests execution, not accuracy, of
time.sleep. Also the existing test only tests sleep(0) on targets like rp2
that can only create a single thread.
The new test in this commit checks for timing accuracy on the main thread
and one other thread when they run at the same time.
Signed-off-by: Damien George <damien@micropython.org>
| -rw-r--r-- | tests/thread/thread_sleep2.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/thread/thread_sleep2.py b/tests/thread/thread_sleep2.py new file mode 100644 index 000000000..2dec24cab --- /dev/null +++ b/tests/thread/thread_sleep2.py @@ -0,0 +1,31 @@ +# Test accuracy of sleep within a thread. + +import time +import _thread + + +def sleep(t, valid_range): + t0 = time.time_ns() + time.sleep(t) + dt_ms = (time.time_ns() - t0) // 1_000_000 + if dt_ms in valid_range: + print("dt in range", t) + else: + print("dt not in range:", dt_ms) + + +def thread_entry(): + lock.acquire() + print("thread start") + sleep(0.2, range(180, 400)) + print("thread end") + + +lock = _thread.allocate_lock() +lock.acquire() +_thread.start_new_thread(thread_entry, ()) + +print("main start") +lock.release() +sleep(0.5, range(480, 800)) +print("main end") |
