diff options
| author | Damien George <damien@micropython.org> | 2021-05-10 12:44:47 +1000 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2021-05-10 13:07:16 +1000 |
| commit | 4cdcbdb7531b98b2dc9a85737b760f509957e31e (patch) | |
| tree | b30210b71391afc26935198b2f7561ac3e3139c3 | |
| parent | b6b39bff47b5ff1ffc322a6e795d57451d4215a8 (diff) | |
tests/thread: Make exc1,exit1,exit2,stacksize1,start1 tests run on rp2.
The RP2040 has 2 cores and supports running at most 2 Python threads (the
main one plus another), and will raise OSError if a thread cannot be
created because core1 is already in use. This commit adjusts some thread
tests to be robust against such OSError's. These tests now pass on rp2
boards.
Signed-off-by: Damien George <damien@micropython.org>
| -rw-r--r-- | tests/thread/thread_exc1.py | 7 | ||||
| -rw-r--r-- | tests/thread/thread_exit1.py | 9 | ||||
| -rw-r--r-- | tests/thread/thread_exit2.py | 9 | ||||
| -rw-r--r-- | tests/thread/thread_stacksize1.py | 7 | ||||
| -rw-r--r-- | tests/thread/thread_start1.py | 9 |
5 files changed, 33 insertions, 8 deletions
diff --git a/tests/thread/thread_exc1.py b/tests/thread/thread_exc1.py index 16483d777..cd8774092 100644 --- a/tests/thread/thread_exc1.py +++ b/tests/thread/thread_exc1.py @@ -25,7 +25,12 @@ n_finished = 0 # spawn threads for i in range(n_thread): - _thread.start_new_thread(thread_entry, ()) + while True: + try: + _thread.start_new_thread(thread_entry, ()) + break + except OSError: + pass # busy wait for threads to finish while n_finished < n_thread: diff --git a/tests/thread/thread_exit1.py b/tests/thread/thread_exit1.py index c4a93c45a..186a9be34 100644 --- a/tests/thread/thread_exit1.py +++ b/tests/thread/thread_exit1.py @@ -13,8 +13,13 @@ def thread_entry(): _thread.exit() -_thread.start_new_thread(thread_entry, ()) -_thread.start_new_thread(thread_entry, ()) +for i in range(2): + while True: + try: + _thread.start_new_thread(thread_entry, ()) + break + except OSError: + pass # wait for threads to finish time.sleep(1) diff --git a/tests/thread/thread_exit2.py b/tests/thread/thread_exit2.py index 0cd80e690..5be7945db 100644 --- a/tests/thread/thread_exit2.py +++ b/tests/thread/thread_exit2.py @@ -13,8 +13,13 @@ def thread_entry(): raise SystemExit -_thread.start_new_thread(thread_entry, ()) -_thread.start_new_thread(thread_entry, ()) +for i in range(2): + while True: + try: + _thread.start_new_thread(thread_entry, ()) + break + except OSError: + pass # wait for threads to finish time.sleep(1) diff --git a/tests/thread/thread_stacksize1.py b/tests/thread/thread_stacksize1.py index 5d25509b7..cf46b73b7 100644 --- a/tests/thread/thread_stacksize1.py +++ b/tests/thread/thread_stacksize1.py @@ -41,7 +41,12 @@ n_finished = 0 # set stack size and spawn a few threads _thread.stack_size(sz) for i in range(n_thread): - _thread.start_new_thread(thread_entry, ()) + while True: + try: + _thread.start_new_thread(thread_entry, ()) + break + except OSError: + pass # reset stack size to default (for subsequent scripts on baremetal) _thread.stack_size() diff --git a/tests/thread/thread_start1.py b/tests/thread/thread_start1.py index f0e696840..727463324 100644 --- a/tests/thread/thread_start1.py +++ b/tests/thread/thread_start1.py @@ -18,8 +18,13 @@ def thread_entry(n): foo() -_thread.start_new_thread(thread_entry, (10,)) -_thread.start_new_thread(thread_entry, (20,)) +for i in range(2): + while True: + try: + _thread.start_new_thread(thread_entry, ((i + 1) * 10,)) + break + except OSError: + pass # wait for threads to finish time.sleep(1) |
