Esempio n. 1
0
    def testRequestResponse(self):
        header_data = messaging.MessageHeader(
            0, messaging.MESSAGE_EXPECTS_RESPONSE_FLAG).Serialize()
        message = messaging.Message(header_data)
        back_messages = []

        def OnBackMessage(message):
            back_messages.append(message)

        self.router.AcceptWithResponder(
            message, messaging.ForwardingMessageReceiver(OnBackMessage))
        self.loop.RunUntilIdle()
        self.assertFalse(self.received_errors)
        self.assertFalse(self.received_messages)
        (res, data, _) = self.handle.ReadMessage(bytearray(len(header_data)))
        self.assertEquals(system.RESULT_OK, res)
        message_header = messaging.MessageHeader.Deserialize(data[0])
        self.assertNotEquals(message_header.request_id, 0)
        response_header_data = messaging.MessageHeader(
            0, messaging.MESSAGE_IS_RESPONSE_FLAG,
            message_header.request_id).Serialize()
        self.handle.WriteMessage(response_header_data)
        self.loop.RunUntilIdle()
        self.assertFalse(self.received_errors)
        self.assertEquals(len(back_messages), 1)
        self.assertEquals(back_messages[0].data, response_header_data)
Esempio n. 2
0
 def testSimpleReception(self):
     header_data = messaging.MessageHeader(0, messaging.NO_FLAG).Serialize()
     self.handle.WriteMessage(header_data)
     self.loop.RunUntilIdle()
     self.assertFalse(self.received_errors)
     self.assertEquals(len(self.received_messages), 1)
     self.assertEquals(self.received_messages[0].data, header_data)
Esempio n. 3
0
    def testMessageHeaderWithRequestID(self):
        # Request message.
        header = messaging.MessageHeader(
            0xdeadbeaf, messaging.MESSAGE_EXPECTS_RESPONSE_FLAG)

        self.assertEqual(header.message_type, 0xdeadbeaf)
        self.assertTrue(header.has_request_id)
        self.assertTrue(header.expects_response)
        self.assertFalse(header.is_response)
        self.assertEqual(header.request_id, 0)

        data = header.Serialize()
        other_header = messaging.MessageHeader.Deserialize(data)

        self.assertEqual(other_header.message_type, 0xdeadbeaf)
        self.assertTrue(other_header.has_request_id)
        self.assertTrue(other_header.expects_response)
        self.assertFalse(other_header.is_response)
        self.assertEqual(other_header.request_id, 0)

        header.request_id = 0xdeadbeafdeadbeaf
        data = header.Serialize()
        other_header = messaging.MessageHeader.Deserialize(data)

        self.assertEqual(other_header.request_id, 0xdeadbeafdeadbeaf)

        # Response message.
        header = messaging.MessageHeader(0xdeadbeaf,
                                         messaging.MESSAGE_IS_RESPONSE_FLAG,
                                         0xdeadbeafdeadbeaf)

        self.assertEqual(header.message_type, 0xdeadbeaf)
        self.assertTrue(header.has_request_id)
        self.assertFalse(header.expects_response)
        self.assertTrue(header.is_response)
        self.assertEqual(header.request_id, 0xdeadbeafdeadbeaf)

        data = header.Serialize()
        other_header = messaging.MessageHeader.Deserialize(data)

        self.assertEqual(other_header.message_type, 0xdeadbeaf)
        self.assertTrue(other_header.has_request_id)
        self.assertFalse(other_header.expects_response)
        self.assertTrue(other_header.is_response)
        self.assertEqual(other_header.request_id, 0xdeadbeafdeadbeaf)
Esempio n. 4
0
def _GetMessage(method, flags, *args, **kwargs):
  if flags == messaging.MESSAGE_IS_RESPONSE_FLAG:
    struct = method.response_struct(*args, **kwargs)
  else:
    struct = method.parameters_struct(*args, **kwargs)
  header = messaging.MessageHeader(method.ordinal, flags)
  data = header.Serialize()
  (payload, handles) = struct.Serialize()
  data.extend(payload)
  return messaging.Message(data, handles, header)
Esempio n. 5
0
 def testSimpleMessage(self):
     header_data = messaging.MessageHeader(0, messaging.NO_FLAG).Serialize()
     message = messaging.Message(header_data)
     self.router.Accept(message)
     self.loop.RunUntilIdle()
     self.assertFalse(self.received_errors)
     self.assertFalse(self.received_messages)
     (res, data, _) = self.handle.ReadMessage(bytearray(len(header_data)))
     self.assertEquals(system.RESULT_OK, res)
     self.assertEquals(data[0], header_data)
Esempio n. 6
0
 def testSimpleMessageHeader(self):
     header = messaging.MessageHeader(0xdeadbeaf, messaging.NO_FLAG)
     self.assertEqual(header.message_type, 0xdeadbeaf)
     self.assertFalse(header.has_request_id)
     self.assertFalse(header.expects_response)
     self.assertFalse(header.is_response)
     data = header.Serialize()
     other_header = messaging.MessageHeader.Deserialize(data)
     self.assertEqual(other_header.message_type, 0xdeadbeaf)
     self.assertFalse(other_header.has_request_id)
     self.assertFalse(other_header.expects_response)
     self.assertFalse(other_header.is_response)