Beispiel #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)
Beispiel #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)
 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)
Beispiel #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)
 def setUp(self):
     mojo.embedder.Init()
     self.loop = system.RunLoop()
     self.array = []
     self.handles = system.MessagePipe()
     self.cancel = self.handles.handle0.AsyncWait(
         system.HANDLE_SIGNAL_READABLE, system.DEADLINE_INDEFINITE,
         self._OnResult)
Beispiel #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)
Beispiel #7
0
    def testWaitOverMessagePipe(self):
        handles = system.MessagePipe()
        handle = handles.handle0

        self.assertEquals(
            system.RESULT_OK,
            handle.Wait(system.HANDLE_SIGNAL_WRITABLE,
                        system.DEADLINE_INDEFINITE))
        self.assertEquals(system.RESULT_DEADLINE_EXCEEDED,
                          handle.Wait(system.HANDLE_SIGNAL_READABLE, 0))

        handles.handle1.WriteMessage()

        self.assertEquals(
            system.RESULT_OK,
            handle.Wait(system.HANDLE_SIGNAL_READABLE,
                        system.DEADLINE_INDEFINITE))
Beispiel #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
Beispiel #9
0
    def setUp(self):
        mojo.embedder.Init()
        self.loop = system.RunLoop()
        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.router = messaging.Router(handles.handle1)
        self.router.SetIncomingMessageReceiver(
            messaging.ForwardingMessageReceiver(_OnMessage))
        self.router.SetErrorHandler(
            _ForwardingConnectionErrorHandler(_OnError))
        self.router.Start()
        self.handle = handles.handle0
Beispiel #10
0
    def testWaitOverManyMessagePipe(self):
        handles = system.MessagePipe()
        handle0 = handles.handle0
        handle1 = handles.handle1

        self.assertEquals(
            0,
            system.WaitMany([(handle0, system.HANDLE_SIGNAL_WRITABLE),
                             (handle1, system.HANDLE_SIGNAL_WRITABLE)],
                            system.DEADLINE_INDEFINITE))
        self.assertEquals(
            system.RESULT_DEADLINE_EXCEEDED,
            system.WaitMany([(handle0, system.HANDLE_SIGNAL_READABLE),
                             (handle1, system.HANDLE_SIGNAL_READABLE)], 0))

        handle0.WriteMessage()

        self.assertEquals(
            1,
            system.WaitMany([(handle0, system.HANDLE_SIGNAL_READABLE),
                             (handle1, system.HANDLE_SIGNAL_READABLE)],
                            system.DEADLINE_INDEFINITE))
Beispiel #11
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])
Beispiel #12
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])
Beispiel #13
0
def _BuildProxy(impl):
    pipe = system.MessagePipe()
    impl.__class__.manager.Bind(impl, pipe.handle0)
    return impl.__class__.manager.Proxy(pipe.handle1)
 def testImportedClient(self):
     pipe = system.MessagePipe()
     regression_tests_mojom.InterfaceWithClientImported.manager.Proxy(
         pipe.handle0)
Beispiel #15
0
 def testCreateMessagePipeWithOptions(self):
     self._TestMessageHandleCreation(
         system.MessagePipe(system.CreateMessagePipeOptions()))
Beispiel #16
0
 def testCreateMessagePipeWithNoneOptions(self):
     self._TestMessageHandleCreation(system.MessagePipe(None))
Beispiel #17
0
 def testCreateMessagePipe(self):
     self._TestMessageHandleCreation(system.MessagePipe())