123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- """
- Benchmarking and performance tests.
- """
- import pytest
- from pluggy import HookspecMarker, HookimplMarker
- from pluggy.hooks import HookImpl
- from pluggy.callers import _multicall, _legacymulticall
- hookspec = HookspecMarker("example")
- hookimpl = HookimplMarker("example")
- def MC(methods, kwargs, callertype, firstresult=False):
- hookfuncs = []
- for method in methods:
- f = HookImpl(None, "<temp>", method, method.example_impl)
- hookfuncs.append(f)
- return callertype(hookfuncs, kwargs, firstresult=firstresult)
- @hookimpl
- def hook(arg1, arg2, arg3):
- return arg1, arg2, arg3
- @hookimpl(hookwrapper=True)
- def wrapper(arg1, arg2, arg3):
- yield
- @pytest.fixture(params=[10, 100], ids="hooks={}".format)
- def hooks(request):
- return [hook for i in range(request.param)]
- @pytest.fixture(params=[10, 100], ids="wrappers={}".format)
- def wrappers(request):
- return [wrapper for i in range(request.param)]
- @pytest.fixture(params=[_multicall, _legacymulticall], ids=lambda item: item.__name__)
- def callertype(request):
- return request.param
- def inner_exec(methods, callertype):
- return MC(methods, {"arg1": 1, "arg2": 2, "arg3": 3}, callertype)
- def test_hook_and_wrappers_speed(benchmark, hooks, wrappers, callertype):
- benchmark(inner_exec, hooks + wrappers, callertype)
|