--- /dev/null
+import sys
+from collections.abc import Callable
+from typing import Annotated, Any
+
+import pytest
+from fastapi import Depends, FastAPI
+from fastapi.routing import APIRoute
+
+if "--codspeed" not in sys.argv:
+ pytest.skip(
+ "Benchmark tests are skipped by default; run with --codspeed.",
+ allow_module_level=True,
+ )
+
+LAST_DEPENDENCY_INDEX = 100
+ROUTE_COUNT = 20
+ROUTE_PATH_PREFIX = "/route-"
+
+
+def _create_app() -> FastAPI:
+ app = FastAPI()
+ dependencies: dict[int, Callable[..., Any]] = {}
+
+ def create_dependency(index: int) -> Callable[..., Any]:
+ if index == LAST_DEPENDENCY_INDEX:
+
+ def dependency() -> str:
+ return str(index)
+
+ dependency.__name__ = f"dependency_{index}"
+ return dependency
+
+ next_dependency = dependencies[index + 1]
+
+ async def dependency(
+ sub_dependency: Annotated[str, Depends(next_dependency)],
+ ) -> str:
+ return f"{index} -> {sub_dependency}"
+
+ dependency.__name__ = f"dependency_{index}"
+ return dependency
+
+ for index in reversed(range(LAST_DEPENDENCY_INDEX + 1)):
+ dependencies[index] = create_dependency(index)
+
+ async def endpoint(
+ value: Annotated[str, Depends(dependencies[0])],
+ ) -> dict[str, str]:
+ return {"value": value}
+
+ for index in range(ROUTE_COUNT):
+ app.add_api_route(f"{ROUTE_PATH_PREFIX}{index}", endpoint)
+
+ return app
+
+
+def test_route_dependency_graph(benchmark) -> None:
+ app = benchmark(_create_app)
+ api_routes = [
+ route
+ for route in app.routes
+ if isinstance(route, APIRoute) and route.path.startswith(ROUTE_PATH_PREFIX)
+ ]
+ assert len(api_routes) == ROUTE_COUNT