diff --git a/test/asynchronous/test_pooling.py b/test/asynchronous/test_pooling.py index 09b8fb0853..812b5a48e0 100644 --- a/test/asynchronous/test_pooling.py +++ b/test/asynchronous/test_pooling.py @@ -123,9 +123,12 @@ async def run_mongo_thread(self): self.state = "connection" - def __del__(self): + async def release_conn(self): if self.sock: - self.sock.close_conn(None) + await self.sock.unpin() + self.sock = None + return True + return False async def run_cases(client, cases): @@ -352,6 +355,10 @@ async def test_no_wait_queue_timeout(self): self.assertEqual(t.state, "connection") self.assertEqual(t.sock, s1) + # Cleanup + await t.release_conn() + await t.join() + await pool.close() async def test_checkout_more_than_max_pool_size(self): pool = await self.create_pool(max_pool_size=2) @@ -364,16 +371,26 @@ async def test_checkout_more_than_max_pool_size(self): socks.append(sock) tasks = [] - for _ in range(30): + for _ in range(10): t = SocketGetter(self.c, pool) await t.start() tasks.append(t) await asyncio.sleep(1) for t in tasks: self.assertEqual(t.state, "get_socket") - + # Cleanup for socket_info in socks: - socket_info.close_conn(None) + await socket_info.unpin() + while tasks: + to_remove = [] + for t in tasks: + if await t.release_conn(): + to_remove.append(t) + await t.join() + for t in to_remove: + tasks.remove(t) + await asyncio.sleep(0.05) + await pool.close() async def test_maxConnecting(self): client = await self.async_rs_or_single_client() diff --git a/test/test_pooling.py b/test/test_pooling.py index 5d23b85f23..1755365f80 100644 --- a/test/test_pooling.py +++ b/test/test_pooling.py @@ -123,9 +123,12 @@ def run_mongo_thread(self): self.state = "connection" - def __del__(self): + def release_conn(self): if self.sock: - self.sock.close_conn(None) + self.sock.unpin() + self.sock = None + return True + return False def run_cases(client, cases): @@ -352,6 +355,10 @@ def test_no_wait_queue_timeout(self): self.assertEqual(t.state, "connection") self.assertEqual(t.sock, s1) + # Cleanup + t.release_conn() + t.join() + pool.close() def test_checkout_more_than_max_pool_size(self): pool = self.create_pool(max_pool_size=2) @@ -364,16 +371,26 @@ def test_checkout_more_than_max_pool_size(self): socks.append(sock) tasks = [] - for _ in range(30): + for _ in range(10): t = SocketGetter(self.c, pool) t.start() tasks.append(t) time.sleep(1) for t in tasks: self.assertEqual(t.state, "get_socket") - + # Cleanup for socket_info in socks: - socket_info.close_conn(None) + socket_info.unpin() + while tasks: + to_remove = [] + for t in tasks: + if t.release_conn(): + to_remove.append(t) + t.join() + for t in to_remove: + tasks.remove(t) + time.sleep(0.05) + pool.close() def test_maxConnecting(self): client = self.rs_or_single_client()