From 4397fd8646861c35f1c6d1b61ff26c0f3e1c5a36 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 3 Dec 2024 13:43:58 -0600 Subject: [PATCH] Add a benchmark for web.FileResponse --- tests/test_benchmarks_web_fileresponse.py | 35 +++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tests/test_benchmarks_web_fileresponse.py diff --git a/tests/test_benchmarks_web_fileresponse.py b/tests/test_benchmarks_web_fileresponse.py new file mode 100644 index 00000000000..9512b3b1368 --- /dev/null +++ b/tests/test_benchmarks_web_fileresponse.py @@ -0,0 +1,35 @@ +"""codspeed benchmarks for the web responses.""" + +import asyncio +import pathlib + +from pytest_codspeed import BenchmarkFixture + +from aiohttp import web +from aiohttp.pytest_plugin import AiohttpClient + + +def test_simple_web_response( + loop: asyncio.AbstractEventLoop, + aiohttp_client: AiohttpClient, + benchmark: BenchmarkFixture, +) -> None: + """Benchmark creating 100 simple web.Response.""" + response_count = 100 + filepath = pathlib.Path(__file__).parent / "sample.txt" + + async def handler(request: web.Request) -> web.FileResponse: + return web.FileResponse(path=filepath) + + app = web.Application() + app.router.add_route("GET", "/", handler) + + async def run_file_resonse_benchmark() -> None: + client = await aiohttp_client(app) + for _ in range(response_count): + await client.get("/") + await client.close() + + @benchmark + def _run() -> None: + loop.run_until_complete(run_file_resonse_benchmark())