Skip to content

Commit f583a11

Browse files
authored
Add more gateway tests (#1078)
* add more gateway tests * fix mock gateway
1 parent 884b72e commit f583a11

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

jupyter_server/gateway/handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class GatewayWebSocketClient(LoggingConfigurable):
138138
"""Proxy web socket connection to a kernel/enterprise gateway."""
139139

140140
def __init__(self, **kwargs):
141-
super().__init__(**kwargs)
141+
super().__init__()
142142
self.kernel_id = None
143143
self.ws = None
144144
self.ws_future: Future = Future()

tests/test_gateway.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,12 @@ async def mock_gateway_request(url, **kwargs):
104104
else:
105105
raise HTTPError(404, message="Kernelspec does not exist: %s" % requested_kernelspec)
106106

107+
# Fetch kernelspec asset
108+
if endpoint.rfind("/kernelspecs/") >= 0 and method == "GET":
109+
response_buf = BytesIO(b"foo")
110+
response = await ensure_async(HTTPResponse(request, 200, buffer=response_buf))
111+
return response
112+
107113
# Create kernel
108114
if endpoint.endswith("/api/kernels") and method == "POST":
109115
json_body = json.loads(kwargs["body"])
@@ -393,7 +399,7 @@ async def test_gateway_class_mappings(init_gateway, jp_serverapp):
393399
assert jp_serverapp.kernel_spec_manager_class.__name__ == "GatewayKernelSpecManager"
394400

395401

396-
async def test_gateway_get_kernelspecs(init_gateway, jp_fetch):
402+
async def test_gateway_get_kernelspecs(init_gateway, jp_fetch, jp_serverapp):
397403
# Validate that kernelspecs come from gateway.
398404
with mocked_gateway:
399405
r = await jp_fetch("api", "kernelspecs", method="GET")
@@ -412,6 +418,10 @@ async def test_gateway_get_named_kernelspec(init_gateway, jp_fetch):
412418
kspec_foo = json.loads(r.body.decode("utf-8"))
413419
assert kspec_foo.get("name") == "kspec_foo"
414420

421+
r = await jp_fetch("kernelspecs", "kspec_foo", "hi", method="GET")
422+
assert r.code == 200
423+
assert r.body == b"foo"
424+
415425
with pytest.raises(tornado.httpclient.HTTPClientError) as e:
416426
await jp_fetch("api", "kernelspecs", "no_such_spec", method="GET")
417427
assert expected_http_error(e, 404)
@@ -443,7 +453,7 @@ async def test_gateway_session_lifecycle(init_gateway, jp_root_dir, jp_fetch):
443453
assert await is_kernel_running(jp_fetch, kernel_id) is False
444454

445455

446-
async def test_gateway_kernel_lifecycle(init_gateway, jp_fetch):
456+
async def test_gateway_kernel_lifecycle(init_gateway, jp_serverapp, jp_ws_fetch, jp_fetch):
447457
# Validate kernel lifecycle functions; create, interrupt, restart and delete.
448458

449459
# create
@@ -452,6 +462,12 @@ async def test_gateway_kernel_lifecycle(init_gateway, jp_fetch):
452462
# ensure kernel still considered running
453463
assert await is_kernel_running(jp_fetch, kernel_id) is True
454464

465+
ws = await jp_ws_fetch("api", "kernels", kernel_id, "channels")
466+
ws.ping()
467+
ws.write_message(b"hi")
468+
ws.on_message(b"hi")
469+
ws.close()
470+
455471
# interrupt
456472
await interrupt_kernel(jp_fetch, kernel_id)
457473

0 commit comments

Comments
 (0)