11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport random 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport sys 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport time 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport unittest 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# pylint: disable=F0401 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport mojo.embedder 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifrom mojo import system 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDATA_SIZE = 1024 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidef _GetRandomBuffer(size): 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci random.seed(size) 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return bytearray(''.join(chr(random.randint(0, 255)) for i in xrange(size))) 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass BaseMojoTest(unittest.TestCase): 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def setUp(self): 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci mojo.embedder.Init() 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass CoreTest(BaseMojoTest): 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testResults(self): 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, 0) 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_CANCELLED, 0) 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_UNKNOWN, 0) 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_INVALID_ARGUMENT, 0) 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_DEADLINE_EXCEEDED, 0) 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_NOT_FOUND, 0) 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_ALREADY_EXISTS, 0) 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_PERMISSION_DENIED, 0) 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_RESOURCE_EXHAUSTED, 0) 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_FAILED_PRECONDITION, 0) 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_ABORTED, 0) 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_OUT_OF_RANGE, 0) 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_UNIMPLEMENTED, 0) 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_INTERNAL, 0) 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_UNAVAILABLE, 0) 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_DATA_LOSS, 0) 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_BUSY, 0) 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertLess(system.RESULT_SHOULD_WAIT, 0) 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testConstants(self): 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.DEADLINE_INDEFINITE, 0) 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.HANDLE_SIGNAL_NONE, 0) 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.HANDLE_SIGNAL_READABLE, 0) 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.HANDLE_SIGNAL_WRITABLE, 0) 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.WRITE_MESSAGE_FLAG_NONE, 0) 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.READ_MESSAGE_FLAG_NONE, 0) 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.READ_MESSAGE_FLAG_MAY_DISCARD, 0) 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.WRITE_DATA_FLAG_NONE, 0) 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.WRITE_DATA_FLAG_ALL_OR_NONE, 0) 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.READ_DATA_FLAG_NONE, 0) 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.READ_DATA_FLAG_ALL_OR_NONE, 0) 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.READ_DATA_FLAG_DISCARD, 0) 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.READ_DATA_FLAG_QUERY, 0) 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(system.MAP_BUFFER_FLAG_NONE, 0) 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testGetTimeTicksNow(self): 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pt1 = time.time() 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci v1 = system.GetTimeTicksNow() 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci time.sleep(1e-3) 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci v2 = system.GetTimeTicksNow() 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pt2 = time.time() 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreater(v1, 0) 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreater(v2, v1 + 1000) 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreater(1e6 * (pt2 - pt1), v2 - v1) 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def _testHandlesCreation(self, *args): 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for handle in args: 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertTrue(handle.IsValid()) 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle.Close() 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertFalse(handle.IsValid()) 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def _TestMessageHandleCreation(self, handles): 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._testHandlesCreation(handles.handle0, handles.handle1) 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateMessagePipe(self): 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestMessageHandleCreation(system.MessagePipe()) 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateMessagePipeWithNoneOptions(self): 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestMessageHandleCreation(system.MessagePipe(None)) 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateMessagePipeWithOptions(self): 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestMessageHandleCreation( 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.MessagePipe(system.CreateMessagePipeOptions())) 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testWaitOverMessagePipe(self): 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles = system.MessagePipe() 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle = handles.handle0 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, handle.Wait( 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.HANDLE_SIGNAL_WRITABLE, system.DEADLINE_INDEFINITE)) 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_DEADLINE_EXCEEDED, 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle.Wait(system.HANDLE_SIGNAL_READABLE, 0)) 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles.handle1.WriteMessage() 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals( 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.RESULT_OK, 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle.Wait( 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.HANDLE_SIGNAL_READABLE, 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.DEADLINE_INDEFINITE)) 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testWaitOverManyMessagePipe(self): 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles = system.MessagePipe() 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle0 = handles.handle0 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle1 = handles.handle1 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals( 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 0, 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.WaitMany( 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [(handle0, system.HANDLE_SIGNAL_WRITABLE), 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (handle1, system.HANDLE_SIGNAL_WRITABLE)], 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.DEADLINE_INDEFINITE)) 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals( 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.RESULT_DEADLINE_EXCEEDED, 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.WaitMany( 1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [(handle0, system.HANDLE_SIGNAL_READABLE), 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (handle1, system.HANDLE_SIGNAL_READABLE)], 0)) 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle0.WriteMessage() 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals( 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1, 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.WaitMany( 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci [(handle0, system.HANDLE_SIGNAL_READABLE), 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (handle1, system.HANDLE_SIGNAL_READABLE)], 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.DEADLINE_INDEFINITE)) 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testSendBytesOverMessagePipe(self): 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles = system.MessagePipe() 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data = _GetRandomBuffer(DATA_SIZE) 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles.handle0.WriteMessage(data) 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res, buffers, next_message) = handles.handle1.ReadMessage() 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_RESOURCE_EXHAUSTED, res) 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(None, buffers) 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals((DATA_SIZE, 0), next_message) 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci result = bytearray(DATA_SIZE) 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res, buffers, next_message) = handles.handle1.ReadMessage(result) 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, res) 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(None, next_message) 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals((data, []), buffers) 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testSendEmptyDataOverMessagePipe(self): 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles = system.MessagePipe() 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles.handle0.WriteMessage(None) 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res, buffers, next_message) = handles.handle1.ReadMessage() 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, res) 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(None, next_message) 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals((None, []), buffers) 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testSendHandleOverMessagePipe(self): 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles = system.MessagePipe() 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles_to_send = system.MessagePipe() 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles.handle0.WriteMessage(handles=[handles_to_send.handle0, 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles_to_send.handle1]) 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res, buffers, next_message) = handles.handle1.ReadMessage( 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci max_number_of_handles=2) 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertFalse(handles_to_send.handle0.IsValid()) 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertFalse(handles_to_send.handle1.IsValid()) 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, res) 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(None, next_message) 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(None, buffers[0]) 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(2, len(buffers[1])) 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles = buffers[1] 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for handle in handles: 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertTrue(handle.IsValid()) 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res, buffers, next_message) = handle.ReadMessage() 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_SHOULD_WAIT, res) 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for handle in handles: 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle.WriteMessage() 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for handle in handles: 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res, buffers, next_message) = handle.ReadMessage() 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, res) 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def _TestDataHandleCreation(self, handles): 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._testHandlesCreation( 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handles.producer_handle, handles.consumer_handle) 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateDataPipe(self): 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestDataHandleCreation(system.DataPipe()) 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateDataPipeWithNoneOptions(self): 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestDataHandleCreation(system.DataPipe(None)) 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateDataPipeWithDefaultOptions(self): 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestDataHandleCreation( 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.DataPipe(system.CreateDataPipeOptions())) 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateDataPipeWithDiscardFlag(self): 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options = system.CreateDataPipeOptions() 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options.flags = system.CreateDataPipeOptions.FLAG_MAY_DISCARD 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestDataHandleCreation(system.DataPipe(options)) 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateDataPipeWithElementSize(self): 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options = system.CreateDataPipeOptions() 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options.element_num_bytes = 5 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestDataHandleCreation(system.DataPipe(options)) 2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateDataPipeWithCapacity(self): 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options = system.CreateDataPipeOptions() 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options.element_capacity_num_bytes = DATA_SIZE 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestDataHandleCreation(system.DataPipe(options)) 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateDataPipeWithIncorrectParameters(self): 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options = system.CreateDataPipeOptions() 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options.element_num_bytes = 5 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options.capacity_num_bytes = DATA_SIZE 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci with self.assertRaises(system.MojoException) as cm: 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._TestDataHandleCreation(system.DataPipe(options)) 2241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_INVALID_ARGUMENT, cm.exception.mojo_result) 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testSendEmptyDataOverDataPipe(self): 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pipes = system.DataPipe() 2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals((system.RESULT_OK, 0), pipes.producer_handle.WriteData()) 2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals( 2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (system.RESULT_OK, None), pipes.consumer_handle.ReadData()) 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testSendDataOverDataPipe(self): 2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pipes = system.DataPipe() 2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data = _GetRandomBuffer(DATA_SIZE) 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals((system.RESULT_OK, DATA_SIZE), 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pipes.producer_handle.WriteData(data)) 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals((system.RESULT_OK, data), 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pipes.consumer_handle.ReadData(bytearray(DATA_SIZE))) 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testTwoPhaseWriteOnDataPipe(self): 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pipes = system.DataPipe() 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res, buf) = pipes.producer_handle.BeginWriteData(DATA_SIZE) 2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, res) 2441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertGreaterEqual(len(buf.buffer), DATA_SIZE) 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data = _GetRandomBuffer(DATA_SIZE) 2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci buf.buffer[0:DATA_SIZE] = data 2471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, buf.End(DATA_SIZE)) 2481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals((system.RESULT_OK, data), 2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pipes.consumer_handle.ReadData(bytearray(DATA_SIZE))) 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testTwoPhaseReadOnDataPipe(self): 2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pipes = system.DataPipe() 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data = _GetRandomBuffer(DATA_SIZE) 2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals((system.RESULT_OK, DATA_SIZE), 2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pipes.producer_handle.WriteData(data)) 2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res, buf) = pipes.consumer_handle.BeginReadData() 2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, res) 2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(DATA_SIZE, len(buf.buffer)) 2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(data, buf.buffer) 2601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, buf.End(DATA_SIZE)) 2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateSharedBuffer(self): 2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._testHandlesCreation(system.CreateSharedBuffer(DATA_SIZE)) 2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateSharedBufferWithNoneOptions(self): 2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._testHandlesCreation(system.CreateSharedBuffer(DATA_SIZE, None)) 2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testCreateSharedBufferWithDefaultOptions(self): 2691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._testHandlesCreation( 2701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.CreateSharedBuffer( 2711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DATA_SIZE, 2721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system.CreateSharedBufferOptions())) 2731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testDuplicateSharedBuffer(self): 2751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle = system.CreateSharedBuffer(DATA_SIZE) 2761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._testHandlesCreation(handle.Duplicate()) 2771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testDuplicateSharedBufferWithNoneOptions(self): 2791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle = system.CreateSharedBuffer(DATA_SIZE) 2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._testHandlesCreation(handle.Duplicate(None)) 2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testDuplicateSharedBufferWithDefaultOptions(self): 2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle = system.CreateSharedBuffer(DATA_SIZE) 2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self._testHandlesCreation( 2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle.Duplicate(system.DuplicateSharedBufferOptions())) 2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci def testSendBytesOverSharedBuffer(self): 2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handle = system.CreateSharedBuffer(DATA_SIZE) 2891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci duplicated = handle.Duplicate() 2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data = _GetRandomBuffer(DATA_SIZE) 2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res1, buf1) = handle.Map(0, DATA_SIZE) 2921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (res2, buf2) = duplicated.Map(0, DATA_SIZE) 2931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, res1) 2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(system.RESULT_OK, res2) 2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(DATA_SIZE, len(buf1.buffer)) 2961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(DATA_SIZE, len(buf2.buffer)) 2971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(buf1.buffer, buf2.buffer) 2981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci buf1.buffer[:] = data 3001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(data, buf1.buffer) 3011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(data, buf2.buffer) 3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertEquals(buf1.buffer, buf2.buffer) 3031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciif __name__ == '__main__': 3061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci suite = unittest.TestLoader().loadTestsFromTestCase(CoreTest) 3071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci test_results = unittest.TextTestRunner(verbosity=0).run(suite) 3081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if not test_results.wasSuccessful(): 3091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci sys.exit(1) 3101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci sys.exit(0) 311