summaryrefslogtreecommitdiff
path: root/tests/extmod/asyncio_fair.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/extmod/asyncio_fair.py')
-rw-r--r--tests/extmod/asyncio_fair.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/extmod/asyncio_fair.py b/tests/extmod/asyncio_fair.py
new file mode 100644
index 000000000..43076fef1
--- /dev/null
+++ b/tests/extmod/asyncio_fair.py
@@ -0,0 +1,31 @@
+# Test fairness of scheduler
+
+try:
+ import asyncio
+except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+
+async def task(id, t):
+ print("task start", id)
+ while True:
+ if t > 0:
+ print("task work", id)
+ await asyncio.sleep(t)
+
+
+async def main():
+ t1 = asyncio.create_task(task(1, -0.01))
+ t2 = asyncio.create_task(task(2, 0.1))
+ t3 = asyncio.create_task(task(3, 0.18))
+ t4 = asyncio.create_task(task(4, -100))
+ await asyncio.sleep(0.5)
+ t1.cancel()
+ t2.cancel()
+ t3.cancel()
+ t4.cancel()
+ print("finish")
+
+
+asyncio.run(main())