From ba659495a73f54377054f207336fde1918ac7954 Mon Sep 17 00:00:00 2001 From: Patrick Arminio Date: Sun, 7 Jan 2024 12:03:38 +0100 Subject: [PATCH] Use asyncio.run instead of asgiref for benchmarks (#3325) * Use asyncio.run instead of asgiref * Move more tests to asyncio.run --- tests/benchmarks/test_complex_schema.py | 17 ++++++++++------ tests/benchmarks/test_execute.py | 27 ++++++++++++++++--------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/tests/benchmarks/test_complex_schema.py b/tests/benchmarks/test_complex_schema.py index ae7b03c594..00f6f72eb5 100644 --- a/tests/benchmarks/test_complex_schema.py +++ b/tests/benchmarks/test_complex_schema.py @@ -1,5 +1,6 @@ +import asyncio + import pytest -from asgiref.sync import async_to_sync from pytest_codspeed.plugin import BenchmarkFixture from .schema import schema @@ -87,10 +88,14 @@ @pytest.mark.parametrize("number", [50]) def test_execute_complex_schema(benchmark: BenchmarkFixture, number: int): - result = benchmark( - async_to_sync(schema.execute), - query, - variable_values={"query": "test", "first": number}, - ) + def run(): + coroutine = schema.execute( + query, + variable_values={"query": "test", "first": number}, + ) + + return asyncio.run(coroutine) + + result = benchmark(run) assert not result.errors diff --git a/tests/benchmarks/test_execute.py b/tests/benchmarks/test_execute.py index 11d148e91e..865d49c700 100644 --- a/tests/benchmarks/test_execute.py +++ b/tests/benchmarks/test_execute.py @@ -1,10 +1,10 @@ +import asyncio import datetime import random from datetime import date from typing import List, Type, cast import pytest -from asgiref.sync import async_to_sync from pytest_codspeed.plugin import BenchmarkFixture import strawberry @@ -72,7 +72,10 @@ def patrons(self) -> List[Patron]: } """ - benchmark(async_to_sync(schema.execute), query) + def run(): + return asyncio.run(schema.execute(query)) + + benchmark(run) @pytest.mark.parametrize("ntypes", [2**k for k in range(0, 13, 4)]) @@ -92,10 +95,16 @@ class Query: schema = strawberry.Schema(query=Query, types=CONCRETE_TYPES) query = "query { items { id } }" - benchmark( - async_to_sync(schema.execute), - query, - root_value=Query( - items=[CONCRETE_TYPES[i % ntypes](id=cast(ID, i)) for i in range(1000)] - ), - ) + def run(): + return asyncio.run( + schema.execute( + query, + root_value=Query( + items=[ + CONCRETE_TYPES[i % ntypes](id=cast(ID, i)) for i in range(1000) + ] + ), + ) + ) + + benchmark(run)