Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Side by Side Diff: mojo/python/tests/messaging_unittest.py

Issue 644773002: mojo: Add RunLoop::Current() and refactor unit tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Follow review Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/python/tests/async_wait_unittest.py ('k') | mojo/python/tests/mojo_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import unittest 5 import unittest
6 6
7 import mojo_unittest
8
7 # pylint: disable=F0401 9 # pylint: disable=F0401
8 import mojo.embedder
9 from mojo.bindings import messaging 10 from mojo.bindings import messaging
10 from mojo import system 11 from mojo import system
11 12
12 13
13 class _ForwardingConnectionErrorHandler(messaging.ConnectionErrorHandler): 14 class _ForwardingConnectionErrorHandler(messaging.ConnectionErrorHandler):
14 15
15 def __init__(self, callback): 16 def __init__(self, callback):
16 self._callback = callback 17 self._callback = callback
17 18
18 def OnError(self, result): 19 def OnError(self, result):
19 self._callback(result) 20 self._callback(result)
20 21
21 22
22 class ConnectorTest(unittest.TestCase): 23 class ConnectorTest(mojo_unittest.MojoTestCase):
23 24
24 def setUp(self): 25 def setUp(self):
25 mojo.embedder.Init() 26 super(ConnectorTest, self).setUp()
26 self.loop = system.RunLoop()
27 self.received_messages = [] 27 self.received_messages = []
28 self.received_errors = [] 28 self.received_errors = []
29 def _OnMessage(message): 29 def _OnMessage(message):
30 self.received_messages.append(message) 30 self.received_messages.append(message)
31 return True 31 return True
32 def _OnError(result): 32 def _OnError(result):
33 self.received_errors.append(result) 33 self.received_errors.append(result)
34 handles = system.MessagePipe() 34 handles = system.MessagePipe()
35 self.connector = messaging.Connector(handles.handle1) 35 self.connector = messaging.Connector(handles.handle1)
36 self.connector.SetIncomingMessageReceiver( 36 self.connector.SetIncomingMessageReceiver(
37 messaging.ForwardingMessageReceiver(_OnMessage)) 37 messaging.ForwardingMessageReceiver(_OnMessage))
38 self.connector.SetErrorHandler( 38 self.connector.SetErrorHandler(
39 _ForwardingConnectionErrorHandler(_OnError)) 39 _ForwardingConnectionErrorHandler(_OnError))
40 self.connector.Start() 40 self.connector.Start()
41 self.handle = handles.handle0 41 self.handle = handles.handle0
42 42
43 43
44 def tearDown(self): 44 def tearDown(self):
45 self.connector = None 45 self.connector = None
46 self.handle = None 46 self.handle = None
47 self.loop = None 47 super(ConnectorTest, self).tearDown()
48 48
49 def testConnectorRead(self): 49 def testConnectorRead(self):
50 self.handle.WriteMessage() 50 self.handle.WriteMessage()
51 self.loop.RunUntilIdle() 51 self.loop.RunUntilIdle()
52 self.assertTrue(self.received_messages) 52 self.assertTrue(self.received_messages)
53 self.assertFalse(self.received_errors) 53 self.assertFalse(self.received_errors)
54 54
55 def testConnectorWrite(self): 55 def testConnectorWrite(self):
56 self.connector.Accept(messaging.Message()) 56 self.connector.Accept(messaging.Message())
57 (result, _, _) = self.handle.ReadMessage() 57 (result, _, _) = self.handle.ReadMessage()
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 data = header.Serialize() 127 data = header.Serialize()
128 other_header = messaging.MessageHeader.Deserialize(data) 128 other_header = messaging.MessageHeader.Deserialize(data)
129 129
130 self.assertEqual(other_header.message_type, 0xdeadbeaf) 130 self.assertEqual(other_header.message_type, 0xdeadbeaf)
131 self.assertTrue(other_header.has_request_id) 131 self.assertTrue(other_header.has_request_id)
132 self.assertFalse(other_header.expects_response) 132 self.assertFalse(other_header.expects_response)
133 self.assertTrue(other_header.is_response) 133 self.assertTrue(other_header.is_response)
134 self.assertEqual(other_header.request_id, 0xdeadbeafdeadbeaf) 134 self.assertEqual(other_header.request_id, 0xdeadbeafdeadbeaf)
135 135
136 136
137 class RouterTest(unittest.TestCase): 137 class RouterTest(mojo_unittest.MojoTestCase):
138 138
139 def setUp(self): 139 def setUp(self):
140 mojo.embedder.Init() 140 super(RouterTest, self).setUp()
141 self.loop = system.RunLoop()
142 self.received_messages = [] 141 self.received_messages = []
143 self.received_errors = [] 142 self.received_errors = []
144 def _OnMessage(message): 143 def _OnMessage(message):
145 self.received_messages.append(message) 144 self.received_messages.append(message)
146 return True 145 return True
147 def _OnError(result): 146 def _OnError(result):
148 self.received_errors.append(result) 147 self.received_errors.append(result)
149 handles = system.MessagePipe() 148 handles = system.MessagePipe()
150 self.router = messaging.Router(handles.handle1) 149 self.router = messaging.Router(handles.handle1)
151 self.router.SetIncomingMessageReceiver( 150 self.router.SetIncomingMessageReceiver(
152 messaging.ForwardingMessageReceiver(_OnMessage)) 151 messaging.ForwardingMessageReceiver(_OnMessage))
153 self.router.SetErrorHandler( 152 self.router.SetErrorHandler(
154 _ForwardingConnectionErrorHandler(_OnError)) 153 _ForwardingConnectionErrorHandler(_OnError))
155 self.router.Start() 154 self.router.Start()
156 self.handle = handles.handle0 155 self.handle = handles.handle0
157 156
158 def tearDown(self): 157 def tearDown(self):
159 self.router = None 158 self.router = None
160 self.handle = None 159 self.handle = None
161 self.loop = None 160 super(RouterTest, self).tearDown()
162 161
163 def testSimpleMessage(self): 162 def testSimpleMessage(self):
164 header_data = messaging.MessageHeader(0, messaging.NO_FLAG).Serialize() 163 header_data = messaging.MessageHeader(0, messaging.NO_FLAG).Serialize()
165 message = messaging.Message(header_data) 164 message = messaging.Message(header_data)
166 self.router.Accept(message) 165 self.router.Accept(message)
167 self.loop.RunUntilIdle() 166 self.loop.RunUntilIdle()
168 self.assertFalse(self.received_errors) 167 self.assertFalse(self.received_errors)
169 self.assertFalse(self.received_messages) 168 self.assertFalse(self.received_messages)
170 (res, data, _) = self.handle.ReadMessage(bytearray(len(header_data))) 169 (res, data, _) = self.handle.ReadMessage(bytearray(len(header_data)))
171 self.assertEquals(system.RESULT_OK, res) 170 self.assertEquals(system.RESULT_OK, res)
(...skipping 26 matching lines...) Expand all
198 self.assertNotEquals(message_header.request_id, 0) 197 self.assertNotEquals(message_header.request_id, 0)
199 response_header_data = messaging.MessageHeader( 198 response_header_data = messaging.MessageHeader(
200 0, 199 0,
201 messaging.MESSAGE_IS_RESPONSE_FLAG, 200 messaging.MESSAGE_IS_RESPONSE_FLAG,
202 message_header.request_id).Serialize() 201 message_header.request_id).Serialize()
203 self.handle.WriteMessage(response_header_data) 202 self.handle.WriteMessage(response_header_data)
204 self.loop.RunUntilIdle() 203 self.loop.RunUntilIdle()
205 self.assertFalse(self.received_errors) 204 self.assertFalse(self.received_errors)
206 self.assertEquals(len(back_messages), 1) 205 self.assertEquals(len(back_messages), 1)
207 self.assertEquals(back_messages[0].data, response_header_data) 206 self.assertEquals(back_messages[0].data, response_header_data)
OLDNEW
« no previous file with comments | « mojo/python/tests/async_wait_unittest.py ('k') | mojo/python/tests/mojo_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698