5fb276de33
With sleep(0.2) a multiple of sleep(0.1), the order of task 2 and 3 execution is not well defined, and depends on the precision of the system clock and how fast the rest of the code runs. So change 0.2 to 0.18 to make the test more reliable. Also fix a typo of t3/t4, and cancel t4 at the end. Signed-off-by: Damien George <damien@micropython.org>
35 lines
673 B
Python
35 lines
673 B
Python
# Test fairness of scheduler
|
|
|
|
try:
|
|
import uasyncio as asyncio
|
|
except ImportError:
|
|
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())
|