summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2021-05-10 12:44:47 +1000
committerDamien George <damien@micropython.org>2021-05-10 13:07:16 +1000
commit4cdcbdb7531b98b2dc9a85737b760f509957e31e (patch)
treeb30210b71391afc26935198b2f7561ac3e3139c3
parentb6b39bff47b5ff1ffc322a6e795d57451d4215a8 (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.py7
-rw-r--r--tests/thread/thread_exit1.py9
-rw-r--r--tests/thread/thread_exit2.py9
-rw-r--r--tests/thread/thread_stacksize1.py7
-rw-r--r--tests/thread/thread_start1.py9
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)