diff options
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/api/openstack/compute/contrib/test_admin_actions.py | 67 | ||||
| -rw-r--r-- | nova/tests/conductor/test_conductor.py | 68 |
2 files changed, 99 insertions, 36 deletions
diff --git a/nova/tests/api/openstack/compute/contrib/test_admin_actions.py b/nova/tests/api/openstack/compute/contrib/test_admin_actions.py index 2efb6fe5a..5e64bdf94 100644 --- a/nova/tests/api/openstack/compute/contrib/test_admin_actions.py +++ b/nova/tests/api/openstack/compute/contrib/test_admin_actions.py @@ -22,10 +22,10 @@ from nova.api.openstack import compute from nova.api.openstack.compute.contrib import admin_actions from nova.compute import api as compute_api from nova.compute import vm_states +from nova.conductor import api as conductor_api from nova import context from nova import exception from nova.openstack.common import jsonutils -from nova.scheduler import rpcapi as scheduler_rpcapi from nova import test from nova.tests.api.openstack import fakes @@ -140,16 +140,15 @@ class AdminActionsTest(test.TestCase): task_state, expected_task_state): return None - def fake_scheduler_api_live_migration(self, context, dest, - block_migration=False, - disk_over_commit=False, instance=None, - instance_id=None, topic=None): + def fake_migrate_server(self, context, instance, + scheduler_hint, live, rebuild, flavor, + block_migration, disk_over_commit): return None self.stubs.Set(compute_api.API, 'update', fake_update) - self.stubs.Set(scheduler_rpcapi.SchedulerAPI, - 'live_migration', - fake_scheduler_api_live_migration) + self.stubs.Set(conductor_api.ComputeTaskAPI, + 'migrate_server', + fake_migrate_server) res = req.get_response(app) self.assertEqual(res.status_int, 202) @@ -194,16 +193,15 @@ class AdminActionsTest(test.TestCase): task_state, expected_task_state): return None - def fake_scheduler_api_live_migration(context, dest, - block_migration=False, - disk_over_commit=False, instance=None, - instance_id=None, topic=None): + def fake_migrate_server(self, context, instance, + scheduler_hint, live, rebuild, flavor, + block_migration, disk_over_commit): raise exception.ComputeServiceUnavailable(host='host') self.stubs.Set(compute_api.API, 'update', fake_update) - self.stubs.Set(scheduler_rpcapi.SchedulerAPI, - 'live_migration', - fake_scheduler_api_live_migration) + self.stubs.Set(conductor_api.ComputeTaskAPI, + 'migrate_server', + fake_migrate_server) res = req.get_response(app) self.assertEqual(res.status_int, 400) @@ -232,16 +230,15 @@ class AdminActionsTest(test.TestCase): task_state, expected_task_state): return None - def fake_scheduler_api_live_migration(context, dest, - block_migration=False, - disk_over_commit=False, instance=None, - instance_id=None, topic=None): + def fake_migrate_server(self, context, instance, + scheduler_hint, live, rebuild, flavor, + block_migration, disk_over_commit): raise exception.InvalidHypervisorType() self.stubs.Set(compute_api.API, 'update', fake_update) - self.stubs.Set(scheduler_rpcapi.SchedulerAPI, - 'live_migration', - fake_scheduler_api_live_migration) + self.stubs.Set(conductor_api.ComputeTaskAPI, + 'migrate_server', + fake_migrate_server) res = req.get_response(app) self.assertEqual(res.status_int, 400) @@ -270,16 +267,15 @@ class AdminActionsTest(test.TestCase): task_state, expected_task_state): return None - def fake_scheduler_api_live_migration(context, dest, - block_migration=False, - disk_over_commit=False, instance=None, - instance_id=None, topic=None): + def fake_migrate_server(self, context, instance, + scheduler_hint, live, rebuild, flavor, + block_migration, disk_over_commit): raise exception.UnableToMigrateToSelf(self.UUID, host='host') self.stubs.Set(compute_api.API, 'update', fake_update) - self.stubs.Set(scheduler_rpcapi.SchedulerAPI, - 'live_migration', - fake_scheduler_api_live_migration) + self.stubs.Set(conductor_api.ComputeTaskAPI, + 'migrate_server', + fake_migrate_server) res = req.get_response(app) self.assertEqual(res.status_int, 400) @@ -308,16 +304,15 @@ class AdminActionsTest(test.TestCase): task_state, expected_task_state): return None - def fake_scheduler_api_live_migration(context, dest, - block_migration=False, - disk_over_commit=False, instance=None, - instance_id=None, topic=None): + def fake_migrate_server(self, context, instance, + scheduler_hint, live, rebuild, flavor, + block_migration, disk_over_commit): raise exception.DestinationHypervisorTooOld() self.stubs.Set(compute_api.API, 'update', fake_update) - self.stubs.Set(scheduler_rpcapi.SchedulerAPI, - 'live_migration', - fake_scheduler_api_live_migration) + self.stubs.Set(conductor_api.ComputeTaskAPI, + 'migrate_server', + fake_migrate_server) res = req.get_response(app) self.assertEqual(res.status_int, 400) diff --git a/nova/tests/conductor/test_conductor.py b/nova/tests/conductor/test_conductor.py index c578e6de2..28d0074f2 100644 --- a/nova/tests/conductor/test_conductor.py +++ b/nova/tests/conductor/test_conductor.py @@ -1166,3 +1166,71 @@ class ConductorPolicyTest(test.TestCase): for key in keys: self.assertTrue(hasattr(instance, key)) + + +class _BaseTaskTestCase(object): + def setUp(self): + super(_BaseTaskTestCase, self).setUp() + self.user_id = 'fake' + self.project_id = 'fake' + self.context = FakeContext(self.user_id, self.project_id) + + def test_migrate_server(self): + self.mox.StubOutWithMock(self.conductor_manager.scheduler_rpcapi, + 'live_migration') + self.conductor_manager.scheduler_rpcapi.live_migration(self.context, + 'block_migration', 'disk_over_commit', 'instance', 'destination') + self.mox.ReplayAll() + self.conductor.migrate_server(self.context, 'instance', + {'host': 'destination'}, True, False, None, 'block_migration', + 'disk_over_commit') + + def test_migrate_server_fails_with_non_live(self): + self.assertRaises(NotImplementedError, self.conductor.migrate_server, + self.context, None, None, False, False, None, None, None) + + def test_migrate_server_fails_with_rebuild(self): + self.assertRaises(NotImplementedError, self.conductor.migrate_server, + self.context, None, None, True, True, None, None, None) + + def test_migrate_server_fails_with_flavor(self): + self.assertRaises(NotImplementedError, self.conductor.migrate_server, + self.context, None, None, True, False, "dummy", None, None) + + +class ConductorTaskTestCase(_BaseTaskTestCase, test.TestCase): + """ComputeTaskManager Tests.""" + def setUp(self): + super(ConductorTaskTestCase, self).setUp() + self.conductor = conductor_manager.ComputeTaskManager() + self.conductor_manager = self.conductor + + +class ConductorTaskRPCAPITestCase(_BaseTaskTestCase, test.TestCase): + """Conductor compute_task RPC namespace Tests.""" + def setUp(self): + super(ConductorTaskRPCAPITestCase, self).setUp() + self.conductor_service = self.start_service( + 'conductor', manager='nova.conductor.manager.ConductorManager') + self.conductor = conductor_rpcapi.ComputeTaskAPI() + service_manager = self.conductor_service.manager + self.conductor_manager = service_manager.compute_task_mgr + + +class ConductorTaskAPITestCase(_BaseTaskTestCase, test.TestCase): + """Compute task API Tests.""" + def setUp(self): + super(ConductorTaskAPITestCase, self).setUp() + self.conductor_service = self.start_service( + 'conductor', manager='nova.conductor.manager.ConductorManager') + self.conductor = conductor_api.ComputeTaskAPI() + service_manager = self.conductor_service.manager + self.conductor_manager = service_manager.compute_task_mgr + + +class ConductorLocalComputeTaskAPITestCase(ConductorTaskAPITestCase): + """Conductor LocalComputeTaskAPI Tests.""" + def setUp(self): + super(ConductorLocalComputeTaskAPITestCase, self).setUp() + self.conductor = conductor_api.LocalComputeTaskAPI() + self.conductor_manager = self.conductor._manager._target |
