Faster http tests
This commit is contained in:
parent
1152ec3e36
commit
abd70e2ad3
1 changed files with 37 additions and 15 deletions
|
|
@ -4,9 +4,25 @@ import http.server
|
|||
import threading
|
||||
import typing
|
||||
|
||||
import contextlib
|
||||
import time
|
||||
|
||||
from cry import feed
|
||||
|
||||
TRACE_ELAPSED = False
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def dumb_trace(name):
|
||||
start = time.time()
|
||||
if TRACE_ELAPSED:
|
||||
print(f"{start:.3f} ENTER {name}")
|
||||
yield
|
||||
end = time.time()
|
||||
elapsed = end - start
|
||||
if TRACE_ELAPSED:
|
||||
print(f"{end:.3f} EXIT {name} (elapsed: {elapsed:.3f}s")
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class MockResponse:
|
||||
|
|
@ -33,6 +49,7 @@ class TestWebServer:
|
|||
handlers: dict[str, list[MockResponse]]
|
||||
|
||||
def __init__(self):
|
||||
with dumb_trace("init"):
|
||||
server = self
|
||||
|
||||
class TestWebHandler(http.server.BaseHTTPRequestHandler):
|
||||
|
|
@ -40,12 +57,15 @@ class TestWebServer:
|
|||
server._handle_GET(self)
|
||||
|
||||
self.http_server = http.server.ThreadingHTTPServer(("", 0), TestWebHandler)
|
||||
self.server_thread = threading.Thread(target=self.http_server.serve_forever)
|
||||
self.server_thread = threading.Thread(target=self._do_serve)
|
||||
self.server_thread.daemon = True
|
||||
self.handlers = {}
|
||||
|
||||
self.server_port = self.http_server.server_port
|
||||
|
||||
def _do_serve(self):
|
||||
self.http_server.serve_forever(poll_interval=0.01)
|
||||
|
||||
def make_url(self, path: str) -> str:
|
||||
return f"http://localhost:{self.server_port}{path}"
|
||||
|
||||
|
|
@ -88,10 +108,12 @@ class TestWebServer:
|
|||
response.write_to(handler)
|
||||
|
||||
def __enter__(self):
|
||||
with dumb_trace("__enter__"):
|
||||
self.server_thread.start()
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
with dumb_trace("__exit__"):
|
||||
del exc_type
|
||||
del exc_value
|
||||
del traceback
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue