From: Daniele Varrazzo Date: Mon, 28 Jun 2021 18:38:00 +0000 (+0100) Subject: Retry a few time-based pool tests X-Git-Tag: 3.0.dev0~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8383872d59a701d6a3f115900c0f975b920781de;p=thirdparty%2Fpsycopg.git Retry a few time-based pool tests --- diff --git a/tests/pool/test_pool.py b/tests/pool/test_pool.py index f934e3988..427b99ebd 100644 --- a/tests/pool/test_pool.py +++ b/tests/pool/test_pool.py @@ -329,7 +329,7 @@ def test_queue_size(dsn): @pytest.mark.slow -def test_queue_timeout(dsn): +def test_queue_timeout(dsn, retries): def worker(n): t0 = time() try: @@ -344,18 +344,20 @@ def test_queue_timeout(dsn): t1 = time() results.append((n, t1 - t0, pid)) - results = [] - errors = [] + for retry in retries: + with retry: + results = [] + errors = [] - with pool.ConnectionPool(dsn, min_size=2, timeout=0.1) as p: - ts = [Thread(target=worker, args=(i,)) for i in range(4)] - [t.start() for t in ts] - [t.join() for t in ts] + with pool.ConnectionPool(dsn, min_size=2, timeout=0.1) as p: + ts = [Thread(target=worker, args=(i,)) for i in range(4)] + [t.start() for t in ts] + [t.join() for t in ts] - assert len(results) == 2 - assert len(errors) == 2 - for e in errors: - assert 0.1 < e[1] < 0.15 + assert len(results) == 2 + assert len(errors) == 2 + for e in errors: + assert 0.1 < e[1] < 0.15 @pytest.mark.slow @@ -384,7 +386,7 @@ def test_dead_client(dsn): @pytest.mark.slow -def test_queue_timeout_override(dsn): +def test_queue_timeout_override(dsn, retries): def worker(n): t0 = time() timeout = 0.25 if n == 3 else None @@ -400,18 +402,20 @@ def test_queue_timeout_override(dsn): t1 = time() results.append((n, t1 - t0, pid)) - results = [] - errors = [] + for retry in retries: + with retry: + results = [] + errors = [] - with pool.ConnectionPool(dsn, min_size=2, timeout=0.1) as p: - ts = [Thread(target=worker, args=(i,)) for i in range(4)] - [t.start() for t in ts] - [t.join() for t in ts] + with pool.ConnectionPool(dsn, min_size=2, timeout=0.1) as p: + ts = [Thread(target=worker, args=(i,)) for i in range(4)] + [t.start() for t in ts] + [t.join() for t in ts] - assert len(results) == 3 - assert len(errors) == 1 - for e in errors: - assert 0.1 < e[1] < 0.15 + assert len(results) == 3 + assert len(errors) == 1 + for e in errors: + assert 0.1 < e[1] < 0.15 def test_broken_reconnect(dsn): diff --git a/tests/pool/test_pool_async.py b/tests/pool/test_pool_async.py index 5054198fd..b35f988c1 100644 --- a/tests/pool/test_pool_async.py +++ b/tests/pool/test_pool_async.py @@ -349,7 +349,7 @@ async def test_queue_size(dsn): @pytest.mark.slow -async def test_queue_timeout(dsn): +async def test_queue_timeout(dsn, retries): async def worker(n): t0 = time() try: @@ -365,17 +365,21 @@ async def test_queue_timeout(dsn): t1 = time() results.append((n, t1 - t0, pid)) - results = [] - errors = [] + async for retry in retries: + with retry: + results = [] + errors = [] - async with pool.AsyncConnectionPool(dsn, min_size=2, timeout=0.1) as p: - ts = [create_task(worker(i)) for i in range(4)] - await asyncio.gather(*ts) + async with pool.AsyncConnectionPool( + dsn, min_size=2, timeout=0.1 + ) as p: + ts = [create_task(worker(i)) for i in range(4)] + await asyncio.gather(*ts) - assert len(results) == 2 - assert len(errors) == 2 - for e in errors: - assert 0.1 < e[1] < 0.15 + assert len(results) == 2 + assert len(errors) == 2 + for e in errors: + assert 0.1 < e[1] < 0.15 @pytest.mark.slow @@ -403,7 +407,7 @@ async def test_dead_client(dsn): @pytest.mark.slow -async def test_queue_timeout_override(dsn): +async def test_queue_timeout_override(dsn, retries): async def worker(n): t0 = time() timeout = 0.25 if n == 3 else None @@ -420,17 +424,21 @@ async def test_queue_timeout_override(dsn): t1 = time() results.append((n, t1 - t0, pid)) - results = [] - errors = [] + async for retry in retries: + with retry: + results = [] + errors = [] - async with pool.AsyncConnectionPool(dsn, min_size=2, timeout=0.1) as p: - ts = [create_task(worker(i)) for i in range(4)] - await asyncio.gather(*ts) + async with pool.AsyncConnectionPool( + dsn, min_size=2, timeout=0.1 + ) as p: + ts = [create_task(worker(i)) for i in range(4)] + await asyncio.gather(*ts) - assert len(results) == 3 - assert len(errors) == 1 - for e in errors: - assert 0.1 < e[1] < 0.15 + assert len(results) == 3 + assert len(errors) == 1 + for e in errors: + assert 0.1 < e[1] < 0.15 async def test_broken_reconnect(dsn):