From: Daniele Varrazzo Date: Mon, 12 Apr 2021 15:35:43 +0000 (+0100) Subject: Test psycopg3 with uvloop X-Git-Tag: 3.0.dev0~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be97511d80e8966eccc7d2672a45beaf76a3579e;p=thirdparty%2Fpsycopg.git Test psycopg3 with uvloop It works, it seems. --- diff --git a/tests/conftest.py b/tests/conftest.py index b30ede934..32e029693 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -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() diff --git a/tests/pool/test_pool_async.py b/tests/pool/test_pool_async.py index ba21a6f5d..230b716f2 100644 --- a/tests/pool/test_pool_async.py +++ b/tests/pool/test_pool_async.py @@ -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()