def testSendHandleOverMessagePipe(self): handles = system.MessagePipe() handles_to_send = system.MessagePipe() handles.handle0.WriteMessage( handles=[handles_to_send.handle0, handles_to_send.handle1]) (res, buffers, next_message) = handles.handle1.ReadMessage(max_number_of_handles=2) self.assertFalse(handles_to_send.handle0.IsValid()) self.assertFalse(handles_to_send.handle1.IsValid()) self.assertEquals(system.RESULT_OK, res) self.assertEquals(None, next_message) self.assertEquals(None, buffers[0]) self.assertEquals(2, len(buffers[1])) handles = buffers[1] for handle in handles: self.assertTrue(handle.IsValid()) (res, buffers, next_message) = handle.ReadMessage() self.assertEquals(system.RESULT_SHOULD_WAIT, res) for handle in handles: handle.WriteMessage() for handle in handles: (res, buffers, next_message) = handle.ReadMessage() self.assertEquals(system.RESULT_OK, res)
def testConnectorWriteHandle(self): new_handles = system.MessagePipe() self.handle.WriteMessage(None, [new_handles.handle0]) self.loop.RunUntilIdle() self.assertTrue(self.received_messages) self.assertTrue(self.received_messages[0].handles) self.assertFalse(self.received_errors)
def setUp(self): super(AsyncWaitTest, self).setUp() self.array = [] self.handles = system.MessagePipe() self.cancel = self.handles.handle0.AsyncWait( system.HANDLE_SIGNAL_READABLE, system.DEADLINE_INDEFINITE, self._OnResult)
def testSendEmptyDataOverMessagePipe(self): handles = system.MessagePipe() handles.handle0.WriteMessage(None) (res, buffers, next_message) = handles.handle1.ReadMessage() self.assertEquals(system.RESULT_OK, res) self.assertEquals(None, next_message) self.assertEquals((None, []), buffers)
def ToHandle(self, value): if not value: return mojo_system.Handle() if isinstance(value, reflection.InterfaceProxy): return value.manager.PassMessagePipe() pipe = mojo_system.MessagePipe() self.interface.manager.Bind(value, pipe.handle0) return pipe.handle1
def testSendBytesOverMessagePipe(self): handles = system.MessagePipe() data = _GetRandomBuffer(DATA_SIZE) handles.handle0.WriteMessage(data) (res, buffers, next_message) = handles.handle1.ReadMessage() self.assertEquals(system.RESULT_RESOURCE_EXHAUSTED, res) self.assertEquals(None, buffers) self.assertEquals((DATA_SIZE, 0), next_message) result = bytearray(DATA_SIZE) (res, buffers, next_message) = handles.handle1.ReadMessage(result) self.assertEquals(system.RESULT_OK, res) self.assertEquals(None, next_message) self.assertEquals((data, []), buffers)
def testNewToNew(self): pipe = mojo_system.MessagePipe() input_struct = test_structs_mojom.MultiVersionStruct() input_struct.f_int32 = 123 input_struct.f_rect = self.MakeRect(5) input_struct.f_string = 'hello' input_struct.f_array = [10, 9, 8] input_struct.f_message_pipe = pipe.handle0 input_struct.f_bool = True input_struct.f_int16 = 256 expected = test_structs_mojom.MultiVersionStructV7() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' expected.f_array = [10, 9, 8] expected.f_message_pipe = pipe.handle0 expected.f_bool = True output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV7, input_struct) self.assertEquals(output, expected) expected = test_structs_mojom.MultiVersionStructV5() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' expected.f_array = [10, 9, 8] output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV5, input_struct) self.assertEquals(output, expected) expected = test_structs_mojom.MultiVersionStructV3() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV3, input_struct) self.assertEquals(output, expected) expected = test_structs_mojom.MultiVersionStructV1() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV1, input_struct) self.assertEquals(output, expected) expected = test_structs_mojom.MultiVersionStructV0() expected.f_int32 = 123 output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV0, input_struct) self.assertEquals(output, expected)
def setUp(self): super(ConnectorTest, self).setUp() self.received_messages = [] self.received_errors = [] def _OnMessage(message): self.received_messages.append(message) return True def _OnError(result): self.received_errors.append(result) handles = system.MessagePipe() self.connector = messaging.Connector(handles.handle1) self.connector.SetIncomingMessageReceiver( messaging.ForwardingMessageReceiver(_OnMessage)) self.connector.SetErrorHandler( _ForwardingConnectionErrorHandler(_OnError)) self.connector.Start() self.handle = handles.handle0
def testWaitOverMessagePipe(self): handles = system.MessagePipe() handle = handles.handle0 (res, states) = handle.Wait(system.HANDLE_SIGNAL_WRITABLE, system.DEADLINE_INDEFINITE) self.assertEquals(system.RESULT_OK, res) self.assertEquals(system.HANDLE_SIGNAL_WRITABLE, states[0]) self.assertEquals(CoreTest.HANDLE_SIGNAL_ALL, states[1]) (res, states) = handle.Wait(system.HANDLE_SIGNAL_READABLE, 0) self.assertEquals(system.RESULT_DEADLINE_EXCEEDED, res) self.assertEquals(system.HANDLE_SIGNAL_WRITABLE, states[0]) self.assertEquals(CoreTest.HANDLE_SIGNAL_ALL, states[1]) handles.handle1.WriteMessage() (res, states) = handle.Wait(system.HANDLE_SIGNAL_READABLE, system.DEADLINE_INDEFINITE) self.assertEquals(system.RESULT_OK, res) self.assertEquals(CoreTest.HANDLE_SIGNAL_READWRITABLE, states[0]) self.assertEquals(CoreTest.HANDLE_SIGNAL_ALL, states[1])
def testWaitOverManyMessagePipe(self): handles = system.MessagePipe() handle0 = handles.handle0 handle1 = handles.handle1 (res, index, states) = system.WaitMany([(handle0, system.HANDLE_SIGNAL_WRITABLE), (handle1, system.HANDLE_SIGNAL_WRITABLE)], system.DEADLINE_INDEFINITE) self.assertEquals(system.RESULT_OK, res) self.assertEquals(0, index) self.assertEquals(system.HANDLE_SIGNAL_WRITABLE, states[0][0]) self.assertEquals(CoreTest.HANDLE_SIGNAL_ALL, states[0][1]) self.assertEquals(system.HANDLE_SIGNAL_WRITABLE, states[1][0]) self.assertEquals(CoreTest.HANDLE_SIGNAL_ALL, states[1][1]) (res, index, states) = system.WaitMany([(handle0, system.HANDLE_SIGNAL_READABLE), (handle1, system.HANDLE_SIGNAL_READABLE)], 0) self.assertEquals(system.RESULT_DEADLINE_EXCEEDED, res) self.assertEquals(None, index) self.assertEquals(system.HANDLE_SIGNAL_WRITABLE, states[0][0]) self.assertEquals(CoreTest.HANDLE_SIGNAL_ALL, states[0][1]) self.assertEquals(system.HANDLE_SIGNAL_WRITABLE, states[1][0]) self.assertEquals(CoreTest.HANDLE_SIGNAL_ALL, states[1][1]) handle0.WriteMessage() (res, index, states) = system.WaitMany([(handle0, system.HANDLE_SIGNAL_READABLE), (handle1, system.HANDLE_SIGNAL_READABLE)], system.DEADLINE_INDEFINITE) self.assertEquals(system.RESULT_OK, res) self.assertEquals(1, index) self.assertEquals(system.HANDLE_SIGNAL_WRITABLE, states[0][0]) self.assertEquals(CoreTest.HANDLE_SIGNAL_ALL, states[0][1]) self.assertEquals(CoreTest.HANDLE_SIGNAL_READWRITABLE, states[1][0]) self.assertEquals(CoreTest.HANDLE_SIGNAL_ALL, states[1][1])
def NewRequest(self): pipe = mojo_system.MessagePipe() return (self.Proxy(pipe.handle0), reflection.InterfaceRequest(pipe.handle1))
def testCreateMessagePipeWithOptions(self): self._TestMessageHandleCreation( system.MessagePipe(system.CreateMessagePipeOptions()))
def testCreateMessagePipeWithNoneOptions(self): self._TestMessageHandleCreation(system.MessagePipe(None))
def testCreateMessagePipe(self): self._TestMessageHandleCreation(system.MessagePipe())
def testOldToNew(self): v0 = test_structs_mojom.MultiVersionStructV0() v0.f_int32 = 123 expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v0) self.assertEquals(output, expected) v1 = test_structs_mojom.MultiVersionStructV1() v1.f_int32 = 123 v1.f_rect = self.MakeRect(5) expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v1) self.assertEquals(output, expected) v3 = test_structs_mojom.MultiVersionStructV3() v3.f_int32 = 123 v3.f_rect = self.MakeRect(5) v3.f_string = 'hello' expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v3) self.assertEquals(output, expected) v5 = test_structs_mojom.MultiVersionStructV5() v5.f_int32 = 123 v5.f_rect = self.MakeRect(5) v5.f_string = 'hello' v5.f_array = [10, 9, 8] expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' expected.f_array = [10, 9, 8] output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v5) self.assertEquals(output, expected) pipe = mojo_system.MessagePipe() v7 = test_structs_mojom.MultiVersionStructV7() v7.f_int32 = 123 v7.f_rect = self.MakeRect(5) v7.f_string = 'hello' v7.f_array = [10, 9, 8] v7.f_message_pipe = pipe.handle0 v7.f_bool = True expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' expected.f_array = [10, 9, 8] expected.f_message_pipe = pipe.handle0 expected.f_bool = True output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v7) self.assertEquals(output, expected)
def _NewHandle(): return mojo_system.MessagePipe().handle0
def testImportedClient(self): pipe = system.MessagePipe() regression_tests_mojom.InterfaceWithClientImported.manager.Proxy( pipe.handle0)
def _BuildProxy(impl): pipe = system.MessagePipe() impl.__class__.manager.Bind(impl, pipe.handle0) return impl.__class__.manager.Proxy(pipe.handle1)