diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-05-16 23:02:30 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-05-16 23:02:30 +0000 |
| commit | 7d1571bae1bd7c96f580965782e614b2be9efba0 (patch) | |
| tree | 0ec9568f51117b117324f0499652367d9d714598 /nova/tests | |
| parent | 5d90b39c36e8e8e1db82318e1d43129a8d2e1108 (diff) | |
| parent | 7b75fe7f571dd95287307f9d1138fb476a6bf721 (diff) | |
Merge "Optional timeout for servers stuck in build"
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/test_compute.py | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py index a40162613..265edf8a9 100644 --- a/nova/tests/test_compute.py +++ b/nova/tests/test_compute.py @@ -1873,6 +1873,110 @@ class ComputeTestCase(BaseTestCase): for uuid, status in expected_migration_status.iteritems(): self.assertEqual(status, fetch_instance_migration_status(uuid)) + def test_instance_build_timeout_disabled(self): + self.flags(instance_build_timeout=0) + ctxt = context.get_admin_context() + called = {'get_all': False, 'set_error_state': 0} + created_at = utils.utcnow() + datetime.timedelta(seconds=-60) + + def fake_instance_get_all_by_filters(*args, **kwargs): + called['get_all'] = True + return instances[:] + + self.stubs.Set(db, 'instance_get_all_by_filters', + fake_instance_get_all_by_filters) + + def fake_set_instance_error_state(_ctxt, instance_uuid, **kwargs): + called['set_error_state'] += 1 + + self.stubs.Set(self.compute, '_set_instance_error_state', + fake_set_instance_error_state) + + instance_map = {} + instances = [] + for x in xrange(5): + uuid = 'fake-uuid-%s' % x + instance_map[uuid] = {'uuid': uuid, 'host': FLAGS.host, + 'vm_state': vm_states.BUILDING, + 'created_at': created_at} + instances.append(instance_map[uuid]) + + self.compute._check_instance_build_time(ctxt) + self.assertFalse(called['get_all']) + self.assertEqual(called['set_error_state'], 0) + + def test_instance_build_timeout(self): + self.flags(instance_build_timeout=30) + ctxt = context.get_admin_context() + called = {'get_all': False, 'set_error_state': 0} + created_at = utils.utcnow() + datetime.timedelta(seconds=-60) + + def fake_instance_get_all_by_filters(*args, **kwargs): + called['get_all'] = True + return instances[:] + + self.stubs.Set(db, 'instance_get_all_by_filters', + fake_instance_get_all_by_filters) + + def fake_set_instance_error_state(_ctxt, instance_uuid, **kwargs): + called['set_error_state'] += 1 + + self.stubs.Set(self.compute, '_set_instance_error_state', + fake_set_instance_error_state) + + instance_map = {} + instances = [] + for x in xrange(5): + uuid = 'fake-uuid-%s' % x + instance_map[uuid] = {'uuid': uuid, 'host': FLAGS.host, + 'vm_state': vm_states.BUILDING, + 'created_at': created_at} + instances.append(instance_map[uuid]) + + self.compute._check_instance_build_time(ctxt) + self.assertTrue(called['get_all']) + self.assertEqual(called['set_error_state'], 5) + + def test_instance_build_timeout_mixed_instances(self): + self.flags(instance_build_timeout=30) + ctxt = context.get_admin_context() + called = {'get_all': False, 'set_error_state': 0} + created_at = utils.utcnow() + datetime.timedelta(seconds=-60) + + def fake_instance_get_all_by_filters(*args, **kwargs): + called['get_all'] = True + return instances[:] + + self.stubs.Set(db, 'instance_get_all_by_filters', + fake_instance_get_all_by_filters) + + def fake_set_instance_error_state(_ctxt, instance_uuid, **kwargs): + called['set_error_state'] += 1 + + self.stubs.Set(self.compute, '_set_instance_error_state', + fake_set_instance_error_state) + + instance_map = {} + instances = [] + #expired instances + for x in xrange(4): + uuid = 'fake-uuid-%s' % x + instance_map[uuid] = {'uuid': uuid, 'host': FLAGS.host, + 'vm_state': vm_states.BUILDING, + 'created_at': created_at} + instances.append(instance_map[uuid]) + + #not expired + uuid = 'fake-uuid-5' + instance_map[uuid] = {'uuid': uuid, 'host': FLAGS.host, + 'vm_state': vm_states.BUILDING, + 'created_at': utils.utcnow()} + instances.append(instance_map[uuid]) + + self.compute._check_instance_build_time(ctxt) + self.assertTrue(called['get_all']) + self.assertEqual(called['set_error_state'], 4) + class ComputeAPITestCase(BaseTestCase): |
