from urllib.request import AbstractBasicAuthHandler import pyperf 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_5_simple = '' + ',' * (10 ** 5) repeat_10 = '' + ',' * 10 + 'A' repeat_20 = '' + ',' * 20 + 'A' repeat_30 = '' + ',' * 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_5_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^5 + simple', repeat_10_5_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)