Merge "Adding traceback to async faults"

This commit is contained in:
Jenkins
2012-02-17 22:39:56 +00:00
committed by Gerrit Code Review

View File

@@ -21,6 +21,7 @@ Tests For Compute
""" """
from copy import copy from copy import copy
import datetime import datetime
import sys
import time import time
from webob import exc from webob import exc
@@ -205,7 +206,7 @@ class ComputeTestCase(BaseTestCase):
called = {'fault_added': False} called = {'fault_added': False}
def did_it_add_fault(_ctxt, _inst_uuid, _e): def did_it_add_fault(*args):
called['fault_added'] = True called['fault_added'] = True
self.stubs.Set(self.compute, 'add_instance_fault_from_exc', self.stubs.Set(self.compute, 'add_instance_fault_from_exc',
@@ -225,7 +226,7 @@ class ComputeTestCase(BaseTestCase):
called = {'fault_added': False} called = {'fault_added': False}
def did_it_add_fault(_ctxt, _inst_uuid, _e): def did_it_add_fault(*args):
called['fault_added'] = True called['fault_added'] = True
self.stubs.Set(self.compute, 'add_instance_fault_from_exc', self.stubs.Set(self.compute, 'add_instance_fault_from_exc',
@@ -563,7 +564,7 @@ class ComputeTestCase(BaseTestCase):
self.stubs.Set(nova.virt.fake.FakeConnection, 'get_info', self.stubs.Set(nova.virt.fake.FakeConnection, 'get_info',
fake_driver_get_info) fake_driver_get_info)
self.assertRaises(exception.Error, self.assertRaises(exception.Invalid,
self.compute.set_admin_password, self.compute.set_admin_password,
self.context, self.context,
instance['uuid']) instance['uuid'])
@@ -595,7 +596,7 @@ class ComputeTestCase(BaseTestCase):
#error raised from the driver should not reveal internal information #error raised from the driver should not reveal internal information
#so a new error is raised #so a new error is raised
self.assertRaises(exception.Error, self.assertRaises(exception.NovaException,
self.compute.set_admin_password, self.compute.set_admin_password,
self.context, instance_uuid) self.context, instance_uuid)
@@ -884,7 +885,7 @@ class ComputeTestCase(BaseTestCase):
"""Ensure failure when running an instance that already exists""" """Ensure failure when running an instance that already exists"""
instance = self._create_fake_instance() instance = self._create_fake_instance()
self.compute.run_instance(self.context, instance['uuid']) self.compute.run_instance(self.context, instance['uuid'])
self.assertRaises(exception.Error, self.assertRaises(exception.Invalid,
self.compute.run_instance, self.compute.run_instance,
self.context, self.context,
instance['uuid']) instance['uuid'])
@@ -1472,13 +1473,68 @@ class ComputeTestCase(BaseTestCase):
self.assertEqual(power_state.NOSTATE, instances[0]['power_state']) self.assertEqual(power_state.NOSTATE, instances[0]['power_state'])
def test_add_instance_fault(self): def test_add_instance_fault(self):
exc_info = None
instance_uuid = str(utils.gen_uuid())
def fake_db_fault_create(ctxt, values):
self.assertTrue(values['details'].startswith('test'))
self.assertTrue('raise NotImplementedError' in values['details'])
del values['details']
expected = {
'code': 500,
'message': 'NotImplementedError',
'instance_uuid': instance_uuid,
}
self.assertEquals(expected, values)
try:
raise NotImplementedError('test')
except:
exc_info = sys.exc_info()
self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
ctxt = context.get_admin_context()
self.compute.add_instance_fault_from_exc(ctxt, instance_uuid,
NotImplementedError('test'),
exc_info)
def test_add_instance_fault_user_error(self):
exc_info = None
instance_uuid = str(utils.gen_uuid())
def fake_db_fault_create(ctxt, values):
expected = {
'code': 400,
'message': 'Invalid',
'details': 'fake details',
'instance_uuid': instance_uuid,
}
self.assertEquals(expected, values)
user_exc = exception.Invalid('fake details', code=400)
try:
raise user_exc
except:
exc_info = sys.exc_info()
self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
ctxt = context.get_admin_context()
self.compute.add_instance_fault_from_exc(ctxt, instance_uuid,
user_exc, exc_info)
def test_add_instance_fault_no_exc_info(self):
instance_uuid = str(utils.gen_uuid()) instance_uuid = str(utils.gen_uuid())
def fake_db_fault_create(ctxt, values): def fake_db_fault_create(ctxt, values):
expected = { expected = {
'code': 500, 'code': 500,
'message': 'NotImplementedError', 'message': 'NotImplementedError',
'details': '', 'details': 'test',
'instance_uuid': instance_uuid, 'instance_uuid': instance_uuid,
} }
self.assertEquals(expected, values) self.assertEquals(expected, values)
@@ -1487,25 +1543,7 @@ class ComputeTestCase(BaseTestCase):
ctxt = context.get_admin_context() ctxt = context.get_admin_context()
self.compute.add_instance_fault_from_exc(ctxt, instance_uuid, self.compute.add_instance_fault_from_exc(ctxt, instance_uuid,
NotImplementedError()) NotImplementedError('test'))
def test_add_instance_fault_http_exception(self):
instance_uuid = str(utils.gen_uuid())
def fake_db_fault_create(ctxt, values):
expected = {
'code': 404,
'message': 'HTTPNotFound',
'details': 'Error Details',
'instance_uuid': instance_uuid,
}
self.assertEquals(expected, values)
self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
ctxt = context.get_admin_context()
self.compute.add_instance_fault_from_exc(ctxt, instance_uuid,
exc.HTTPNotFound("Error Details"))
class ComputeAPITestCase(BaseTestCase): class ComputeAPITestCase(BaseTestCase):