You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.8 KiB
57 lines
1.8 KiB
"""Tests buffering of execution requests."""
|
|
|
|
from .utils import wait_for_selector
|
|
|
|
|
|
def wait_for_cell_text_output(notebook, index):
|
|
cell = notebook.cells[index]
|
|
output = wait_for_selector(cell, ".output_text", single=True)
|
|
return output.text
|
|
|
|
|
|
def wait_for_kernel_ready(notebook):
|
|
wait_for_selector(notebook.browser, ".kernel_idle_icon")
|
|
|
|
|
|
def kernels_buffer_without_conn(notebook):
|
|
"""Test that execution request made while disconnected is buffered."""
|
|
# Assert that cell executed while kernel is disconnected still
|
|
# executes when reconnected
|
|
wait_for_kernel_ready(notebook)
|
|
notebook.browser.execute_script("IPython.notebook.kernel.stop_channels();")
|
|
notebook.edit_cell(index=0, content="print(1 + 2)")
|
|
notebook.execute_cell(0)
|
|
notebook.browser.execute_script("IPython.notebook.kernel.reconnect();")
|
|
wait_for_kernel_ready(notebook)
|
|
assert wait_for_cell_text_output(notebook, 0) == "3"
|
|
notebook.delete_cell(0)
|
|
|
|
|
|
def buffered_cells_execute_in_order(notebook):
|
|
"""Test that buffered requests execute in order."""
|
|
notebook.append('k=1', 'k+=1', 'k*=3', 'print(k)')
|
|
|
|
# Repeated execution of cell queued up in the kernel executes
|
|
# each execution request in order.
|
|
wait_for_kernel_ready(notebook)
|
|
notebook.browser.execute_script("IPython.notebook.kernel.stop_channels();")
|
|
# k == 1
|
|
notebook.execute_cell(1)
|
|
# k == 2
|
|
notebook.execute_cell(2)
|
|
# k == 6
|
|
notebook.execute_cell(3)
|
|
# k == 7
|
|
notebook.execute_cell(2)
|
|
notebook.execute_cell(4)
|
|
notebook.browser.execute_script("IPython.notebook.kernel.reconnect();")
|
|
wait_for_kernel_ready(notebook)
|
|
|
|
# Check that current value of k is 7
|
|
assert wait_for_cell_text_output(notebook, 4) == "7"
|
|
|
|
|
|
def test_buffering(notebook):
|
|
kernels_buffer_without_conn(notebook)
|
|
buffered_cells_execute_in_order(notebook)
|