diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-11-26 18:47:22 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-11-26 18:47:22 +0000 |
| commit | ab77c4e1b8e4c500a9372e290e658952a2441627 (patch) | |
| tree | 29ce3faf2c4a01de9576384a3bb3a313c18398f3 /nova/tests | |
| parent | 9adc3a456a4a38fd9e372ddd7ee2fc6abeddbb0d (diff) | |
| parent | 717c9755805aa06340130b6bc4e7de8f81ea8e57 (diff) | |
Merge "Make compute manager use nova-conductor for instance_update"
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/api/ec2/test_cinder_cloud.py | 3 | ||||
| -rw-r--r-- | nova/tests/api/ec2/test_cloud.py | 3 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 13 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute_utils.py | 1 | ||||
| -rw-r--r-- | nova/tests/conductor/test_conductor.py | 28 | ||||
| -rw-r--r-- | nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.json.tpl | 5 | ||||
| -rw-r--r-- | nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.xml.tpl | 1 | ||||
| -rw-r--r-- | nova/tests/integrated/integrated_helpers.py | 2 | ||||
| -rw-r--r-- | nova/tests/integrated/test_servers.py | 4 |
9 files changed, 57 insertions, 3 deletions
diff --git a/nova/tests/api/ec2/test_cinder_cloud.py b/nova/tests/api/ec2/test_cinder_cloud.py index 5c04321c7..1469ba64c 100644 --- a/nova/tests/api/ec2/test_cinder_cloud.py +++ b/nova/tests/api/ec2/test_cinder_cloud.py @@ -119,6 +119,9 @@ class CinderCloudTestCase(test.TestCase): self.cloud = cloud.CloudController() self.flags(scheduler_driver='nova.scheduler.chance.ChanceScheduler') + # Short-circuit the conductor service + self.flags(use_local=True, group='conductor') + # set up services self.compute = self.start_service('compute') self.scheduler = self.start_service('scheduler') diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py index 98606b194..34142b0ec 100644 --- a/nova/tests/api/ec2/test_cloud.py +++ b/nova/tests/api/ec2/test_cloud.py @@ -131,6 +131,9 @@ class CloudTestCase(test.TestCase): self.cloud = cloud.CloudController() self.flags(scheduler_driver='nova.scheduler.chance.ChanceScheduler') + # Short-circuit the conductor service + self.flags(use_local=True, group='conductor') + # set up services self.compute = self.start_service('compute') self.scheduler = self.start_service('scheduler') diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index a7e06cf92..32cd3ca3e 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -108,6 +108,7 @@ class BaseTestCase(test.TestCase): notification_driver=[test_notifier.__name__], network_manager='nova.network.manager.FlatManager') fake.set_nodes([NODENAME]) + self.flags(use_local=True, group='conductor') self.compute = importutils.import_object(CONF.compute_manager) # override tracker with a version that doesn't need the database: @@ -1416,7 +1417,7 @@ class ComputeTestCase(BaseTestCase): self.assertTrue('created_at' in payload) self.assertTrue('launched_at' in payload) self.assertTrue('deleted_at' in payload) - self.assertEqual(payload['deleted_at'], str(cur_time)) + self.assertEqual(payload['deleted_at'], timeutils.strtime(cur_time)) image_ref_url = utils.generate_image_url(FAKE_IMAGE_REF) self.assertEquals(payload['image_ref_url'], image_ref_url) @@ -1764,7 +1765,7 @@ class ComputeTestCase(BaseTestCase): self.assertTrue('display_name' in payload) self.assertTrue('created_at' in payload) self.assertTrue('launched_at' in payload) - self.assertEqual(payload['launched_at'], str(cur_time)) + self.assertEqual(payload['launched_at'], timeutils.strtime(cur_time)) self.assertEquals(payload['image_ref_url'], new_image_ref_url) self.compute.terminate_instance(self.context, instance=jsonutils.to_primitive(inst_ref)) @@ -1815,7 +1816,7 @@ class ComputeTestCase(BaseTestCase): self.assertTrue('display_name' in payload) self.assertTrue('created_at' in payload) self.assertTrue('launched_at' in payload) - self.assertEqual(payload['launched_at'], str(cur_time)) + self.assertEqual(payload['launched_at'], timeutils.strtime(cur_time)) image_ref_url = utils.generate_image_url(FAKE_IMAGE_REF) self.assertEquals(payload['image_ref_url'], image_ref_url) self.compute.terminate_instance(self.context, @@ -2287,6 +2288,12 @@ class ComputeTestCase(BaseTestCase): self.stubs.Set(cinder.API, 'get', fake_volume_get) + def fake_instance_update(context, instance_uuid, **updates): + return db.instance_update_and_get_original(context, instance_uuid, + updates) + self.stubs.Set(self.compute, '_instance_update', + fake_instance_update) + # creating mocks self.mox.StubOutWithMock(rpc, 'call') diff --git a/nova/tests/compute/test_compute_utils.py b/nova/tests/compute/test_compute_utils.py index 8a732be60..3c725e4d1 100644 --- a/nova/tests/compute/test_compute_utils.py +++ b/nova/tests/compute/test_compute_utils.py @@ -215,6 +215,7 @@ class UsageInfoTestCase(test.TestCase): self.stubs.Set(network_api.API, 'get_instance_nw_info', fake_get_nw_info) + self.flags(use_local=True, group='conductor') self.flags(compute_driver='nova.virt.fake.FakeDriver', notification_driver=[test_notifier.__name__], network_manager='nova.network.manager.FlatManager') diff --git a/nova/tests/conductor/test_conductor.py b/nova/tests/conductor/test_conductor.py index fbf7d0325..e3138fd34 100644 --- a/nova/tests/conductor/test_conductor.py +++ b/nova/tests/conductor/test_conductor.py @@ -22,6 +22,7 @@ from nova.conductor import manager as conductor_manager from nova.conductor import rpcapi as conductor_rpcapi from nova import context from nova import db +from nova.db.sqlalchemy import models from nova import notifications from nova import test @@ -131,3 +132,30 @@ class ConductorImportTest(test.TestCase): self.flags(use_local=False, group='conductor') self.assertTrue(isinstance(conductor.API(), conductor_api.API)) + + +class ConductorPolicyTest(test.TestCase): + def test_all_allowed_keys(self): + + def fake_db_instance_update(self, *args, **kwargs): + return None, None + self.stubs.Set(db, 'instance_update_and_get_original', + fake_db_instance_update) + + ctxt = context.RequestContext('fake-user', 'fake-project') + conductor = conductor_api.LocalAPI() + updates = {} + for key in conductor_manager.allowed_updates: + updates[key] = 'foo' + conductor.instance_update(ctxt, 'fake-instance', **updates) + + def test_allowed_keys_are_real(self): + instance = models.Instance() + keys = list(conductor_manager.allowed_updates) + + # NOTE(danms): expected_task_state is a parameter that gets + # passed to the db layer, but is not actually an instance attribute + del keys[keys.index('expected_task_state')] + + for key in keys: + self.assertTrue(hasattr(instance, key)) diff --git a/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.json.tpl b/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.json.tpl index 30444099d..555901b2e 100644 --- a/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.json.tpl +++ b/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.json.tpl @@ -19,6 +19,11 @@ "host_name": "%(host_name)s", "service": "scheduler", "zone": "nova" + }, + { + "host_name": "%(host_name)s", + "service": "conductor", + "zone": "nova" } ] } diff --git a/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.xml.tpl b/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.xml.tpl index 4fc35a54b..25ef5a299 100644 --- a/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.xml.tpl +++ b/nova/tests/integrated/api_samples/os-hosts/hosts-list-resp.xml.tpl @@ -4,4 +4,5 @@ <host host_name="%(host_name)s" service="cert"/> <host host_name="%(host_name)s" service="network"/> <host host_name="%(host_name)s" service="scheduler"/> + <host host_name="%(host_name)s" service="conductor"/> </hosts> diff --git a/nova/tests/integrated/integrated_helpers.py b/nova/tests/integrated/integrated_helpers.py index 825881137..7c316aaa8 100644 --- a/nova/tests/integrated/integrated_helpers.py +++ b/nova/tests/integrated/integrated_helpers.py @@ -77,6 +77,8 @@ class _IntegratedTestBase(test.TestCase): self.scheduler = self.start_service('cert') self.network = self.start_service('network') self.scheduler = self.start_service('scheduler') + self.conductor = self.start_service( + 'conductor', manager='nova.conductor.manager.ConductorManager') self._start_api_service() diff --git a/nova/tests/integrated/test_servers.py b/nova/tests/integrated/test_servers.py index d971af4f4..728fc3386 100644 --- a/nova/tests/integrated/test_servers.py +++ b/nova/tests/integrated/test_servers.py @@ -29,6 +29,10 @@ LOG = logging.getLogger(__name__) class ServersTest(integrated_helpers._IntegratedTestBase): + def setUp(self): + super(ServersTest, self).setUp() + self.conductor = self.start_service( + 'conductor', manager='nova.conductor.manager.ConductorManager') def _wait_for_state_change(self, server, from_status): for i in xrange(0, 50): |
