diff options
| author | Damien George <damien.p.george@gmail.com> | 2019-11-13 21:08:22 +1100 |
|---|---|---|
| committer | Damien George <damien.p.george@gmail.com> | 2020-03-26 01:25:45 +1100 |
| commit | c4935f30490d0446e16a51dbf7a6397b771cf804 (patch) | |
| tree | b095dd91914950939d4d0cdc10e7be3625fff00d /tests/extmod/uasyncio_heaplock.py | |
| parent | 63b99443820f53afbdab5201044629d2bfecd73b (diff) | |
tests/extmod: Add uasyncio tests.
All .exp files are included because they require CPython 3.8 which may not
always be available.
Diffstat (limited to 'tests/extmod/uasyncio_heaplock.py')
| -rw-r--r-- | tests/extmod/uasyncio_heaplock.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/extmod/uasyncio_heaplock.py b/tests/extmod/uasyncio_heaplock.py new file mode 100644 index 000000000..771d3f0d9 --- /dev/null +++ b/tests/extmod/uasyncio_heaplock.py @@ -0,0 +1,46 @@ +# test that basic scheduling of tasks, and uasyncio.sleep_ms, does not use the heap + +import micropython + +# strict stackless builds can't call functions without allocating a frame on the heap +try: + f = lambda: 0 + micropython.heap_lock() + f() + micropython.heap_unlock() +except RuntimeError: + print("SKIP") + raise SystemExit + +try: + import uasyncio as asyncio +except ImportError: + try: + import asyncio + except ImportError: + print("SKIP") + raise SystemExit + + +async def task(id, n, t): + for i in range(n): + print(id, i) + await asyncio.sleep_ms(t) + + +async def main(): + t1 = asyncio.create_task(task(1, 4, 10)) + t2 = asyncio.create_task(task(2, 4, 25)) + + micropython.heap_lock() + + print("start") + await asyncio.sleep_ms(1) + print("sleep") + await asyncio.sleep_ms(100) + print("finish") + + micropython.heap_unlock() + + +asyncio.run(main()) |
