Пример #1
0
 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,
     )
Пример #2
0
    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))
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
 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']
Пример #6
0
 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.
Пример #7
0
 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)
Пример #8
0
 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
Пример #9
0
 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
Пример #10
0
 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)
Пример #11
0
 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)
Пример #12
0
    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)
Пример #13
0
    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
Пример #15
0
    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)