diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-02-22 17:20:24 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-02-22 17:20:24 +0000 |
| commit | 60cec0a7f54a9e7ae1c3b32fb39c7e7ee24dfde2 (patch) | |
| tree | 9d308826cc31ce037f6ac5d1a223c915e7a6572c /nova/tests | |
| parent | f300018b1a731a9e427e6b77a05376d78fa8f9ec (diff) | |
| parent | 424de7eea2588a3f4143e5874aac01d0dd1917e6 (diff) | |
Merge "blueprint host-aggregates: improvements and clean-up"
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/test_db_api.py | 23 | ||||
| -rw-r--r-- | nova/tests/test_xenapi.py | 7 | ||||
| -rw-r--r-- | nova/tests/xenapi/stubs.py | 18 |
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 |
