]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Test psycopg3 with uvloop
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 12 Apr 2021 15:35:43 +0000 (16:35 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 12 Apr 2021 15:35:43 +0000 (16:35 +0100)
It works, it seems.

tests/conftest.py
tests/pool/test_pool_async.py

index b30ede9345f3b88e70ff3de199d9cbc8225aa0bb..32e029693dde51321e1b65c745513071ee5d3ecb 100644 (file)
@@ -1,3 +1,4 @@
+import asyncio
 import inspect
 
 import pytest
@@ -23,6 +24,22 @@ def pytest_configure(config):
     )
 
 
+def pytest_addoption(parser):
+    parser.addoption(
+        "--loop",
+        choices=["default", "uvloop"],
+        help="The asyncio loop to use for async tests.",
+    )
+
+
+def pytest_report_header(config):
+    loop = config.getoption("--loop")
+    if loop == "default":
+        return []
+
+    return [f"asyncio loop: {loop}"]
+
+
 @pytest.fixture
 def retries(request):
     """Retry a block in a test a few times before giving up."""
@@ -36,3 +53,20 @@ def retries(request):
         return tenacity.Retrying(
             reraise=True, stop=tenacity.stop_after_attempt(3)
         )
+
+
+@pytest.fixture
+def event_loop(request):
+    """Return the event loop to test asyncio-marked tests."""
+
+    loop = request.config.getoption("--loop")
+    if loop == "uvloop":
+        import uvloop
+
+        uvloop.install()
+    else:
+        assert loop == "default"
+
+    loop = asyncio.get_event_loop_policy().new_event_loop()
+    yield loop
+    loop.close()
index ba21a6f5da7c9ea69ba354383ae9e882dcf567c9..230b716f2ed301605456360c801ff72994be5a40 100644 (file)
@@ -944,7 +944,7 @@ async def test_stats_connect(dsn, proxy, monkeypatch):
         assert stats["connections_num"] == 3
         assert stats.get("connections_errors", 0) == 0
         assert stats.get("connections_lost", 0) == 0
-        assert 600 <= stats["connections_ms"] < 1200
+        assert 580 <= stats["connections_ms"] < 1200
 
         proxy.stop()
         await p.check()