summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2011-10-13 20:56:29 +0000
committerGerrit Code Review <review@openstack.org>2011-10-13 20:56:29 +0000
commit5c2d2c168b30fdf62b72dffd09fcf6fc9c878a33 (patch)
tree7cc6c7e50071e2e492303e9b425a5e7c7710f4a8 /nova/tests
parentff1263aed3c886fc38e526f1176452171bf9545f (diff)
parent5aa522908264b5ef97387821e18c13ad9a9b95a1 (diff)
Merge "Adds more usage data to Nova's usage notifications."
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/test_compute.py55
-rw-r--r--nova/tests/test_compute_utils.py99
2 files changed, 150 insertions, 4 deletions
diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py
index 323cd365f..d2f0b2193 100644
--- a/nova/tests/test_compute.py
+++ b/nova/tests/test_compute.py
@@ -33,6 +33,7 @@ from nova.scheduler import driver as scheduler_driver
from nova import rpc
from nova import test
from nova import utils
+import nova
from nova.compute import instance_types
from nova.compute import manager as compute_manager
@@ -448,6 +449,48 @@ class ComputeTestCase(test.TestCase):
self.assert_(console)
self.compute.terminate_instance(self.context, instance_id)
+ def test_add_fixed_ip_usage_notification(self):
+ def dummy(*args, **kwargs):
+ pass
+
+ self.stubs.Set(nova.network.API, 'add_fixed_ip_to_instance',
+ dummy)
+ self.stubs.Set(nova.compute.manager.ComputeManager,
+ 'inject_network_info', dummy)
+ self.stubs.Set(nova.compute.manager.ComputeManager,
+ 'reset_network', dummy)
+
+ instance_id = self._create_instance()
+
+ self.assertEquals(len(test_notifier.NOTIFICATIONS), 0)
+ self.compute.add_fixed_ip_to_instance(self.context,
+ instance_id,
+ 1)
+
+ self.assertEquals(len(test_notifier.NOTIFICATIONS), 1)
+ self.compute.terminate_instance(self.context, instance_id)
+
+ def test_remove_fixed_ip_usage_notification(self):
+ def dummy(*args, **kwargs):
+ pass
+
+ self.stubs.Set(nova.network.API, 'remove_fixed_ip_from_instance',
+ dummy)
+ self.stubs.Set(nova.compute.manager.ComputeManager,
+ 'inject_network_info', dummy)
+ self.stubs.Set(nova.compute.manager.ComputeManager,
+ 'reset_network', dummy)
+
+ instance_id = self._create_instance()
+
+ self.assertEquals(len(test_notifier.NOTIFICATIONS), 0)
+ self.compute.remove_fixed_ip_from_instance(self.context,
+ instance_id,
+ 1)
+
+ self.assertEquals(len(test_notifier.NOTIFICATIONS), 1)
+ self.compute.terminate_instance(self.context, instance_id)
+
def test_run_instance_usage_notification(self):
"""Ensure run instance generates apropriate usage notification"""
instance_id = self._create_instance()
@@ -457,7 +500,7 @@ class ComputeTestCase(test.TestCase):
self.assertEquals(msg['priority'], 'INFO')
self.assertEquals(msg['event_type'], 'compute.instance.create')
payload = msg['payload']
- self.assertEquals(payload['project_id'], self.project_id)
+ self.assertEquals(payload['tenant_id'], self.project_id)
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], instance_id)
self.assertEquals(payload['instance_type'], 'm1.tiny')
@@ -476,12 +519,16 @@ class ComputeTestCase(test.TestCase):
test_notifier.NOTIFICATIONS = []
self.compute.terminate_instance(self.context, instance_id)
- self.assertEquals(len(test_notifier.NOTIFICATIONS), 1)
+ self.assertEquals(len(test_notifier.NOTIFICATIONS), 2)
msg = test_notifier.NOTIFICATIONS[0]
self.assertEquals(msg['priority'], 'INFO')
+ self.assertEquals(msg['event_type'], 'compute.instance.exists')
+
+ msg = test_notifier.NOTIFICATIONS[1]
+ self.assertEquals(msg['priority'], 'INFO')
self.assertEquals(msg['event_type'], 'compute.instance.delete')
payload = msg['payload']
- self.assertEquals(payload['project_id'], self.project_id)
+ self.assertEquals(payload['tenant_id'], self.project_id)
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], instance_id)
self.assertEquals(payload['instance_type'], 'm1.tiny')
@@ -564,7 +611,7 @@ class ComputeTestCase(test.TestCase):
self.assertEquals(msg['priority'], 'INFO')
self.assertEquals(msg['event_type'], 'compute.instance.resize.prep')
payload = msg['payload']
- self.assertEquals(payload['project_id'], self.project_id)
+ self.assertEquals(payload['tenant_id'], self.project_id)
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], instance_id)
self.assertEquals(payload['instance_type'], 'm1.tiny')
diff --git a/nova/tests/test_compute_utils.py b/nova/tests/test_compute_utils.py
new file mode 100644
index 000000000..0baa6ef87
--- /dev/null
+++ b/nova/tests/test_compute_utils.py
@@ -0,0 +1,99 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2011 OpenStack LLC.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Tests For misc util methods used with compute.
+"""
+
+from datetime import datetime
+from datetime import timedelta
+
+from nova import db
+from nova import exception
+from nova import flags
+from nova import context
+from nova import test
+from nova import log as logging
+from nova import utils
+import nova.image.fake
+from nova.compute import utils as compute_utils
+from nova.compute import instance_types
+from nova.notifier import test_notifier
+
+
+LOG = logging.getLogger('nova.tests.compute_utils')
+FLAGS = flags.FLAGS
+flags.DECLARE('stub_network', 'nova.compute.manager')
+
+
+class UsageInfoTestCase(test.TestCase):
+
+ def setUp(self):
+ super(UsageInfoTestCase, self).setUp()
+ self.flags(connection_type='fake',
+ stub_network=True,
+ notification_driver='nova.notifier.test_notifier',
+ network_manager='nova.network.manager.FlatManager')
+ self.compute = utils.import_object(FLAGS.compute_manager)
+ self.user_id = 'fake'
+ self.project_id = 'fake'
+ self.context = context.RequestContext(self.user_id, self.project_id)
+ test_notifier.NOTIFICATIONS = []
+
+ def fake_show(meh, context, id):
+ return {'id': 1, 'properties': {'kernel_id': 1, 'ramdisk_id': 1}}
+
+ self.stubs.Set(nova.image.fake._FakeImageService, 'show', fake_show)
+
+ def _create_instance(self, params={}):
+ """Create a test instance"""
+ inst = {}
+ inst['image_ref'] = 1
+ inst['reservation_id'] = 'r-fakeres'
+ inst['launch_time'] = '10'
+ inst['user_id'] = self.user_id
+ inst['project_id'] = self.project_id
+ type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ inst['instance_type_id'] = type_id
+ inst['ami_launch_index'] = 0
+ inst.update(params)
+ return db.instance_create(self.context, inst)['id']
+
+ def test_notify_usage_exists(self):
+ """Ensure 'exists' notification generates apropriate usage data."""
+ instance_id = self._create_instance()
+ instance = db.instance_get(self.context, instance_id)
+ compute_utils.notify_usage_exists(instance)
+ self.assertEquals(len(test_notifier.NOTIFICATIONS), 1)
+ msg = test_notifier.NOTIFICATIONS[0]
+ self.assertEquals(msg['priority'], 'INFO')
+ self.assertEquals(msg['event_type'], 'compute.instance.exists')
+ payload = msg['payload']
+ self.assertEquals(payload['tenant_id'], self.project_id)
+ self.assertEquals(payload['user_id'], self.user_id)
+ self.assertEquals(payload['instance_id'], instance_id)
+ self.assertEquals(payload['instance_type'], 'm1.tiny')
+ type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ self.assertEquals(str(payload['instance_type_id']), str(type_id))
+ for attr in ('display_name', 'created_at', 'launched_at',
+ 'state', 'state_description', 'fixed_ips',
+ 'bandwidth', 'audit_period_begining',
+ 'audit_period_ending'):
+ self.assertTrue(attr in payload,
+ msg="Key %s not in payload" % attr)
+ self.assertEquals(payload['image_ref'], '1')
+ self.compute.terminate_instance(self.context, instance_id)