Add ServersViewBuilderTestV296 unit test class
This new class is an unit test class for the server view builder v2.96, which reproduces the bug #2095364. The bug is the list server API and the list server details API returns 500 Internal Server Error if request_spec object is missing by any reason. Related-Bug: #2095364 Change-Id: I80d06ea335dd6fb311c4b9c9a79dbaa46ebe695f Signed-off-by: Wesley Hershberger <wesley.hershberger@canonical.com> (cherry picked from commit466156c3d5) (cherry picked from commit706642bde3)
This commit is contained in:
committed by
Wesley Hershberger
parent
ad1bd175ae
commit
ea00e28452
@@ -8320,6 +8320,61 @@ class ServersViewBuilderTestV269(_ServersViewBuilderTest):
|
||||
self.assertThat(output, matchers.DictMatches(expected))
|
||||
|
||||
|
||||
class ServersViewBuilderTestV296(_ServersViewBuilderTest):
|
||||
"""Server ViewBuilder test for microversion 2.96
|
||||
|
||||
The test targets of this class is regression test for bugs
|
||||
related to this microversion.
|
||||
"""
|
||||
microversion = '2.96'
|
||||
|
||||
def setUp(self):
|
||||
super(ServersViewBuilderTestV296, self).setUp()
|
||||
self.view_builder = views.servers.ViewBuilder()
|
||||
self.ctxt = context.RequestContext('fake', self.project_id)
|
||||
|
||||
def req(self, url, use_admin_context=False):
|
||||
return fakes.HTTPRequest.blank(
|
||||
url,
|
||||
use_admin_context=use_admin_context,
|
||||
version=self.microversion)
|
||||
|
||||
def create_instance(self, instance_id, uuid, display_name):
|
||||
db_inst = fakes.stub_instance(
|
||||
id=instance_id,
|
||||
image_ref="5",
|
||||
uuid=uuid,
|
||||
display_name=display_name,
|
||||
include_fake_metadata=False,
|
||||
availability_zone='nova',
|
||||
launched_at=None,
|
||||
terminated_at=None,
|
||||
task_state=None,
|
||||
vm_state=vm_states.ACTIVE,
|
||||
power_state=1)
|
||||
|
||||
return fake_instance.fake_instance_obj(
|
||||
self.request.context,
|
||||
expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS,
|
||||
**db_inst)
|
||||
|
||||
@mock.patch('nova.objects.RequestSpec.get_by_instance_uuids')
|
||||
def test_list_view_with_missing_request_specs(self, m_rs):
|
||||
|
||||
self.instances = [
|
||||
self.instance,
|
||||
self.create_instance(2, uuids.fake1, 'fake-server')
|
||||
]
|
||||
# Return only first instance's request spec
|
||||
m_rs.return_value = [objects.RequestSpec(
|
||||
instance_uuid=self.instance.uuid,
|
||||
availability_zone=self.instance.availability_zone)]
|
||||
|
||||
req = self.req('/%s/servers' % self.project_id)
|
||||
self.assertRaises(KeyError, self.view_builder.index,
|
||||
req, self.instances, False)
|
||||
|
||||
|
||||
class ServersActionsJsonTestV239(test.NoDBTestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
Reference in New Issue
Block a user