summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2024-01-05 10:35:34 +1100
committerDamien George <damien@micropython.org>2024-01-05 10:35:34 +1100
commita003ac2f73b8f54643e42138ad10249e2b861b63 (patch)
tree7312322c87bc12602d8aa26d65ecde07b2f3942c
parent2265d70add3ecfaf2ffbfb8393ab29a887d8d7fd (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.py31
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")