summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-02-22 17:20:24 +0000
committerGerrit Code Review <review@openstack.org>2012-02-22 17:20:24 +0000
commit60cec0a7f54a9e7ae1c3b32fb39c7e7ee24dfde2 (patch)
tree9d308826cc31ce037f6ac5d1a223c915e7a6572c /nova/tests
parentf300018b1a731a9e427e6b77a05376d78fa8f9ec (diff)
parent424de7eea2588a3f4143e5874aac01d0dd1917e6 (diff)
Merge "blueprint host-aggregates: improvements and clean-up"
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/test_db_api.py23
-rw-r--r--nova/tests/test_xenapi.py7
-rw-r--r--nova/tests/xenapi/stubs.py18
3 files changed, 35 insertions, 13 deletions
diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py
index 4cb17d958..cd1adcfbf 100644
--- a/nova/tests/test_db_api.py
+++ b/nova/tests/test_db_api.py
@@ -338,6 +338,15 @@ class AggregateDBApiTestCase(test.TestCase):
result = _create_aggregate(metadata=None)
self.assertEqual(result['operational_state'], 'created')
+ def test_aggregate_create_avoid_name_conflict(self):
+ """Test we can avoid conflict on deleted aggregates."""
+ r1 = _create_aggregate(metadata=None)
+ db.aggregate_delete(context.get_admin_context(), r1.id)
+ values = {'name': r1.name, 'availability_zone': 'new_zone'}
+ r2 = _create_aggregate(values=values)
+ self.assertEqual(r2.name, values['name'])
+ self.assertEqual(r2.availability_zone, values['availability_zone'])
+
def test_aggregate_create_raise_exist_exc(self):
"""Ensure aggregate names are distinct."""
_create_aggregate(metadata=None)
@@ -383,6 +392,20 @@ class AggregateDBApiTestCase(test.TestCase):
self.assertEqual(_get_fake_aggr_hosts(), expected.hosts)
self.assertEqual(_get_fake_aggr_metadata(), expected.metadetails)
+ def test_aggregate_get_by_host(self):
+ """Ensure we can get an aggregate by host."""
+ ctxt = context.get_admin_context()
+ r1 = _create_aggregate_with_hosts(context=ctxt)
+ r2 = db.aggregate_get_by_host(ctxt, 'foo.openstack.org')
+ self.assertEqual(r1.id, r2.id)
+
+ def test_aggregate_get_by_host_not_found(self):
+ """Ensure AggregateHostNotFound is raised with unknown host."""
+ ctxt = context.get_admin_context()
+ _create_aggregate_with_hosts(context=ctxt)
+ self.assertRaises(exception.AggregateHostNotFound,
+ db.aggregate_get_by_host, ctxt, 'unknown_host')
+
def test_aggregate_delete_raise_not_found(self):
"""Ensure AggregateNotFound is raised when deleting an aggregate."""
ctxt = context.get_admin_context()
diff --git a/nova/tests/test_xenapi.py b/nova/tests/test_xenapi.py
index b08bbd69c..312aaea37 100644
--- a/nova/tests/test_xenapi.py
+++ b/nova/tests/test_xenapi.py
@@ -1757,10 +1757,13 @@ class XenAPIAggregateTestCase(test.TestCase):
'Dom0IptablesFirewallDriver',
host='host')
xenapi_fake.reset()
+ host_ref = xenapi_fake.get_all('host')[0]
stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
self.context = context.get_admin_context()
self.conn = xenapi_conn.get_connection(False)
- self.fake_metadata = {'master_compute': 'host'}
+ self.fake_metadata = {'master_compute': 'host',
+ 'host': xenapi_fake.get_record('host',
+ host_ref)['uuid']}
def tearDown(self):
super(XenAPIAggregateTestCase, self).tearDown()
@@ -1871,7 +1874,7 @@ class XenAPIAggregateTestCase(test.TestCase):
aggregate = self._aggregate_setup(aggr_state=aggregate_states.ACTIVE,
hosts=['host', 'host2'],
metadata=self.fake_metadata)
- self.assertRaises(exception.AggregateError,
+ self.assertRaises(exception.InvalidAggregateAction,
self.conn._pool.remove_from_aggregate,
self.context, aggregate, "host")
diff --git a/nova/tests/xenapi/stubs.py b/nova/tests/xenapi/stubs.py
index df444d515..01077be8d 100644
--- a/nova/tests/xenapi/stubs.py
+++ b/nova/tests/xenapi/stubs.py
@@ -202,6 +202,12 @@ class FakeSessionForVMTests(fake.SessionBase):
vm['is_a_template'] = False
vm['is_control_domain'] = False
vm['domid'] = random.randrange(1, 1 << 16)
+ return vm
+
+ def VM_start_on(self, _1, vm_ref, host_ref, _2, _3):
+ vm_rec = self.VM_start(_1, vm_ref, _2, _3)
+ host_rec = fake.get_record('host', host_ref)
+ vm_rec['resident_on'] = host_rec['uuid']
def VM_snapshot(self, session_ref, vm_ref, label):
status = "Running"
@@ -334,7 +340,7 @@ class FakeSessionForVolumeFailedTests(FakeSessionForVolumeTests):
pass
-class FakeSessionForMigrationTests(fake.SessionBase):
+class FakeSessionForMigrationTests(FakeSessionForVMTests):
"""Stubs out a XenAPISession for Migration tests"""
def __init__(self, uri):
super(FakeSessionForMigrationTests, self).__init__(uri)
@@ -342,16 +348,6 @@ class FakeSessionForMigrationTests(fake.SessionBase):
def VDI_get_by_uuid(self, *args):
return 'hurr'
- def VM_start(self, _1, ref, _2, _3):
- vm = fake.get_record('VM', ref)
- if vm['power_state'] != 'Halted':
- raise fake.Failure(['VM_BAD_POWER_STATE', ref, 'Halted',
- vm['power_state']])
- vm['power_state'] = 'Running'
- vm['is_a_template'] = False
- vm['is_control_domain'] = False
- vm['domid'] = random.randrange(1, 1 << 16)
-
def VM_set_name_label(self, *args):
pass