Merge "Adding traceback to async faults"
This commit is contained in:
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user