From f2fd72a31bd15053076febaa2f85949228beacc8 Mon Sep 17 00:00:00 2001 From: Matt Riedemann Date: Fri, 2 Nov 2018 14:08:58 -0400 Subject: [PATCH] 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 --- .../openstack/compute/test_server_metadata.py | 104 ++++++------------ nova/tests/unit/api/openstack/fakes.py | 3 +- 2 files changed, 37 insertions(+), 70 deletions(-) diff --git a/nova/tests/unit/api/openstack/compute/test_server_metadata.py b/nova/tests/unit/api/openstack/compute/test_server_metadata.py index a03a42aeb6..df2340b464 100644 --- a/nova/tests/unit/api/openstack/compute/test_server_metadata.py +++ b/nova/tests/unit/api/openstack/compute/test_server_metadata.py @@ -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): diff --git a/nova/tests/unit/api/openstack/fakes.py b/nova/tests/unit/api/openstack/fakes.py index 99bd9e36fc..f673690612 100644 --- a/nova/tests/unit/api/openstack/fakes.py +++ b/nova/tests/unit/api/openstack/fakes.py @@ -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