17
17
from jupyter_server .utils import url_path_join
18
18
19
19
20
+ TEST_TIMEOUT = 20
21
+
22
+
20
23
j = lambda r : json .loads (r .body .decode ())
21
24
22
25
@@ -142,12 +145,14 @@ def session_is_ready(jp_serverapp):
142
145
"""
143
146
144
147
async def _ (session_id ):
145
- sm = jp_serverapp .session_manager
146
148
mkm = jp_serverapp .kernel_manager
147
- session = await sm .get_session (session_id = session_id )
148
- kernel_id = session ["kernel" ]["id" ]
149
- kernel = mkm .get_kernel (kernel_id )
150
- await kernel .ready
149
+ if getattr (mkm , "use_pending_kernels" , False ):
150
+ sm = jp_serverapp .session_manager
151
+ session = await sm .get_session (session_id = session_id )
152
+ kernel_id = session ["kernel" ]["id" ]
153
+ kernel = mkm .get_kernel (kernel_id )
154
+ if getattr (kernel , "ready" ):
155
+ await kernel .ready
151
156
152
157
return _
153
158
@@ -195,9 +200,8 @@ def assert_session_equality(actual, expected):
195
200
assert_kernel_equality (actual ["kernel" ], expected ["kernel" ])
196
201
197
202
198
- async def test_create (
199
- session_client , jp_base_url , jp_cleanup_subprocesses , jp_serverapp , session_is_ready
200
- ):
203
+ @pytest .mark .timeout (TEST_TIMEOUT )
204
+ async def test_create (session_client , jp_base_url , jp_cleanup_subprocesses , jp_serverapp ):
201
205
# Make sure no sessions exist.
202
206
resp = await session_client .list ()
203
207
sessions = j (resp )
@@ -241,6 +245,7 @@ async def test_create(
241
245
await jp_cleanup_subprocesses ()
242
246
243
247
248
+ @pytest .mark .timeout (TEST_TIMEOUT )
244
249
async def test_create_bad (
245
250
session_client , jp_base_url , jp_cleanup_subprocesses , jp_serverapp , jp_kernelspecs
246
251
):
@@ -261,6 +266,7 @@ async def test_create_bad(
261
266
await jp_cleanup_subprocesses ()
262
267
263
268
269
+ @pytest .mark .timeout (TEST_TIMEOUT )
264
270
async def test_create_bad_pending (
265
271
session_client , jp_base_url , jp_ws_fetch , jp_cleanup_subprocesses , jp_serverapp , jp_kernelspecs
266
272
):
@@ -293,25 +299,36 @@ async def test_create_bad_pending(
293
299
await jp_cleanup_subprocesses ()
294
300
295
301
296
- async def test_create_file_session (session_client , jp_cleanup_subprocesses , jp_serverapp ):
302
+ @pytest .mark .timeout (TEST_TIMEOUT )
303
+ async def test_create_file_session (
304
+ session_client , jp_cleanup_subprocesses , jp_serverapp , session_is_ready
305
+ ):
297
306
resp = await session_client .create ("foo/nb1.py" , type = "file" )
298
307
assert resp .code == 201
299
308
newsession = j (resp )
300
309
assert newsession ["path" ] == "foo/nb1.py"
301
310
assert newsession ["type" ] == "file"
311
+ sid = newsession ["id" ]
312
+ await session_is_ready (sid )
302
313
await jp_cleanup_subprocesses ()
303
314
304
315
305
- async def test_create_console_session (session_client , jp_cleanup_subprocesses , jp_serverapp ):
316
+ @pytest .mark .timeout (TEST_TIMEOUT )
317
+ async def test_create_console_session (
318
+ session_client , jp_cleanup_subprocesses , jp_serverapp , session_is_ready
319
+ ):
306
320
resp = await session_client .create ("foo/abc123" , type = "console" )
307
321
assert resp .code == 201
308
322
newsession = j (resp )
309
323
assert newsession ["path" ] == "foo/abc123"
310
324
assert newsession ["type" ] == "console"
311
325
# Need to find a better solution to this.
326
+ sid = newsession ["id" ]
327
+ await session_is_ready (sid )
312
328
await jp_cleanup_subprocesses ()
313
329
314
330
331
+ @pytest .mark .timeout (TEST_TIMEOUT )
315
332
async def test_create_deprecated (session_client , jp_cleanup_subprocesses , jp_serverapp ):
316
333
resp = await session_client .create_deprecated ("foo/nb1.ipynb" )
317
334
assert resp .code == 201
@@ -320,9 +337,11 @@ async def test_create_deprecated(session_client, jp_cleanup_subprocesses, jp_ser
320
337
assert newsession ["type" ] == "notebook"
321
338
assert newsession ["notebook" ]["path" ] == "foo/nb1.ipynb"
322
339
# Need to find a better solution to this.
340
+ sid = newsession ["id" ]
323
341
await jp_cleanup_subprocesses ()
324
342
325
343
344
+ @pytest .mark .timeout (TEST_TIMEOUT )
326
345
async def test_create_with_kernel_id (
327
346
session_client , jp_fetch , jp_base_url , jp_cleanup_subprocesses , jp_serverapp
328
347
):
@@ -354,16 +373,23 @@ async def test_create_with_kernel_id(
354
373
await jp_cleanup_subprocesses ()
355
374
356
375
357
- async def test_create_with_bad_kernel_id (session_client , jp_cleanup_subprocesses , jp_serverapp ):
376
+ @pytest .mark .timeout (TEST_TIMEOUT )
377
+ async def test_create_with_bad_kernel_id (
378
+ session_client , jp_cleanup_subprocesses , jp_serverapp , session_is_ready
379
+ ):
358
380
resp = await session_client .create ("foo/nb1.py" , type = "file" )
359
381
assert resp .code == 201
360
382
newsession = j (resp )
383
+ sid = newsession ["id" ]
384
+ await session_is_ready (sid )
385
+
361
386
# TODO
362
387
assert newsession ["path" ] == "foo/nb1.py"
363
388
assert newsession ["type" ] == "file"
364
389
await jp_cleanup_subprocesses ()
365
390
366
391
392
+ @pytest .mark .timeout (TEST_TIMEOUT )
367
393
async def test_delete (session_client , jp_cleanup_subprocesses , jp_serverapp , session_is_ready ):
368
394
resp = await session_client .create ("foo/nb1.ipynb" )
369
395
@@ -385,10 +411,12 @@ async def test_delete(session_client, jp_cleanup_subprocesses, jp_serverapp, ses
385
411
await jp_cleanup_subprocesses ()
386
412
387
413
388
- async def test_modify_path (session_client , jp_cleanup_subprocesses , jp_serverapp ):
414
+ @pytest .mark .timeout (TEST_TIMEOUT )
415
+ async def test_modify_path (session_client , jp_cleanup_subprocesses , jp_serverapp , session_is_ready ):
389
416
resp = await session_client .create ("foo/nb1.ipynb" )
390
417
newsession = j (resp )
391
418
sid = newsession ["id" ]
419
+ await session_is_ready (sid )
392
420
393
421
resp = await session_client .modify_path (sid , "nb2.ipynb" )
394
422
changed = j (resp )
@@ -398,10 +426,14 @@ async def test_modify_path(session_client, jp_cleanup_subprocesses, jp_serverapp
398
426
await jp_cleanup_subprocesses ()
399
427
400
428
401
- async def test_modify_path_deprecated (session_client , jp_cleanup_subprocesses , jp_serverapp ):
429
+ @pytest .mark .timeout (TEST_TIMEOUT )
430
+ async def test_modify_path_deprecated (
431
+ session_client , jp_cleanup_subprocesses , jp_serverapp , session_is_ready
432
+ ):
402
433
resp = await session_client .create ("foo/nb1.ipynb" )
403
434
newsession = j (resp )
404
435
sid = newsession ["id" ]
436
+ await session_is_ready (sid )
405
437
406
438
resp = await session_client .modify_path_deprecated (sid , "nb2.ipynb" )
407
439
changed = j (resp )
@@ -411,10 +443,12 @@ async def test_modify_path_deprecated(session_client, jp_cleanup_subprocesses, j
411
443
await jp_cleanup_subprocesses ()
412
444
413
445
414
- async def test_modify_type (session_client , jp_cleanup_subprocesses , jp_serverapp ):
446
+ @pytest .mark .timeout (TEST_TIMEOUT )
447
+ async def test_modify_type (session_client , jp_cleanup_subprocesses , jp_serverapp , session_is_ready ):
415
448
resp = await session_client .create ("foo/nb1.ipynb" )
416
449
newsession = j (resp )
417
450
sid = newsession ["id" ]
451
+ await session_is_ready (sid )
418
452
419
453
resp = await session_client .modify_type (sid , "console" )
420
454
changed = j (resp )
@@ -424,10 +458,14 @@ async def test_modify_type(session_client, jp_cleanup_subprocesses, jp_serverapp
424
458
await jp_cleanup_subprocesses ()
425
459
426
460
427
- async def test_modify_kernel_name (session_client , jp_fetch , jp_cleanup_subprocesses , jp_serverapp ):
461
+ @pytest .mark .timeout (TEST_TIMEOUT )
462
+ async def test_modify_kernel_name (
463
+ session_client , jp_fetch , jp_cleanup_subprocesses , jp_serverapp , session_is_ready
464
+ ):
428
465
resp = await session_client .create ("foo/nb1.ipynb" )
429
466
before = j (resp )
430
467
sid = before ["id" ]
468
+ await session_is_ready (sid )
431
469
432
470
resp = await session_client .modify_kernel_name (sid , before ["kernel" ]["name" ])
433
471
after = j (resp )
@@ -448,10 +486,14 @@ async def test_modify_kernel_name(session_client, jp_fetch, jp_cleanup_subproces
448
486
await jp_cleanup_subprocesses ()
449
487
450
488
451
- async def test_modify_kernel_id (session_client , jp_fetch , jp_cleanup_subprocesses , jp_serverapp ):
489
+ @pytest .mark .timeout (TEST_TIMEOUT )
490
+ async def test_modify_kernel_id (
491
+ session_client , jp_fetch , jp_cleanup_subprocesses , jp_serverapp , session_is_ready
492
+ ):
452
493
resp = await session_client .create ("foo/nb1.ipynb" )
453
494
before = j (resp )
454
495
sid = before ["id" ]
496
+ await session_is_ready (sid )
455
497
456
498
# create a new kernel
457
499
resp = await jp_fetch ("api/kernels" , method = "POST" , allow_nonstandard_methods = True )
@@ -479,8 +521,9 @@ async def test_modify_kernel_id(session_client, jp_fetch, jp_cleanup_subprocesse
479
521
await jp_cleanup_subprocesses ()
480
522
481
523
524
+ @pytest .mark .timeout (TEST_TIMEOUT )
482
525
async def test_restart_kernel (
483
- session_client , jp_base_url , jp_fetch , jp_ws_fetch , jp_cleanup_subprocesses
526
+ session_client , jp_base_url , jp_fetch , jp_ws_fetch , jp_cleanup_subprocesses , session_is_ready
484
527
):
485
528
# Create a session.
486
529
resp = await session_client .create ("foo/nb1.ipynb" )
@@ -492,6 +535,8 @@ async def test_restart_kernel(
492
535
assert resp .headers ["Location" ] == url_path_join (
493
536
jp_base_url , "/api/sessions/" , new_session ["id" ]
494
537
)
538
+ sid = new_session ["id" ]
539
+ await session_is_ready (sid )
495
540
496
541
kid = new_session ["kernel" ]["id" ]
497
542
0 commit comments