from urllib.request import AbstractBasicAuthHandler import pyperf import email class AuthHandler(AbstractBasicAuthHandler): handler = None def retry_http_basic_auth(self, host, req, realm): self.realm = realm return None realm = 'realm@example.com' simple = f'Basic realm="{realm}"' repeat_10_3_simple = 'Basic ' + ', ' * (10 ** 3) + simple repeat_10 = 'Basic ' + ', ' * 10 + 'A' repeat_20 = 'Basic ' + ', ' * 20 + 'A' repeat_30 = 'Basic ' + ', ' * 30 + 'A' handler = AuthHandler() host = None req = None class Headers: def __init__(self, header): self.header = header def get(self, *ignored_args): return self.header def get_all(self, *ignored_args): return [self.header] for header in (simple, repeat_10_3_simple, repeat_10, repeat_20): handler.realm = None handler.http_error_auth_reqed("WWW-Authenticate", host, req, Headers(header)) # No assert as we might fail runner = pyperf.Runner() for name, header in ( ('simple', simple), ('repeat 10^3 + simple', repeat_10_3_simple), ('repeat 10', repeat_10), ('repeat 20', repeat_20), ): headers = Headers(header) runner.bench_func(name, handler.http_error_auth_reqed, "WWW-Authenticate", None, None, headers)