#! /usr/bin/env python #****************************************************************************** # ALMA - Atacama Large Millimiter Array # (c) Associated Universities Inc., 2010 # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # "@(#) $Id: test_Acspy_Nc_CDBProperties.py,v 1.2 2010/03/20 22:46:40 agrimstrup Exp $" # # who when what # -------- -------- ---------------------------------------------- # agrimstrup 2010-02-05 created # #------------------------------------------------------------------------------ __revision__ = "$Id: test_Acspy_Nc_CDBProperties.py,v 1.2 2010/03/20 22:46:40 agrimstrup Exp $" #--REGULAR IMPORTS------------------------------------------------------------- import unittest import mock import CORBA import CosNotification import Acspy.Nc.CDBProperties as CDBP class TestBase(unittest.TestCase): def setUp(self): CDBP._cdb_access = mock.Mock(spec=CDBP.CDBaccess) def tearDown(self): CDBP._cdb_access = None def set_element_return_value(self, value): CDBP._cdb_access.getElement.return_value = value def set_element_exception(self, exception): def raiser(): raise exception() CDBP._cdb_access.getElement.side_effect = raiser def set_field_return_value(self, value): CDBP._cdb_access.getField.return_value = value def set_field_exception(self, exception): def raiser(): raise exception() CDBP._cdb_access.getField.side_effect = raiser class TestGetNotificationServiceMapping(TestBase): def test_ok(self): self.set_element_return_value(['Stuff']) self.assertEqual(['Stuff'], CDBP.get_notification_service_mapping('Channel')) def test_exception_handling(self): self.set_element_exception(Exception) self.assertEqual([], CDBP.get_notification_service_mapping('Channel')) class TestChannelConfigExists(TestBase): def test_ok(self): self.set_field_return_value(['Stuff']) self.assertEqual(1, CDBP.cdb_channel_config_exists('Channel')) def test_exception_handling(self): self.set_field_exception(Exception) self.assertEqual(0, CDBP.cdb_channel_config_exists('Channel')) class TestGetIntegrationLogs(TestBase): def test_log_exists(self): CDBP.INTEGRATION_LOGS = { 'Key':True } self.assertEqual(True, CDBP.get_integration_logs('Key')) CDBP.INTEGRATION_LOGS = {} def test_no_channel(self): self.set_field_exception(Exception) self.assertEqual(0, CDBP.get_integration_logs('Key')) def test_channel_false(self): self.set_element_return_value([{"IntegrationLogs":"false"}]) self.set_field_return_value(True) self.assertEqual(0, CDBP.get_integration_logs('Key')) CDBP.INTEGRATION_LOGS = {} def test_channel_true(self): self.set_element_return_value([{"IntegrationLogs":"true"}]) self.set_field_return_value(True) self.assertEqual(1, CDBP.get_integration_logs('Key')) CDBP.INTEGRATION_LOGS = {} def test_channel_unknown(self): self.set_element_return_value([{"IntegrationLogs":"frob"}]) self.set_field_return_value(True) self.assertEqual(0, CDBP.get_integration_logs('Key')) CDBP.INTEGRATION_LOGS = {} class TestGetChannelQofSProps(TestBase): def test_qofs_start_false_stop_false(self): self.set_element_return_value([{"DiscardPolicy":"AnyOrder", "EventReliability":"BestEffort", "ConnectionReliability":"BestEffort", "Priority":"0", "Timeout":"0", "OrderPolicy":"AnyOrder", "StartTimeSupported":"false", "StopTimeSupported":"false", "MaxEventsPerConsumer":"0"}]) self.set_field_return_value(True) self.assertEqual(5, len(CDBP.get_channel_qofs_props('Key'))) def test_qofs_start_true_stop_true(self): self.set_element_return_value([{"DiscardPolicy":"AnyOrder", "EventReliability":"BestEffort", "ConnectionReliability":"BestEffort", "Priority":"0", "Timeout":"0", "OrderPolicy":"AnyOrder", "StartTimeSupported":"true", "StopTimeSupported":"true", "MaxEventsPerConsumer":"0"}]) self.set_field_return_value(True) self.assertEqual(5, len(CDBP.get_channel_qofs_props('Key'))) def test_empty_config(self): self.set_element_return_value([{}]) self.set_field_return_value(True) self.assertRaises(KeyError, CDBP.get_channel_qofs_props, 'Key') class TestGetChannelAdminProps(TestBase): def test_reject_false(self): self.set_element_return_value([{"MaxQueueLength":"0", "MaxConsumers":"0", "MaxSuppliers":"0", "RejectNewEvents":"false"}]) self.set_field_return_value(True) self.assertEqual(4, len(CDBP.get_channel_admin_props('Key'))) def test_reject_true(self): self.set_element_return_value([{"MaxQueueLength":"0", "MaxConsumers":"0", "MaxSuppliers":"0", "RejectNewEvents":"true"}]) self.set_field_return_value(True) self.assertEqual(4, len(CDBP.get_channel_admin_props('Key'))) def test_empty_config(self): self.set_element_return_value([{}]) self.set_field_return_value(True) self.assertRaises(KeyError, CDBP.get_channel_admin_props, 'Key') class TestGetEventHandlerTimeoutDict(TestBase): def test_no_channel(self): self.set_field_exception(Exception) self.assertEqual({}, CDBP.getEventHandlerTimeoutDict('Key')) def test_no_events(self): self.set_field_return_value( \ '' \ '' \ '') self.assertEqual({}, CDBP.getEventHandlerTimeoutDict('Key')) def test_events(self): self.set_field_return_value( \ '' \ '' \ ' ' \ ' <_ Name="EventDescription" MaxProcessTime="1.25" />' \ ' ' \ '') self.assertEqual({'EventDescription': 1.25}, CDBP.getEventHandlerTimeoutDict('Key')) if __name__ == "__main__": unittest.main() # # ___oOo___