Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
    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])
Exemplo n.º 10
0
    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])
Exemplo n.º 11
0
 def NewRequest(self):
     pipe = mojo_system.MessagePipe()
     return (self.Proxy(pipe.handle0),
             reflection.InterfaceRequest(pipe.handle1))
Exemplo n.º 12
0
 def testCreateMessagePipeWithOptions(self):
     self._TestMessageHandleCreation(
         system.MessagePipe(system.CreateMessagePipeOptions()))
Exemplo n.º 13
0
 def testCreateMessagePipeWithNoneOptions(self):
     self._TestMessageHandleCreation(system.MessagePipe(None))
Exemplo n.º 14
0
 def testCreateMessagePipe(self):
     self._TestMessageHandleCreation(system.MessagePipe())
Exemplo n.º 15
0
    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)
Exemplo n.º 16
0
def _NewHandle():
    return mojo_system.MessagePipe().handle0
Exemplo n.º 17
0
 def testImportedClient(self):
     pipe = system.MessagePipe()
     regression_tests_mojom.InterfaceWithClientImported.manager.Proxy(
         pipe.handle0)
Exemplo n.º 18
0
def _BuildProxy(impl):
  pipe = system.MessagePipe()
  impl.__class__.manager.Bind(impl, pipe.handle0)
  return impl.__class__.manager.Proxy(pipe.handle1)