diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-03-04 17:04:36 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-03-04 17:04:36 +0000 |
commit | bcdbe9ba881db8b38525bfc44a182e6b210459cd (patch) | |
tree | 5a2333a8418dee0e5b654172d2843f6116323d73 /nova/tests | |
parent | 8f3a7f73ffad0c64b89e926e2a672f8333da3636 (diff) | |
parent | ac0f6eb063fc5a5c0a9410402ecf57fae1faf594 (diff) | |
download | nova-bcdbe9ba881db8b38525bfc44a182e6b210459cd.tar.gz nova-bcdbe9ba881db8b38525bfc44a182e6b210459cd.tar.xz nova-bcdbe9ba881db8b38525bfc44a182e6b210459cd.zip |
Merge "Compute manager should remove dead resources"
Diffstat (limited to 'nova/tests')
-rw-r--r-- | nova/tests/compute/test_multiple_nodes.py | 24 | ||||
-rw-r--r-- | nova/tests/compute/test_resource_tracker.py | 25 | ||||
-rw-r--r-- | nova/tests/conductor/test_conductor.py | 8 |
3 files changed, 54 insertions, 3 deletions
diff --git a/nova/tests/compute/test_multiple_nodes.py b/nova/tests/compute/test_multiple_nodes.py index 1a967c5e4..8bf3781c7 100644 --- a/nova/tests/compute/test_multiple_nodes.py +++ b/nova/tests/compute/test_multiple_nodes.py @@ -19,7 +19,6 @@ from oslo.config import cfg from nova import context -from nova import exception from nova.openstack.common import importutils from nova import test from nova.virt import fake @@ -72,8 +71,8 @@ class FakeDriverMultiNodeTestCase(BaseTestCase): res_b = self.driver.get_available_resource('bbb') self.assertEqual(res_b['hypervisor_hostname'], 'bbb') - self.assertRaises(exception.NovaException, - self.driver.get_available_resource, 'xxx') + res_x = self.driver.get_available_resource('xxx') + self.assertEqual(res_x, {}) class MultiNodeComputeTestCase(BaseTestCase): @@ -101,3 +100,22 @@ class MultiNodeComputeTestCase(BaseTestCase): self.compute.update_available_resource(ctx) self.assertEqual(sorted(self.compute._resource_tracker_dict.keys()), ['A', 'B', 'C']) + + def test_compute_manager_removes_deleted_node(self): + ctx = context.get_admin_context() + fake.set_nodes(['A', 'B']) + self.compute.update_available_resource(ctx) + + rt_A = self.compute._resource_tracker_dict['A'] + rt_B = self.compute._resource_tracker_dict['B'] + self.mox.StubOutWithMock(rt_A, 'update_available_resource') + self.mox.StubOutWithMock(rt_B, 'update_available_resource') + rt_A.update_available_resource(ctx) + rt_B.update_available_resource(ctx, delete=True) + self.mox.ReplayAll() + + fake.set_nodes(['A']) + self.compute.update_available_resource(ctx) + self.mox.VerifyAll() + self.assertEqual(sorted(self.compute._resource_tracker_dict.keys()), + ['A']) diff --git a/nova/tests/compute/test_resource_tracker.py b/nova/tests/compute/test_resource_tracker.py index 07d88475b..dc1dc770c 100644 --- a/nova/tests/compute/test_resource_tracker.py +++ b/nova/tests/compute/test_resource_tracker.py @@ -347,6 +347,9 @@ class BaseTrackerTestCase(BaseTestCase): # database models and a compatible compute driver: super(BaseTrackerTestCase, self).setUp() + self.updated = False + self.deleted = False + self.tracker = self._tracker() self._migrations = {} @@ -354,6 +357,8 @@ class BaseTrackerTestCase(BaseTestCase): self._fake_service_get_by_compute_host) self.stubs.Set(db, 'compute_node_update', self._fake_compute_node_update) + self.stubs.Set(db, 'compute_node_delete', + self._fake_compute_node_delete) self.stubs.Set(db, 'migration_update', self._fake_migration_update) self.stubs.Set(db, 'migration_get_in_progress_by_host_and_node', @@ -375,6 +380,11 @@ class BaseTrackerTestCase(BaseTestCase): self.compute.update(values) return self.compute + def _fake_compute_node_delete(self, ctx, compute_node_id): + self.deleted = True + self.compute.update({'deleted': 1}) + return self.compute + def _fake_migration_get_in_progress_by_host_and_node(self, ctxt, host, node): status = ['confirmed', 'reverted'] @@ -892,3 +902,18 @@ class OrphanTestCase(BaseTrackerTestCase): orphans = self.tracker._find_orphaned_instances() self.assertEqual(2, len(orphans)) + + +class DeletedNodeTestCase(BaseTrackerTestCase): + + def test_remove_deleted_node(self): + self.assertFalse(self.tracker.disabled) + self.assertTrue(self.updated) + + def _get_available_resource(nodename): + return {} + self.tracker.driver.get_available_resource = _get_available_resource + + self.tracker.update_available_resource(self.context, delete=True) + self.assertEqual(self.deleted, True) + self.assertEqual(self.compute['deleted'], 1) diff --git a/nova/tests/conductor/test_conductor.py b/nova/tests/conductor/test_conductor.py index 32e685623..72c04e427 100644 --- a/nova/tests/conductor/test_conductor.py +++ b/nova/tests/conductor/test_conductor.py @@ -429,6 +429,14 @@ class _BaseTestCase(object): 'fake-values', False) self.assertEqual(result, 'fake-result') + def test_compute_node_delete(self): + node = {'id': 'fake-id'} + self.mox.StubOutWithMock(db, 'compute_node_delete') + db.compute_node_delete(self.context, node['id']).AndReturn(None) + self.mox.ReplayAll() + result = self.conductor.compute_node_delete(self.context, node) + self.assertEqual(result, None) + def test_instance_fault_create(self): self.mox.StubOutWithMock(db, 'instance_fault_create') db.instance_fault_create(self.context, 'fake-values').AndReturn( |