[Python-checkins] bpo-47076: Make asyncio.Queue stable on slow test boxes (GH-32040)

asvetlov webhook-mailer at python.org
Tue Mar 22 10:00:35 EDT 2022


https://github.com/python/cpython/commit/673755bfbac46b3cd2c84d7e0d68c2c488e039c3
commit: 673755bfbac46b3cd2c84d7e0d68c2c488e039c3
branch: main
author: Andrew Svetlov <andrew.svetlov at gmail.com>
committer: asvetlov <andrew.svetlov at gmail.com>
date: 2022-03-22T16:00:23+02:00
summary:

bpo-47076: Make asyncio.Queue stable on slow test boxes (GH-32040)

files:
M Lib/test/test_asyncio/test_queues.py

diff --git a/Lib/test/test_asyncio/test_queues.py b/Lib/test/test_asyncio/test_queues.py
index 55588e8b729e1..2d058ccf6a8c7 100644
--- a/Lib/test/test_asyncio/test_queues.py
+++ b/Lib/test/test_asyncio/test_queues.py
@@ -28,7 +28,7 @@ async def _test_repr_or_str(self, fn, expect_id):
             # Start a task that waits to get.
             getter = tg.create_task(q.get())
             # Let it start waiting.
-            await asyncio.sleep(0.1)
+            await asyncio.sleep(0)
             self.assertTrue('_getters[1]' in fn(q))
             # resume q.get coroutine to finish generator
             q.put_nowait(0)
@@ -42,7 +42,7 @@ async def _test_repr_or_str(self, fn, expect_id):
             # Start a task that waits to put.
             putter = tg.create_task(q.put(2))
             # Let it start waiting.
-            await asyncio.sleep(0.1)
+            await asyncio.sleep(0)
             self.assertTrue('_putters[1]' in fn(q))
             # resume q.put coroutine to finish generator
             q.get_nowait()
@@ -100,14 +100,15 @@ async def putter():
             return True
 
         t = asyncio.create_task(putter())
-        await asyncio.sleep(0.01)
+        for i in range(2):
+            await asyncio.sleep(0)
 
         # The putter is blocked after putting two items.
         self.assertEqual([0, 1], have_been_put)
         self.assertEqual(0, await q.get())
 
         # Let the putter resume and put last item.
-        await asyncio.sleep(0.01)
+        await asyncio.sleep(0)
         self.assertEqual([0, 1, 2], have_been_put)
         self.assertEqual(1, await q.get())
         self.assertEqual(2, await q.get())
@@ -150,10 +151,10 @@ async def queue_get():
             finished = True
             return res
 
-        loop.call_later(0.01, q.put_nowait, 1)
         queue_get_task = asyncio.create_task(queue_get())
         await started.wait()
         self.assertFalse(finished)
+        loop.call_later(0.01, q.put_nowait, 1)
         res = await queue_get_task
         self.assertTrue(finished)
         self.assertEqual(1, res)
@@ -167,17 +168,6 @@ def test_nonblocking_get_exception(self):
         q = asyncio.Queue()
         self.assertRaises(asyncio.QueueEmpty, q.get_nowait)
 
-    async def test_get_cancelled(self):
-        q = asyncio.Queue()
-
-        async def queue_get():
-            return await asyncio.wait_for(q.get(), 0.051)
-
-        get_task = asyncio.create_task(queue_get())
-        await asyncio.sleep(0.01)  # let the task start
-        q.put_nowait(1)
-        self.assertEqual(1, await get_task)
-
     async def test_get_cancelled_race(self):
         q = asyncio.Queue()
 
@@ -263,7 +253,7 @@ async def test_get_cancel_drop_one_pending_reader(self):
 
         reader = asyncio.create_task(q.get())
 
-        await asyncio.sleep(0.01)
+        await asyncio.sleep(0)
 
         q.put_nowait(1)
         q.put_nowait(2)
@@ -288,7 +278,7 @@ async def test_get_cancel_drop_many_pending_readers(self):
             reader2 = tg.create_task(q.get())
             reader3 = tg.create_task(q.get())
 
-            await asyncio.sleep(0.01)
+            await asyncio.sleep(0)
 
             q.put_nowait(1)
             q.put_nowait(2)
@@ -309,7 +299,7 @@ async def test_put_cancel_drop(self):
 
         # putting a second item in the queue has to block (qsize=1)
         writer = asyncio.create_task(q.put(2))
-        await asyncio.sleep(0.01)
+        await asyncio.sleep(0)
 
         value1 = q.get_nowait()
         self.assertEqual(value1, 1)
@@ -410,7 +400,7 @@ async def test_cancelled_puts_not_being_held_in_self_putters(self):
 
         # Task waiting for space to put an item in the queue.
         put_task = asyncio.create_task(queue.put(1))
-        await asyncio.sleep(0.01)
+        await asyncio.sleep(0)
 
         # Check that the putter is correctly removed from queue._putters when
         # the task is canceled.
@@ -427,7 +417,7 @@ async def test_cancelled_put_silence_value_error_exception(self):
 
         # Task waiting for space to put a item in the queue.
         put_task = asyncio.create_task(queue.put(1))
-        await asyncio.sleep(0.01)
+        await asyncio.sleep(0)
 
         # get_nowait() remove the future of put_task from queue._putters.
         queue.get_nowait()



More information about the Python-checkins mailing list