Update compute API.get() mocks in test_server_metadata

These old unit tests are stubbing out the DB API to
get an instance which is way too low level. This change
updates the stubs to stub out the compute API.get method
instead.

While in here, some old unused stubs are removed and
common fakes code is used.

This is part of a larger series to eventually
drop pre-cellsv2 compatibility code in API.get().

Change-Id: I9542c66b3f6f52a7d29046ba3897ca28fb8e377b
This commit is contained in:
Matt Riedemann 2018-11-02 14:08:58 -04:00
parent 8d089111c8
commit f2fd72a31b
2 changed files with 37 additions and 70 deletions

View File

@ -28,7 +28,6 @@ import nova.db.api
from nova import exception
from nova import test
from nova.tests.unit.api.openstack import fakes
from nova.tests.unit import fake_instance
CONF = cfg.CONF
@ -78,28 +77,6 @@ def stub_max_server_metadata():
return metadata
def return_server(context, server_id, columns_to_join=None):
return fake_instance.fake_db_instance(
**{'id': server_id,
'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64',
'name': 'fake',
'locked': False,
'launched_at': timeutils.utcnow(),
'vm_state': vm_states.ACTIVE})
def return_server_by_uuid(context, server_uuid,
columns_to_join=None, use_slave=False):
return fake_instance.fake_db_instance(
**{'id': 1,
'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64',
'name': 'fake',
'locked': False,
'launched_at': timeutils.utcnow(),
'metadata': stub_server_metadata(),
'vm_state': vm_states.ACTIVE})
def return_server_nonexistent(context, server_id,
columns_to_join=None, use_slave=False):
raise exception.InstanceNotFound(instance_id=server_id)
@ -115,10 +92,14 @@ class ServerMetaDataTestV21(test.TestCase):
def setUp(self):
super(ServerMetaDataTestV21, self).setUp()
fakes.stub_out_key_pair_funcs(self)
self.stub_out('nova.db.api.instance_get', return_server)
self.stub_out('nova.db.api.instance_get_by_uuid',
return_server_by_uuid)
metadata = stub_server_metadata()
self.stub_out('nova.compute.api.API.get',
fakes.fake_compute_get(
**{'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64',
'name': 'fake',
'launched_at': timeutils.utcnow(),
'vm_state': vm_states.ACTIVE,
'metadata': metadata}))
self.stub_out('nova.db.api.instance_metadata_get',
return_server_metadata)
@ -196,12 +177,13 @@ class ServerMetaDataTestV21(test.TestCase):
self.assertIsNone(res)
def test_delete_nonexistent_server(self):
self.stub_out('nova.db.api.instance_get_by_uuid',
return_server_nonexistent)
req = self._get_request('/key1')
req.method = 'DELETE'
self.assertRaises(webob.exc.HTTPNotFound,
self.controller.delete, req, self.uuid, 'key1')
with mock.patch('nova.compute.api.API.get',
side_effect=exception.InstanceNotFound(
instance_id=self.uuid)):
self.assertRaises(webob.exc.HTTPNotFound,
self.controller.delete, req, self.uuid, 'key1')
def test_delete_meta_not_found(self):
self.stub_out('nova.db.api.instance_metadata_get',
@ -299,16 +281,17 @@ class ServerMetaDataTestV21(test.TestCase):
self.controller.create, req, self.uuid, body=body)
def test_create_nonexistent_server(self):
self.stub_out('nova.db.api.instance_get_by_uuid',
return_server_nonexistent)
req = self._get_request()
req.method = 'POST'
body = {"metadata": {"key1": "value1"}}
req.body = jsonutils.dump_as_bytes(body)
req.headers["content-type"] = "application/json"
self.assertRaises(webob.exc.HTTPNotFound,
self.controller.create, req, self.uuid, body=body)
with mock.patch('nova.compute.api.API.get',
side_effect=exception.InstanceNotFound(
instance_id=self.uuid)):
self.assertRaises(webob.exc.HTTPNotFound,
self.controller.create, req, self.uuid,
body=body)
def test_update_metadata(self):
self.stub_out('nova.objects.Instance.save', fake_instance_save)
@ -403,15 +386,17 @@ class ServerMetaDataTestV21(test.TestCase):
body=expected)
def test_update_all_nonexistent_server(self):
self.stub_out('nova.db.api.instance_get', return_server_nonexistent)
req = self._get_request()
req.method = 'PUT'
req.content_type = "application/json"
body = {'metadata': {'key10': 'value10'}}
req.body = jsonutils.dump_as_bytes(body)
self.assertRaises(webob.exc.HTTPNotFound,
self.controller.update_all, req, '100', body=body)
with mock.patch('nova.compute.api.API.get',
side_effect=exception.InstanceNotFound(
instance_id=self.uuid)):
self.assertRaises(webob.exc.HTTPNotFound,
self.controller.update_all, req, self.uuid,
body=body)
def test_update_all_non_dict(self):
self.stub_out('nova.db.api.instance_metadata_update',
@ -437,17 +422,17 @@ class ServerMetaDataTestV21(test.TestCase):
self.assertEqual(expected, res_dict)
def test_update_item_nonexistent_server(self):
self.stub_out('nova.db.api.instance_get_by_uuid',
return_server_nonexistent)
req = self._get_request('/key1')
req.method = 'PUT'
body = {"meta": {"key1": "value1"}}
req.body = jsonutils.dump_as_bytes(body)
req.headers["content-type"] = "application/json"
self.assertRaises(webob.exc.HTTPNotFound,
self.controller.update, req, self.uuid, 'key1',
body=body)
with mock.patch('nova.compute.api.API.get',
side_effect=exception.InstanceNotFound(
instance_id=self.uuid)):
self.assertRaises(webob.exc.HTTPNotFound,
self.controller.update, req, self.uuid, 'key1',
body=body)
def test_update_item_empty_body(self):
self.stub_out('nova.db.api.instance_metadata_update',
@ -667,15 +652,16 @@ class BadStateServerMetaDataTestV21(test.TestCase):
def setUp(self):
super(BadStateServerMetaDataTestV21, self).setUp()
fakes.stub_out_key_pair_funcs(self)
self.stub_out('nova.db.api.instance_metadata_get',
return_server_metadata)
self.stub_out(
'nova.compute.rpcapi.ComputeAPI.change_instance_metadata',
fake_change_instance_metadata)
self.stub_out('nova.db.api.instance_get', self._return_server_in_build)
self.stub_out('nova.db.api.instance_get_by_uuid',
self._return_server_in_build_by_uuid)
self.stub_out('nova.compute.api.API.get',
fakes.fake_compute_get(
**{'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64',
'name': 'fake',
'vm_state': vm_states.BUILDING}))
self.stub_out('nova.db.api.instance_metadata_delete',
delete_server_metadata)
self._set_up_resources()
@ -710,24 +696,6 @@ class BadStateServerMetaDataTestV21(test.TestCase):
self.assertRaises(webob.exc.HTTPConflict, self.controller.update_all,
req, self.uuid, body=expected)
def _return_server_in_build(self, context, server_id,
columns_to_join=None):
return fake_instance.fake_db_instance(
**{'id': server_id,
'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64',
'name': 'fake',
'locked': False,
'vm_state': vm_states.BUILDING})
def _return_server_in_build_by_uuid(self, context, server_uuid,
columns_to_join=None, use_slave=False):
return fake_instance.fake_db_instance(
**{'id': 1,
'uuid': '0cc3346e-9fef-4445-abe6-5d2b2690ec64',
'name': 'fake',
'locked': False,
'vm_state': vm_states.BUILDING})
@mock.patch.object(nova.compute.api.API, 'update_instance_metadata',
side_effect=exception.InstanceIsLocked(instance_uuid=0))
def test_instance_lock_update_metadata(self, mock_update):

View File

@ -364,8 +364,7 @@ def fake_instance_get(**kwargs):
def fake_compute_get(**kwargs):
def _return_server_obj(context, uuid, expected_attrs=None,
cell_down_support=False):
def _return_server_obj(context, *a, **kw):
return stub_instance_obj(context, **kwargs)
return _return_server_obj