@@ -104,6 +104,12 @@ async def mock_gateway_request(url, **kwargs):
104
104
else :
105
105
raise HTTPError (404 , message = "Kernelspec does not exist: %s" % requested_kernelspec )
106
106
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
+
107
113
# Create kernel
108
114
if endpoint .endswith ("/api/kernels" ) and method == "POST" :
109
115
json_body = json .loads (kwargs ["body" ])
@@ -393,7 +399,7 @@ async def test_gateway_class_mappings(init_gateway, jp_serverapp):
393
399
assert jp_serverapp .kernel_spec_manager_class .__name__ == "GatewayKernelSpecManager"
394
400
395
401
396
- async def test_gateway_get_kernelspecs (init_gateway , jp_fetch ):
402
+ async def test_gateway_get_kernelspecs (init_gateway , jp_fetch , jp_serverapp ):
397
403
# Validate that kernelspecs come from gateway.
398
404
with mocked_gateway :
399
405
r = await jp_fetch ("api" , "kernelspecs" , method = "GET" )
@@ -412,6 +418,10 @@ async def test_gateway_get_named_kernelspec(init_gateway, jp_fetch):
412
418
kspec_foo = json .loads (r .body .decode ("utf-8" ))
413
419
assert kspec_foo .get ("name" ) == "kspec_foo"
414
420
421
+ r = await jp_fetch ("kernelspecs" , "kspec_foo" , "hi" , method = "GET" )
422
+ assert r .code == 200
423
+ assert r .body == b"foo"
424
+
415
425
with pytest .raises (tornado .httpclient .HTTPClientError ) as e :
416
426
await jp_fetch ("api" , "kernelspecs" , "no_such_spec" , method = "GET" )
417
427
assert expected_http_error (e , 404 )
@@ -443,7 +453,7 @@ async def test_gateway_session_lifecycle(init_gateway, jp_root_dir, jp_fetch):
443
453
assert await is_kernel_running (jp_fetch , kernel_id ) is False
444
454
445
455
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 ):
447
457
# Validate kernel lifecycle functions; create, interrupt, restart and delete.
448
458
449
459
# create
@@ -452,6 +462,12 @@ async def test_gateway_kernel_lifecycle(init_gateway, jp_fetch):
452
462
# ensure kernel still considered running
453
463
assert await is_kernel_running (jp_fetch , kernel_id ) is True
454
464
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
+
455
471
# interrupt
456
472
await interrupt_kernel (jp_fetch , kernel_id )
457
473
0 commit comments