def create_extension_manager(self): return extension_tests.TestExtensionManager( [ extension.Extension( 'test', None, None, self.Pollster(), ), extension.Extension( 'testanother', None, None, self.PollsterAnother(), ), extension.Extension( 'testexception', None, None, self.PollsterException(), ), extension.Extension( 'testexceptionanother', None, None, self.PollsterExceptionAnother(), ), ], 'fake', invoke_on_load=False, )
def test_message_to_event_missing_keys(self): now = timeutils.utcnow() timeutils.set_time_override(now) message = {'event_type': "foo", 'message_id': "abc", 'publisher_id': "1"} mock_dispatcher = MagicMock() self.srv.dispatcher_manager = test_manager.TestExtensionManager( [extension.Extension('test', None, None, mock_dispatcher ), ]) with patch('ceilometer.collector.service.LOG') as mylog: self.srv._message_to_event(message) self.assertFalse(mylog.exception.called) events = mock_dispatcher.record_events.call_args[0] self.assertEqual(1, len(events)) event = events[0] self.assertEqual("foo", event.event_name) self.assertEqual(now, event.generated) self.assertEqual(1, len(event.traits))
def setUp(self): super(TestNovaNotifier, self).setUp() nova_CONF.compute_driver = 'nova.virt.fake.FakeDriver' nova_CONF.notification_driver = [nova_notifier.__name__] nova_CONF.rpc_backend = 'ceilometer.openstack.common.rpc.impl_fake' self.compute = importutils.import_object(nova_CONF.compute_manager) self.context = context.get_admin_context() fake_network.set_stub_network_methods(self.stubs) self.instance = { "name": "instance-1", "id": 1, "image_ref": "FAKE", "user_id": "FAKE", "project_id": "FAKE", "display_name": "FAKE NAME", "hostname": "abcdef", "reservation_id": "FAKE RID", "instance_type_id": 1, "architecture": "x86", "memory_mb": "1024", "root_gb": "20", "ephemeral_gb": "0", "vcpus": 1, "host": "fakehost", "availability_zone": "1e3ce043029547f1a61c1996d1a531a4", "created_at": '2012-05-08 20:23:41', "os_type": "linux", "kernel_id": "kernelid", "ramdisk_id": "ramdiskid", "vm_state": vm_states.ACTIVE, "access_ip_v4": "someip", "access_ip_v6": "someip", "metadata": {}, "uuid": "144e08f4-00cb-11e2-888e-5453ed1bbb5f", "system_metadata": {} } self.stubs.Set(db, 'instance_info_cache_delete', self.do_nothing) self.stubs.Set(db, 'instance_destroy', self.do_nothing) self.stubs.Set(db, 'instance_system_metadata_get', self.fake_db_instance_system_metadata_get) self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', lambda context, instance: {}) self.stubs.Set( db, 'instance_update_and_get_original', lambda context, uuid, kwargs: (self.instance, self.instance)) agent_manager = manager.AgentManager() agent_manager.pollster_manager = \ test_manager.TestExtensionManager([ extension.Extension('test', None, None, self.Pollster(), ), ]) nova_notifier.initialize_manager(agent_manager)
def test_record_metering_data(self): mock_dispatcher = mock.MagicMock() self.srv.dispatcher_manager = test_manager.TestExtensionManager([ extension.Extension('test', None, None, mock_dispatcher), ]) self.srv.record_metering_data(None, self.counter) mock_dispatcher.record_metering_data.assert_called_once_with( data=self.counter)
def setUp(self): super(TestSingletonAlarmService, self).setUp() self.threshold_eval = mock.Mock() self.evaluators = extension_tests.TestExtensionManager([ extension.Extension('threshold', None, None, self.threshold_eval), ]) self.api_client = mock.MagicMock() self.singleton = service.SingletonAlarmService() self.singleton.tg = mock.Mock() self.singleton.evaluators = self.evaluators self.singleton.supported_evaluators = ['threshold']
def test_message_to_event_duplicate(self): self.CONF.set_override("store_events", True, group="collector") mock_dispatcher = MagicMock() self.srv.dispatcher_manager = test_manager.TestExtensionManager( [extension.Extension('test', None, None, mock_dispatcher ), ]) mock_dispatcher.record_events.return_value = [ (models.Event.DUPLICATE, object())] message = {'event_type': "foo", 'message_id': "abc"} self.srv._message_to_event(message) # Should return silently.
def test_message_to_event_bad_event(self): self.CONF.set_override("store_events", True, group="collector") mock_dispatcher = MagicMock() self.srv.dispatcher_manager = test_manager.TestExtensionManager( [extension.Extension('test', None, None, mock_dispatcher ), ]) mock_dispatcher.record_events.return_value = [ (models.Event.UNKNOWN_PROBLEM, object())] message = {'event_type': "foo", 'message_id': "abc"} self.assertRaises(service.UnableToSaveEventException, self.srv._message_to_event, message)
def setUp(self): super(TestSingletonAlarmService, self).setUp() self.threshold_eval = mock.Mock() self.extension_mgr = extension_tests.TestExtensionManager([ extension.Extension( 'threshold_eval', None, None, self.threshold_eval, ), ]) self.api_client = mock.MagicMock() self.singleton = service.SingletonAlarmService() self.singleton.tg = mock.Mock() self.singleton.extension_manager = self.extension_mgr
def test_message_to_event_bad_save(self): cfg.CONF.set_override("store_events", True, group="collector") mock_dispatcher = MagicMock() self.srv.dispatcher_manager = test_manager.TestExtensionManager( [extension.Extension('test', None, None, mock_dispatcher ), ]) mock_dispatcher.record_events.side_effect = MyException("Boom") message = {'event_type': "foo", 'message_id': "abc"} try: self.srv._message_to_event(message) self.fail("failing save should raise") except Exception: pass
def test_process_notification(self): # If we try to create a real RPC connection, init_host() never # returns. Mock it out so we can establish the manager # configuration. with patch('ceilometer.openstack.common.rpc.create_connection'): self.srv.start() self.srv.pipeline_manager.pipelines[0] = MagicMock() self.srv.notification_manager = test_manager.TestExtensionManager([ extension.Extension( 'test', None, None, notifications.Instance(), ), ]) self.srv.process_notification(TEST_NOTICE) self.assertTrue(self.srv.pipeline_manager.publisher.called)
def test_process_notification(self): # If we try to create a real RPC connection, init_host() never # returns. Mock it out so we can establish the service # configuration. self.CONF.set_override("store_events", False, group="notification") with mock.patch('ceilometer.openstack.common.rpc.create_connection'): self.srv.start() self.srv.pipeline_manager.pipelines[0] = mock.MagicMock() self.srv.notification_manager = test_manager.TestExtensionManager( [extension.Extension('test', None, None, instance.Instance(), ), ]) self.srv.process_notification(TEST_NOTICE) self.assertTrue( self.srv.pipeline_manager.publisher.called)
def test_udp_receive(self): mock_dispatcher = mock.MagicMock() self.srv.dispatcher_manager = test_manager.TestExtensionManager([ extension.Extension('test', None, None, mock_dispatcher), ]) self.counter['source'] = 'mysource' self.counter['counter_name'] = self.counter['name'] self.counter['counter_volume'] = self.counter['volume'] self.counter['counter_type'] = self.counter['type'] self.counter['counter_unit'] = self.counter['unit'] udp_socket = self._make_fake_socket() with patch('socket.socket', return_value=udp_socket): self.srv.start_udp() self._verify_udp_socket(udp_socket) mock_dispatcher.record_metering_data.assert_called_once_with( self.counter)
def test_udp_receive_storage_error(self): mock_dispatcher = MagicMock() self.srv.dispatcher_manager = test_manager.TestExtensionManager( [extension.Extension('test', None, None, mock_dispatcher ), ]) mock_dispatcher.record_metering_data.side_effect = self._raise_error self.counter['source'] = 'mysource' self.counter['counter_name'] = self.counter['name'] self.counter['counter_volume'] = self.counter['volume'] self.counter['counter_type'] = self.counter['type'] self.counter['counter_unit'] = self.counter['unit'] with patch('socket.socket', self._make_fake_socket): self.srv.start() mock_dispatcher.record_metering_data.assert_called_once_with( self.counter)
def setUp(self): super(TestPartitionedAlarmService, self).setUp() self.threshold_eval = mock.Mock() self.api_client = mock.MagicMock() self.CONF = self.useFixture(config.Config()).conf self.CONF.set_override('host', 'fake_host') self.CONF.set_override('partition_rpc_topic', 'fake_topic', group='alarm') self.partitioned = service.PartitionedAlarmService() self.partitioned.tg = mock.Mock() self.partitioned.partition_coordinator = mock.Mock() self.extension_mgr = extension_tests.TestExtensionManager([ extension.Extension( 'threshold', None, None, self.threshold_eval, ), ]) self.partitioned.extension_manager = self.extension_mgr
def setUp(self): super(TestNovaNotifier, self).setUp() nova_CONF.compute_driver = 'nova.virt.fake.FakeDriver' nova_CONF.notification_driver = [nova_notifier.__name__] nova_CONF.rpc_backend = 'nova.openstack.common.rpc.impl_fake' nova_CONF.vnc_enabled = False nova_CONF.spice.enabled = False self.compute = importutils.import_object(nova_CONF.compute_manager) self.context = context.get_admin_context() fake_network.set_stub_network_methods(self.stubs) instance_data = { "display_name": "instance-1", 'OS-EXT-SRV-ATTR:instance_name': 'instance-1', "id": 1, "image_ref": "FAKE", "user_id": "FAKE", "project_id": "FAKE", "display_name": "FAKE NAME", "hostname": "abcdef", "reservation_id": "FAKE RID", "instance_type_id": 1, "architecture": "x86", "memory_mb": "1024", "root_gb": "20", "ephemeral_gb": "0", "vcpus": 1, 'node': "fakenode", "host": "fakehost", "availability_zone": "1e3ce043029547f1a61c1996d1a531a4", "created_at": '2012-05-08 20:23:41', "launched_at": '2012-05-08 20:25:45', "terminated_at": '2012-05-09 20:23:41', "os_type": "linux", "kernel_id": "kernelid", "ramdisk_id": "ramdiskid", "vm_state": vm_states.ACTIVE, "task_state": None, "access_ip_v4": "192.168.5.4", "access_ip_v6": "2001:DB8::0", "metadata": {}, "uuid": "144e08f4-00cb-11e2-888e-5453ed1bbb5f", "system_metadata": {} } self.instance = nova_instance.Instance() for key, value in instance_data.iteritems(): setattr(self.instance, key, value) self.stubs.Set(db, 'instance_info_cache_delete', self.do_nothing) self.stubs.Set(db, 'instance_destroy', self.do_nothing) self.stubs.Set(db, 'instance_system_metadata_get', self.fake_db_instance_system_metadata_get) self.stubs.Set(db, 'block_device_mapping_get_all_by_instance', lambda context, instance: {}) self.stubs.Set( db, 'instance_update_and_get_original', lambda context, uuid, kwargs: (self.instance, self.instance)) self.stubs.Set(flavors, 'extract_flavor', lambda ref: {}) # Set up to capture the notification messages generated by the # plugin and to invoke our notifier plugin. self.notifications = [] notifier_api._reset_drivers() notifier_api.add_driver(self) notifier_api.add_driver(nova_notifier) ext_mgr = test_manager.TestExtensionManager([ extension.Extension( 'test', None, None, self.Pollster(), ), ]) self.ext_mgr = ext_mgr self.gatherer = nova_notifier.DeletedInstanceStatsGatherer(ext_mgr) nova_notifier.initialize_gatherer(self.gatherer) # Terminate the instance to trigger the notification. with contextlib.nested( # Under Grizzly, Nova has moved to no-db access on the # compute node. The compute manager uses RPC to talk to # the conductor. We need to disable communication between # the nova manager and the remote system since we can't # expect the message bus to be available, or the remote # controller to be there if the message bus is online. mock.patch.object(self.compute, 'conductor_api'), # The code that looks up the instance uses a global # reference to the API, so we also have to patch that to # return our fake data. mock.patch.object(nova_notifier.instance_info_source, 'instance_get_by_uuid', self.fake_instance_ref_get), ): self.compute.terminate_instance(self.context, instance=self.instance)