##// END OF EJS Templates
Make nbconvert a little less chatty....
Make nbconvert a little less chatty. User don't really care what template is used by default. and no need to say where the files might be written if they won't be.

File last commit:

r20579:a81c160e
r20724:b375a3ea
Show More
serialize.js
127 lines | 4.8 KiB | application/javascript | JavascriptLexer
MinRK
test binary websocket messages...
r18337 //
// Test binary messages on websockets.
// Only works on slimer for now, due to old websocket impl in phantomjs.
//
casper.notebook_test(function () {
if (!this.slimerjs) {
console.log("Can't test binary websockets on phantomjs.");
return;
}
// create EchoBuffers target on js-side.
// it just captures and echos comm messages.
this.then(function () {
var success = this.evaluate(function () {
IPython._msgs = [];
var EchoBuffers = function(comm) {
this.comm = comm;
this.comm.on_msg($.proxy(this.on_msg, this));
};
EchoBuffers.prototype.on_msg = function (msg) {
IPython._msgs.push(msg);
this.comm.send(msg.content.data, {}, {}, msg.buffers);
};
IPython.notebook.kernel.comm_manager.register_target("echo", function (comm) {
return new EchoBuffers(comm);
});
return true;
});
this.test.assertEquals(success, true, "Created echo comm target");
});
// Create a similar comm that captures messages Python-side
this.then(function () {
var index = this.append_cell([
"import os",
"from IPython.kernel.comm import Comm",
"comm = Comm(target_name='echo')",
"msgs = []",
"def on_msg(msg):",
" msgs.append(msg)",
"comm.on_msg(on_msg)"
].join('\n'), 'code');
this.execute_cell(index);
});
// send a message with binary data
this.then(function () {
var index = this.append_cell([
"buffers = [b'\\xFF\\x00', b'\\x00\\x01\\x02']",
Jason Grout
Add test to check that deserializing messages preserves the message order
r20449 "comm.send(data='message 0', buffers=buffers)",
"comm.send(data='message 1')",
"comm.send(data='message 2', buffers=buffers)",
MinRK
test binary websocket messages...
r18337 ].join('\n'), 'code');
this.execute_cell(index);
});
// wait for capture
this.waitFor(function () {
return this.evaluate(function () {
Jason Grout
Add test to check that deserializing messages preserves the message order
r20449 return IPython._msgs.length >= 3;
MinRK
test binary websocket messages...
r18337 });
});
// validate captured buffers js-side
this.then(function () {
var msgs = this.evaluate(function () {
return IPython._msgs;
});
Jason Grout
Add test to check that deserializing messages preserves the message order
r20449 this.test.assertEquals(msgs.length, 3, "Captured three comm messages");
// check the messages came in the right order
this.test.assertEquals(msgs[0].content.data, "message 0", "message 0 processed first");
this.test.assertEquals(msgs[0].buffers.length, 2, "comm message 0 has two buffers");
this.test.assertEquals(msgs[1].content.data, "message 1", "message 1 processed second");
this.test.assertEquals(msgs[1].buffers.length, 0, "comm message 1 has no buffers");
this.test.assertEquals(msgs[2].content.data, "message 2", "message 2 processed third");
this.test.assertEquals(msgs[2].buffers.length, 2, "comm message 2 has two buffers");
MinRK
test binary websocket messages...
r18337
// extract attributes to test in evaluate,
// because the raw DataViews can't be passed across
Jason Grout
Add test to check that deserializing messages preserves the message order
r20449 var buf_info = function (message, index) {
var buf = IPython._msgs[message].buffers[index];
MinRK
test binary websocket messages...
r18337 var data = {};
data.byteLength = buf.byteLength;
data.bytes = [];
for (var i = 0; i < data.byteLength; i++) {
data.bytes.push(buf.getUint8(i));
}
return data;
};
Jason Grout
Add test to check that deserializing messages preserves the message order
r20449 var msgs_with_buffers = [0, 2];
for (var i = 0; i < msgs_with_buffers.length; i++) {
msg_index = msgs_with_buffers[i];
buf0 = this.evaluate(buf_info, msg_index, 0);
buf1 = this.evaluate(buf_info, msg_index, 1);
this.test.assertEquals(buf0.byteLength, 2, 'buf[0] has correct size in message '+msg_index);
this.test.assertEquals(buf0.bytes, [255, 0], 'buf[0] has correct bytes in message '+msg_index);
this.test.assertEquals(buf1.byteLength, 3, 'buf[1] has correct size in message '+msg_index);
this.test.assertEquals(buf1.bytes, [0, 1, 2], 'buf[1] has correct bytes in message '+msg_index);
}
MinRK
test binary websocket messages...
r18337 });
// validate captured buffers Python-side
this.then(function () {
var index = this.append_cell([
Min RK
update js serialize test...
r20579 "assert len(msgs) == 3, len(msgs)",
MinRK
test binary websocket messages...
r18337 "bufs = msgs[0]['buffers']",
"assert len(bufs) == len(buffers), bufs",
"assert bufs[0].bytes == buffers[0], bufs[0].bytes",
"assert bufs[1].bytes == buffers[1], bufs[1].bytes",
"1",
].join('\n'), 'code');
this.execute_cell(index);
this.wait_for_output(index);
this.then(function () {
var out = this.get_output_cell(index);
Min RK
update js serialize test...
r20579 this.test.assertEquals(out.data['text/plain'], '1', "Python received buffers");
MinRK
test binary websocket messages...
r18337 });
});
});