def test_create_glir_message_base64(): arr = np.zeros((3, 2)).astype(np.float32) arr2 = np.ones((4, 5)).astype(np.int16) commands = [('CREATE', 1, 'VertexBuffer'), ('UNIFORM', 2, 'u_scale', 'vec3', (1, 2, 3)), ('DATA', 3, 0, arr), ('UNIFORM', 4, 'u_pan', 'vec2', np.array([1, 2, 3])), ('DATA', 5, 20, arr2)] msg = create_glir_message(commands, array_serialization='base64') assert_equal(msg['msg_type'], 'glir_commands') commands_serialized = msg['commands'] assert_equal(commands_serialized, [['CREATE', 1, 'VertexBuffer'], ['UNIFORM', 2, 'u_scale', 'vec3', [1, 2, 3]], ['DATA', 3, 0, { 'buffer_index': 0 }], ['UNIFORM', 4, 'u_pan', 'vec2', [1, 2, 3]], ['DATA', 5, 20, { 'buffer_index': 1 }]]) buffers_serialized = msg['buffers'] buf0 = buffers_serialized[0] assert_equal(buf0['storage_type'], 'base64') assert_equal(buf0['buffer'], 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') buf1 = buffers_serialized[1] assert_equal(buf0['storage_type'], 'base64') assert_equal(buf1['buffer'], 'AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAA==')
def test_create_glir_message_binary(): arr = np.zeros((3, 2)).astype(np.float32) arr2 = np.ones((4, 5)).astype(np.int16) commands = [('CREATE', 1, 'VertexBuffer'), ('UNIFORM', 2, 'u_scale', 'vec3', (1, 2, 3)), ('DATA', 3, 0, arr), ('UNIFORM', 4, 'u_pan', 'vec2', np.array([1, 2, 3])), ('DATA', 5, 20, arr2)] msg = create_glir_message(commands) assert_equal(msg['msg_type'], 'glir_commands') commands_serialized = msg['commands'] assert_equal(commands_serialized, [['CREATE', 1, 'VertexBuffer'], ['UNIFORM', 2, 'u_scale', 'vec3', [1, 2, 3]], ['DATA', 3, 0, { 'buffer_index': 0 }], ['UNIFORM', 4, 'u_pan', 'vec2', [1, 2, 3]], ['DATA', 5, 20, { 'buffer_index': 1 }]]) buffers_serialized = msg['buffers'] buf0 = buffers_serialized[0] assert_equal( buf0, b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' ) # noqa buf1 = buffers_serialized[1] assert_equal( buf1, b'\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00' ) # noqa
def test_create_glir_message_base64(): arr = np.zeros((3, 2)).astype(np.float32) arr2 = np.ones((4, 5)).astype(np.int16) commands = [('CREATE', 1, 'VertexBuffer'), ('UNIFORM', 2, 'u_scale', 'vec3', (1, 2, 3)), ('DATA', 3, 0, arr), ('UNIFORM', 4, 'u_pan', 'vec2', np.array([1, 2, 3])), ('DATA', 5, 20, arr2)] msg = create_glir_message(commands, array_serialization='base64') assert_equal(msg['msg_type'], 'glir_commands') commands_serialized = msg['commands'] assert_equal(commands_serialized, [['CREATE', 1, 'VertexBuffer'], ['UNIFORM', 2, 'u_scale', 'vec3', [1, 2, 3]], ['DATA', 3, 0, {'buffer_index': 0, 'buffer_shape': [3, 2], 'buffer_dtype': 'float32'}], ['UNIFORM', 4, 'u_pan', 'vec2', [1, 2, 3]], ['DATA', 5, 20, {'buffer_index': 1, 'buffer_shape': [4, 5], 'buffer_dtype': 'int16'}]]) buffers_serialized = msg['buffers'] buf0 = buffers_serialized[0] assert_equal(buf0['storage_type'], 'base64') assert_equal(buf0['buffer'], 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') buf1 = buffers_serialized[1] assert_equal(buf0['storage_type'], 'base64') assert_equal(buf1['buffer'], 'AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAA==')
def test_create_glir_message_binary(): arr = np.zeros((3, 2)).astype(np.float32) arr2 = np.ones((4, 5)).astype(np.int16) commands = [('CREATE', 1, 'VertexBuffer'), ('UNIFORM', 2, 'u_scale', 'vec3', (1, 2, 3)), ('DATA', 3, 0, arr), ('UNIFORM', 4, 'u_pan', 'vec2', np.array([1, 2, 3])), ('DATA', 5, 20, arr2)] msg = create_glir_message(commands) assert_equal(msg['msg_type'], 'glir_commands') commands_serialized = msg['commands'] assert_equal(commands_serialized, [['CREATE', 1, 'VertexBuffer'], ['UNIFORM', 2, 'u_scale', 'vec3', [1, 2, 3]], ['DATA', 3, 0, {'buffer_index': 0}], ['UNIFORM', 4, 'u_pan', 'vec2', [1, 2, 3]], ['DATA', 5, 20, {'buffer_index': 1}]]) buffers_serialized = msg['buffers'] buf0 = buffers_serialized[0] assert_equal(buf0, b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') # noqa buf1 = buffers_serialized[1] assert_equal(buf1, b'\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00') # noqa
def send_glir_commands(self, commands): # TODO: check whether binary websocket is available (ipython >= 3) # Until IPython 3.0 is released, use base64. array_serialization = "base64" # array_serialization = 'binary' if array_serialization == "base64": msg = create_glir_message(commands, "base64") msg["array_serialization"] = "base64" self.send(msg) elif array_serialization == "binary": msg = create_glir_message(commands, "binary") msg["array_serialization"] = "binary" # Remove the buffers from the JSON message: they will be sent # independently via binary WebSocket. buffers = msg.pop("buffers") self.comm.send({"method": "custom", "content": msg}, buffers=buffers)
def send_glir_commands(self, commands): # TODO: check whether binary websocket is available (ipython >= 3) # Until IPython 3.0 is released, use base64. array_serialization = 'base64' # array_serialization = 'binary' if array_serialization == 'base64': msg = create_glir_message(commands, 'base64') msg['array_serialization'] = 'base64' self.send(msg) elif array_serialization == 'binary': msg = create_glir_message(commands, 'binary') msg['array_serialization'] = 'binary' # Remove the buffers from the JSON message: they will be sent # independently via binary WebSocket. buffers = msg.pop('buffers') self.comm.send({"method": "custom", "content": msg}, buffers=buffers)