diff --git a/python/test/src/testipaaca.py b/python/test/src/testipaaca.py index b304c14702fc21d01b417d589e44052c00f55874..460c1c52f2a5627cc306abdda5e688db56316669 100755 --- a/python/test/src/testipaaca.py +++ b/python/test/src/testipaaca.py @@ -8,7 +8,8 @@ import hamcrest as hc import ipaaca def handle_iu_event(iu, event_type, local): - print('(IU event '+event_type+' '+str(iu.uid)+')') + #print('(IU event '+event_type+' '+str(iu.uid)+')') + pass class IpaacaIUStoreTestCase(unittest.TestCase): def setUp(self): @@ -63,6 +64,21 @@ class IpaacaCommitTestCases(unittest.TestCase): time.sleep(0.1) received_iu = self.ib.iu_store[self.iu.uid] self.assertTrue(received_iu.committed) + + def testCommitAndLocalWrite(self): + self.ob.add(self.iu) + time.sleep(0.1) + self.iu.commit() + with self.assertRaises(ipaaca.IUCommittedError): + self.iu.payload['data'] = 'updatedData' + + def testCommitAndRemoteWrite(self): + self.ob.add(self.iu) + time.sleep(0.1) + self.iu.commit() + received_iu = self.ib.iu_store[self.iu.uid] + with self.assertRaises(ipaaca.IUCommittedError): + received_iu.payload['data'] = 'updatedData' class IpaacaLinksTestCase(unittest.TestCase): @@ -102,6 +118,56 @@ class IpaacaLinksTestCase(unittest.TestCase): grinlinks = received_iu.get_links('grin') self.assertEqual(len(grinlinks), 0) +class IpaacaCommitTestCase(unittest.TestCase): + def setUp(self): + self.ib = ipaaca.InputBuffer('TestIn', ['sensorcategory']) + self.ib.register_handler(handle_iu_event) + self.ob = ipaaca.OutputBuffer('TestOut') + self.sensor_iu = ipaaca.IU('sensorcategory') + self.sensor_iu.payload = {'data': 'sensordata'} + time.sleep(0.1) + self.ob.add(self.sensor_iu) + time.sleep(0.1) + def tearDown(self): + pass + def testCommitAndLocalWrite(self): + self.sensor_iu.commit() + with self.assertRaises(ipaaca.IUCommittedError): + self.sensor_iu.payload['data'] = 'updatedData' + def testCommitAndRemoteWrite(self): + self.sensor_iu.commit() + received_iu = self.ib.iu_store[self.sensor_iu.uid] + with self.assertRaises(ipaaca.IUCommittedError): + received_iu.payload['data'] = 'updatedData' + +class IpaacaRemoteWriteTestCase(unittest.TestCase): + def setUp(self): + self.ib = ipaaca.InputBuffer('TestIn', ['sensorcategory']) + self.ib.register_handler(handle_iu_event) + self.ob = ipaaca.OutputBuffer('TestOut') + self.iu = ipaaca.IU('sensorcategory') + self.iu.payload = {'data': 'sensordata'} + time.sleep(0.1) + self.ob.add(self.iu) + time.sleep(0.1) + def tearDown(self): + pass + def testRemotePayloadChange(self): + self.assertIn(self.iu.uid, self.ib.iu_store) + received_iu = self.ib.iu_store[self.iu.uid] + received_iu.payload['data'] = 'updatedData' + time.sleep(0.1) + self.assertEqual(self.iu.payload['data'], 'updatedData') + def testRemotePayloadReplace(self): + self.assertIn(self.iu.uid, self.ib.iu_store) + received_iu = self.ib.iu_store[self.iu.uid] + received_iu.payload = { 'key1': 'value1', 'key2': 'value2' } + time.sleep(0.1) + self.assertEqual(len(self.iu.payload), 2) + self.assertEqual(self.iu.payload['key1'], 'value1') + self.assertEqual(self.iu.payload['key2'], 'value2') + + if __name__ == '__main__': unittest.main()