diff options
author | Damien George <damien@micropython.org> | 2022-06-24 16:39:45 +1000 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2022-06-24 17:00:24 +1000 |
commit | 2a2589738c7bcc0a318f9054562de9a62575d8cc (patch) | |
tree | 5b3189dde41eb6405b05537cfb1a8daad13331f3 /tests/extmod/uasyncio_heaplock.py | |
parent | c21452a1d23a7cf70fdd6b2c069d460c1a5a7be8 (diff) |
tests/extmod: Add heap-lock test for stream writing.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tests/extmod/uasyncio_heaplock.py')
-rw-r--r-- | tests/extmod/uasyncio_heaplock.py | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/tests/extmod/uasyncio_heaplock.py b/tests/extmod/uasyncio_heaplock.py index 34a51cd37..a6b4a0819 100644 --- a/tests/extmod/uasyncio_heaplock.py +++ b/tests/extmod/uasyncio_heaplock.py @@ -1,4 +1,8 @@ -# test that basic scheduling of tasks, and uasyncio.sleep_ms, does not use the heap +# test that the following do not use the heap: +# - basic scheduling of tasks +# - uasyncio.sleep_ms +# - StreamWriter.write, stream is blocked and data to write is a bytes object +# - StreamWriter.write, when stream is not blocked import micropython @@ -22,6 +26,17 @@ except ImportError: raise SystemExit +class TestStream: + def __init__(self, blocked): + self.blocked = blocked + + def write(self, data): + print("TestStream.write", data) + if self.blocked: + return None + return len(data) + + async def task(id, n, t): for i in range(n): print(id, i) @@ -32,14 +47,27 @@ async def main(): t1 = asyncio.create_task(task(1, 4, 100)) t2 = asyncio.create_task(task(2, 2, 250)) + # test scheduling tasks, and calling sleep_ms micropython.heap_lock() - print("start") await asyncio.sleep_ms(5) print("sleep") await asyncio.sleep_ms(350) print("finish") + micropython.heap_unlock() + # test writing to a stream, when the underlying stream is blocked + s = asyncio.StreamWriter(TestStream(True), None) + micropython.heap_lock() + s.write(b"12") + micropython.heap_unlock() + + # test writing to a stream, when the underlying stream is not blocked + buf = bytearray(b"56") + s = asyncio.StreamWriter(TestStream(False), None) + micropython.heap_lock() + s.write(b"34") + s.write(buf) micropython.heap_unlock() |