]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Retry a few time-based pool tests
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 28 Jun 2021 18:38:00 +0000 (19:38 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 28 Jun 2021 18:56:40 +0000 (19:56 +0100)
tests/pool/test_pool.py
tests/pool/test_pool_async.py

index f934e3988f321fe633599b52cdc191b28d2e960a..427b99ebd56cc0298e3c0730d8377469f24a5bed 100644 (file)
@@ -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):
index 5054198fdf49011d50d648c3eeb5e295b5254779..b35f988c1036db7693fe2d40f152a85b5fa61265 100644 (file)
@@ -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):