// // Kernel tests // casper.notebook_test(function () { // test that the kernel is running this.then(function () { this.test.assert(this.kernel_running(), 'kernel is running'); }); // test list this.thenEvaluate(function () { IPython._kernels = null; IPython.notebook.kernel.list(function (data) { IPython._kernels = data; }); }); this.waitFor(function () { return this.evaluate(function () { return IPython._kernels !== null; }); }); this.then(function () { var num_kernels = this.evaluate(function () { return IPython._kernels.length; }); this.test.assertEquals(num_kernels, 1, 'one kernel running'); }); // test get_info var kernel_info = this.evaluate(function () { return { name: IPython.notebook.kernel.name, id: IPython.notebook.kernel.id }; }); this.thenEvaluate(function () { IPython._kernel_info = null; IPython.notebook.kernel.get_info(function (data) { IPython._kernel_info = data; }); }); this.waitFor(function () { return this.evaluate(function () { return IPython._kernel_info !== null; }); }); this.then(function () { var new_kernel_info = this.evaluate(function () { return IPython._kernel_info; }); this.test.assertEquals(kernel_info.name, new_kernel_info.name, 'kernel: name correct'); this.test.assertEquals(kernel_info.id, new_kernel_info.id, 'kernel: id correct'); }); // test interrupt this.thenEvaluate(function () { IPython._interrupted = false; IPython.notebook.kernel.interrupt(function () { IPython._interrupted = true; }); }); this.waitFor(function () { return this.evaluate(function () { return IPython._interrupted; }); }); this.then(function () { var interrupted = this.evaluate(function () { return IPython._interrupted; }); this.test.assert(interrupted, 'kernel was interrupted'); }); // test restart this.thenEvaluate(function () { IPython.notebook.kernel.restart(); }); this.waitFor(function () { return this.evaluate(function () { return IPython.notebook.kernel.is_fully_disconnected(); }); }); this.waitFor(function () { return this.evaluate(function () { return IPython.notebook.kernel.is_connected(); }); }); this.then(function () { this.test.assert(this.kernel_running(), 'kernel restarted'); }); // test reconnect this.thenEvaluate(function () { IPython.notebook.kernel.stop_channels(); }); this.waitFor(function () { return this.evaluate(function () { return IPython.notebook.kernel.is_fully_disconnected(); }); }); this.thenEvaluate(function () { IPython.notebook.kernel.reconnect(); }); this.waitFor(function () { return this.evaluate(function () { return IPython.notebook.kernel.is_connected(); }); }); this.then(function () { this.test.assert(this.kernel_running(), 'kernel reconnected'); }); // test kernel_info_request this.evaluate(function () { IPython.notebook.kernel.kernel_info( function(msg){ IPython._kernel_info_response = msg; }); }); this.waitFor( function () { return this.evaluate(function(){ return IPython._kernel_info_response; }); }); this.then(function () { var kernel_info_response = this.evaluate(function(){ return IPython._kernel_info_response; }); this.test.assertTrue( kernel_info_response.msg_type === 'kernel_info_reply', 'Kernel info request return kernel_info_reply'); this.test.assertTrue( kernel_info_response.content !== undefined, 'Kernel_info_reply is not undefined'); }); // test kill this.thenEvaluate(function () { IPython.notebook.kernel.kill(); }); this.waitFor(function () { return this.evaluate(function () { return IPython.notebook.kernel.is_fully_disconnected(); }); }); this.then(function () { this.test.assert(!this.kernel_running(), 'kernel is not running'); }); // test start var url; this.then(function () { url = this.evaluate(function () { return IPython.notebook.kernel.start(); }); }); this.then(function () { this.test.assertEquals(url, "/api/kernels", "start url is correct"); }); this.waitFor(function () { return this.evaluate(function () { return IPython.notebook.kernel.is_connected(); }); }); this.then(function () { this.test.assert(this.kernel_running(), 'kernel is running'); }); // test start with parameters this.thenEvaluate(function () { IPython.notebook.kernel.kill(); }); this.waitFor(function () { return this.evaluate(function () { return IPython.notebook.kernel.is_fully_disconnected(); }); }); this.then(function () { url = this.evaluate(function () { return IPython.notebook.kernel.start({foo: "bar"}); }); }); this.then(function () { this.test.assertEquals(url, "/api/kernels?foo=bar", "start url with params is correct"); }); this.waitFor(function () { return this.evaluate(function () { return IPython.notebook.kernel.is_connected(); }); }); this.then(function () { this.test.assert(this.kernel_running(), 'kernel is running'); }); });