mirror of
https://github.com/python/cpython.git
synced 2025-10-17 12:18:23 +00:00
Issue #21163, asyncio: Fix some "Task was destroyed but it is pending!" logs in tests
This commit is contained in:
parent
36820b6e08
commit
87f16f892c
3 changed files with 22 additions and 16 deletions
|
@ -783,6 +783,7 @@ class SemaphoreTests(test_utils.TestCase):
|
||||||
|
|
||||||
# cleanup locked semaphore
|
# cleanup locked semaphore
|
||||||
sem.release()
|
sem.release()
|
||||||
|
self.loop.run_until_complete(t4)
|
||||||
|
|
||||||
def test_acquire_cancel(self):
|
def test_acquire_cancel(self):
|
||||||
sem = asyncio.Semaphore(loop=self.loop)
|
sem = asyncio.Semaphore(loop=self.loop)
|
||||||
|
|
|
@ -362,16 +362,21 @@ class QueuePutTests(_QueueTestBase):
|
||||||
def test_put_cancelled_race(self):
|
def test_put_cancelled_race(self):
|
||||||
q = asyncio.Queue(loop=self.loop, maxsize=1)
|
q = asyncio.Queue(loop=self.loop, maxsize=1)
|
||||||
|
|
||||||
asyncio.Task(q.put('a'), loop=self.loop)
|
put_a = asyncio.Task(q.put('a'), loop=self.loop)
|
||||||
asyncio.Task(q.put('c'), loop=self.loop)
|
put_b = asyncio.Task(q.put('b'), loop=self.loop)
|
||||||
t = asyncio.Task(q.put('b'), loop=self.loop)
|
put_c = asyncio.Task(q.put('X'), loop=self.loop)
|
||||||
|
|
||||||
test_utils.run_briefly(self.loop)
|
test_utils.run_briefly(self.loop)
|
||||||
t.cancel()
|
self.assertTrue(put_a.done())
|
||||||
|
self.assertFalse(put_b.done())
|
||||||
|
|
||||||
|
put_c.cancel()
|
||||||
test_utils.run_briefly(self.loop)
|
test_utils.run_briefly(self.loop)
|
||||||
self.assertTrue(t.done())
|
self.assertTrue(put_c.done())
|
||||||
self.assertEqual(q.get_nowait(), 'a')
|
self.assertEqual(q.get_nowait(), 'a')
|
||||||
self.assertEqual(q.get_nowait(), 'c')
|
self.assertEqual(q.get_nowait(), 'b')
|
||||||
|
|
||||||
|
self.loop.run_until_complete(put_b)
|
||||||
|
|
||||||
def test_put_with_waiting_getters(self):
|
def test_put_with_waiting_getters(self):
|
||||||
q = asyncio.Queue(loop=self.loop)
|
q = asyncio.Queue(loop=self.loop)
|
||||||
|
@ -431,18 +436,20 @@ class JoinableQueueTests(_QueueTestBase):
|
||||||
|
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def test():
|
def test():
|
||||||
for _ in range(2):
|
tasks = [asyncio.Task(worker(), loop=self.loop)
|
||||||
asyncio.Task(worker(), loop=self.loop)
|
for index in range(2)]
|
||||||
|
|
||||||
yield from q.join()
|
yield from q.join()
|
||||||
|
return tasks
|
||||||
|
|
||||||
self.loop.run_until_complete(test())
|
tasks = self.loop.run_until_complete(test())
|
||||||
self.assertEqual(sum(range(100)), accumulator)
|
self.assertEqual(sum(range(100)), accumulator)
|
||||||
|
|
||||||
# close running generators
|
# close running generators
|
||||||
running = False
|
running = False
|
||||||
for i in range(2):
|
for i in range(len(tasks)):
|
||||||
q.put_nowait(0)
|
q.put_nowait(0)
|
||||||
|
self.loop.run_until_complete(asyncio.wait(tasks, loop=self.loop))
|
||||||
|
|
||||||
def test_join_empty_queue(self):
|
def test_join_empty_queue(self):
|
||||||
q = asyncio.JoinableQueue(loop=self.loop)
|
q = asyncio.JoinableQueue(loop=self.loop)
|
||||||
|
|
|
@ -1763,16 +1763,14 @@ class CoroutineGatherTests(GatherTestsBase, test_utils.TestCase):
|
||||||
gen2 = coro()
|
gen2 = coro()
|
||||||
fut = asyncio.gather(gen1, gen2)
|
fut = asyncio.gather(gen1, gen2)
|
||||||
self.assertIs(fut._loop, self.one_loop)
|
self.assertIs(fut._loop, self.one_loop)
|
||||||
gen1.close()
|
self.one_loop.run_until_complete(fut)
|
||||||
gen2.close()
|
|
||||||
|
|
||||||
self.set_event_loop(self.other_loop, cleanup=False)
|
self.set_event_loop(self.other_loop, cleanup=False)
|
||||||
gen3 = coro()
|
gen3 = coro()
|
||||||
gen4 = coro()
|
gen4 = coro()
|
||||||
fut = asyncio.gather(gen3, gen4, loop=self.other_loop)
|
fut2 = asyncio.gather(gen3, gen4, loop=self.other_loop)
|
||||||
self.assertIs(fut._loop, self.other_loop)
|
self.assertIs(fut2._loop, self.other_loop)
|
||||||
gen3.close()
|
self.other_loop.run_until_complete(fut2)
|
||||||
gen4.close()
|
|
||||||
|
|
||||||
def test_duplicate_coroutines(self):
|
def test_duplicate_coroutines(self):
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue