summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-03-04 17:04:36 +0000
committerGerrit Code Review <review@openstack.org>2013-03-04 17:04:36 +0000
commitbcdbe9ba881db8b38525bfc44a182e6b210459cd (patch)
tree5a2333a8418dee0e5b654172d2843f6116323d73 /nova/tests
parent8f3a7f73ffad0c64b89e926e2a672f8333da3636 (diff)
parentac0f6eb063fc5a5c0a9410402ecf57fae1faf594 (diff)
downloadnova-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.py24
-rw-r--r--nova/tests/compute/test_resource_tracker.py25
-rw-r--r--nova/tests/conductor/test_conductor.py8
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(