Improve unit tests for instance multiple create
The unit tests around instance multiple create were faking out the uuid of the created instances to be aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa. This worked because the instances are not actually created in the database so unique constraints aren't violated. However this led to mocking out the create for the RequestSpec object which should not have been necessary because there is a database available to these tests. That would have been fine except that there is work in progress which relies on the RequestSpec having been written to the database and getting that to pass tests was starting to rely on mocks upon mocks upon mocks. Rather than go down that route this unwinds the test strategy that requires the mocks in the first place. Change-Id: I356d603bff59d49a9a44c59e0b99f9c16998b37e
This commit is contained in:
parent
1aca8b103c
commit
e85cf38b94
|
@ -76,10 +76,6 @@ INSTANCE_IDS = {FAKE_UUID: 1}
|
|||
FIELDS = instance_obj.INSTANCE_DEFAULT_FIELDS
|
||||
|
||||
|
||||
def fake_gen_uuid():
|
||||
return FAKE_UUID
|
||||
|
||||
|
||||
def return_servers_empty(context, *args, **kwargs):
|
||||
return objects.InstanceList(objects=[])
|
||||
|
||||
|
@ -1892,7 +1888,7 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
instance = fake_instance.fake_db_instance(**{
|
||||
'id': self.instance_cache_num,
|
||||
'display_name': inst['display_name'] or 'test',
|
||||
'uuid': FAKE_UUID,
|
||||
'uuid': inst['uuid'],
|
||||
'instance_type': inst_type,
|
||||
'access_ip_v4': '1.2.3.4',
|
||||
'access_ip_v6': 'fead::1234',
|
||||
|
@ -1941,7 +1937,6 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
fakes.stub_out_rate_limiting(self.stubs)
|
||||
fakes.stub_out_key_pair_funcs(self.stubs)
|
||||
fake.stub_out_image_service(self)
|
||||
self.stubs.Set(uuid, 'uuid4', fake_gen_uuid)
|
||||
self.stub_out('nova.db.instance_add_security_group',
|
||||
return_security_group)
|
||||
self.stub_out('nova.db.project_get_networks', project_get_networks)
|
||||
|
@ -1953,7 +1948,6 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
server_update_and_get_original)
|
||||
self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip',
|
||||
fake_method)
|
||||
self.stub_out('nova.objects.RequestSpec.create', fake_method)
|
||||
self.body = {
|
||||
'server': {
|
||||
'min_count': 2,
|
||||
|
@ -1997,7 +1991,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
server = self.controller.create(self.req, self.body).obj['server']
|
||||
self._check_admin_pass_len(server)
|
||||
self.assertEqual(FAKE_UUID, server['id'])
|
||||
instance = self.instance_cache_by_uuid.values()[0]
|
||||
self.assertEqual(instance['uuid'], server['id'])
|
||||
return server
|
||||
|
||||
def test_create_instance_private_flavor(self):
|
||||
|
@ -2079,7 +2074,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.ext_mgr.extensions = {'os-multiple-create': 'fake'}
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
res = self.controller.create(self.req, self.body).obj
|
||||
self.assertEqual(FAKE_UUID, res["server"]["id"])
|
||||
instance_uuids = self.instance_cache_by_uuid.keys()
|
||||
self.assertIn(res["server"]["id"], instance_uuids)
|
||||
self._check_admin_pass_len(res["server"])
|
||||
|
||||
def test_create_multiple_instances_pass_disabled(self):
|
||||
|
@ -2090,7 +2086,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.flags(enable_instance_password=False)
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
res = self.controller.create(self.req, self.body).obj
|
||||
self.assertEqual(FAKE_UUID, res["server"]["id"])
|
||||
instance_uuids = self.instance_cache_by_uuid.keys()
|
||||
self.assertIn(res["server"]["id"], instance_uuids)
|
||||
self._check_admin_pass_missing(res["server"])
|
||||
|
||||
def test_create_multiple_instances_resv_id_return(self):
|
||||
|
@ -2136,7 +2133,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
res = self.controller.create(self.req, self.body).obj
|
||||
server = res['server']
|
||||
self.assertEqual(FAKE_UUID, server['id'])
|
||||
instance = self.instance_cache_by_uuid.values()[0]
|
||||
self.assertEqual(instance['uuid'], server['id'])
|
||||
|
||||
def test_create_instance_image_ref_is_invalid(self):
|
||||
image_uuid = 'this_is_not_a_valid_uuid'
|
||||
|
@ -2304,7 +2302,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
|
||||
server = res['server']
|
||||
self._check_admin_pass_len(server)
|
||||
self.assertEqual(FAKE_UUID, server['id'])
|
||||
instance = self.instance_cache_by_uuid.values()[0]
|
||||
self.assertEqual(instance['uuid'], server['id'])
|
||||
|
||||
def test_create_instance_pass_disabled(self):
|
||||
self.flags(enable_instance_password=False)
|
||||
|
@ -2313,7 +2312,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
|
||||
server = res['server']
|
||||
self._check_admin_pass_missing(server)
|
||||
self.assertEqual(FAKE_UUID, server['id'])
|
||||
instance = self.instance_cache_by_uuid.values()[0]
|
||||
self.assertEqual(instance['uuid'], server['id'])
|
||||
|
||||
@mock.patch('nova.virt.hardware.numa_get_constraints')
|
||||
def test_create_instance_numa_topology_wrong(self, numa_constraints_mock):
|
||||
|
@ -2404,7 +2404,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
res = self.controller.create(self.req, self.body).obj
|
||||
|
||||
self.assertEqual(FAKE_UUID, res["server"]["id"])
|
||||
instance = self.instance_cache_by_uuid.values()[0]
|
||||
self.assertEqual(instance['uuid'], res["server"]["id"])
|
||||
self._check_admin_pass_len(res["server"])
|
||||
|
||||
def test_create_instance_invalid_flavor_href(self):
|
||||
|
@ -2441,7 +2442,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
res = self.controller.create(self.req, self.body).obj
|
||||
server = res['server']
|
||||
self.assertEqual(FAKE_UUID, server['id'])
|
||||
instance = self.instance_cache_by_uuid.values()[0]
|
||||
self.assertEqual(instance['uuid'], server['id'])
|
||||
|
||||
def test_create_instance_with_bad_config_drive(self):
|
||||
self.ext_mgr.extensions = {'os-config-drive': 'fake'}
|
||||
|
@ -2456,7 +2458,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
res = self.controller.create(self.req, self.body).obj
|
||||
server = res['server']
|
||||
self.assertEqual(FAKE_UUID, server['id'])
|
||||
instance = self.instance_cache_by_uuid.values()[0]
|
||||
self.assertEqual(instance['uuid'], server['id'])
|
||||
|
||||
def test_create_instance_with_config_drive_disabled(self):
|
||||
config_drive = [{'config_drive': 'foo'}]
|
||||
|
@ -2483,7 +2486,8 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
res = self.controller.create(self.req, self.body).obj
|
||||
|
||||
server = res['server']
|
||||
self.assertEqual(FAKE_UUID, server['id'])
|
||||
instance = self.instance_cache_by_uuid.values()[0]
|
||||
self.assertEqual(instance['uuid'], server['id'])
|
||||
|
||||
def test_create_instance_admin_pass(self):
|
||||
self.body['server']['flavorRef'] = 3,
|
||||
|
@ -2847,11 +2851,12 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.controller.create, self.req, self.body)
|
||||
|
||||
def test_create_location(self):
|
||||
selfhref = 'http://localhost/v2/fake/servers/%s' % FAKE_UUID
|
||||
image_href = 'http://localhost/v2/images/%s' % self.image_uuid
|
||||
self.body['server']['imageRef'] = image_href
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
robj = self.controller.create(self.req, self.body)
|
||||
instance = self.instance_cache_by_uuid.values()[0]
|
||||
selfhref = 'http://localhost/v2/fake/servers/%s' % instance['uuid']
|
||||
self.assertEqual(selfhref, robj['Location'])
|
||||
|
||||
def _do_test_create_instance_above_quota(self, resource, allowed, quota,
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
# under the License.
|
||||
|
||||
import datetime
|
||||
import uuid
|
||||
|
||||
from oslo_config import cfg
|
||||
import webob
|
||||
|
@ -36,11 +35,6 @@ from nova.tests.unit import fake_instance
|
|||
from nova.tests.unit.image import fake
|
||||
|
||||
CONF = cfg.CONF
|
||||
FAKE_UUID = fakes.FAKE_UUID
|
||||
|
||||
|
||||
def fake_gen_uuid():
|
||||
return FAKE_UUID
|
||||
|
||||
|
||||
def return_security_group(context, instance_id, security_group_id):
|
||||
|
@ -76,7 +70,7 @@ class MultiCreateExtensionTestV21(test.TestCase):
|
|||
instance = fake_instance.fake_db_instance(**{
|
||||
'id': self.instance_cache_num,
|
||||
'display_name': inst['display_name'] or 'test',
|
||||
'uuid': FAKE_UUID,
|
||||
'uuid': inst['uuid'],
|
||||
'instance_type': inst_type,
|
||||
'access_ip_v4': '1.2.3.4',
|
||||
'access_ip_v6': 'fead::1234',
|
||||
|
@ -124,7 +118,6 @@ class MultiCreateExtensionTestV21(test.TestCase):
|
|||
fakes.stub_out_key_pair_funcs(self.stubs)
|
||||
fake.stub_out_image_service(self)
|
||||
fakes.stub_out_nw_api(self)
|
||||
self.stubs.Set(uuid, 'uuid4', fake_gen_uuid)
|
||||
self.stub_out('nova.db.instance_add_security_group',
|
||||
return_security_group)
|
||||
self.stub_out('nova.db.project_get_networks', project_get_networks)
|
||||
|
@ -136,7 +129,6 @@ class MultiCreateExtensionTestV21(test.TestCase):
|
|||
server_update)
|
||||
self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip',
|
||||
fake_method)
|
||||
self.stub_out('nova.objects.RequestSpec.create', fake_method)
|
||||
self.req = fakes.HTTPRequest.blank('')
|
||||
|
||||
def _test_create_extra(self, params, no_image=False,
|
||||
|
@ -355,7 +347,8 @@ class MultiCreateExtensionTestV21(test.TestCase):
|
|||
|
||||
res = self.controller.create(self.req, body=body).obj
|
||||
|
||||
self.assertEqual(FAKE_UUID, res["server"]["id"])
|
||||
instance_uuids = self.instance_cache_by_uuid.keys()
|
||||
self.assertIn(res["server"]["id"], instance_uuids)
|
||||
self._check_admin_password_len(res["server"])
|
||||
|
||||
def test_create_multiple_instances_pass_disabled(self):
|
||||
|
@ -378,7 +371,8 @@ class MultiCreateExtensionTestV21(test.TestCase):
|
|||
|
||||
res = self.controller.create(self.req, body=body).obj
|
||||
|
||||
self.assertEqual(FAKE_UUID, res["server"]["id"])
|
||||
instance_uuids = self.instance_cache_by_uuid.keys()
|
||||
self.assertIn(res["server"]["id"], instance_uuids)
|
||||
self._check_admin_password_missing(res["server"])
|
||||
|
||||
def _check_admin_password_len(self, server_dict):
|
||||
|
@ -543,7 +537,7 @@ class MultiCreateExtensionTestV2(MultiCreateExtensionTestV21):
|
|||
instance = fake_instance.fake_db_instance(**{
|
||||
'id': self.instance_cache_num,
|
||||
'display_name': inst['display_name'] or 'test',
|
||||
'uuid': FAKE_UUID,
|
||||
'uuid': inst['uuid'],
|
||||
'instance_type': inst_type,
|
||||
'access_ip_v4': '1.2.3.4',
|
||||
'access_ip_v6': 'fead::1234',
|
||||
|
@ -575,7 +569,6 @@ class MultiCreateExtensionTestV2(MultiCreateExtensionTestV21):
|
|||
fakes.stub_out_rate_limiting(self.stubs)
|
||||
fakes.stub_out_key_pair_funcs(self.stubs)
|
||||
fake.stub_out_image_service(self)
|
||||
self.stubs.Set(uuid, 'uuid4', fake_gen_uuid)
|
||||
self.stub_out('nova.db.instance_create', instance_create)
|
||||
self.stub_out('nova.db.instance_get', instance_get)
|
||||
|
||||
|
|
|
@ -2390,7 +2390,6 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
server_update_and_get_original)
|
||||
self.stubs.Set(manager.VlanManager, 'allocate_fixed_ip',
|
||||
fake_method)
|
||||
self.stub_out('nova.objects.RequestSpec.create', fake_method)
|
||||
self.body = {
|
||||
'server': {
|
||||
'name': 'server_test',
|
||||
|
|
|
@ -255,12 +255,6 @@ class BaseTestCase(test.TestCase):
|
|||
fake_allocate_for_instance)
|
||||
self.compute_api = compute.API()
|
||||
|
||||
def fake_spec_create(*args, **kwargs):
|
||||
pass
|
||||
|
||||
# Tests in this module do not depend on this running.
|
||||
self.stub_out('nova.objects.RequestSpec.create', fake_spec_create)
|
||||
|
||||
# Just to make long lines short
|
||||
self.rt = self.compute._get_resource_tracker(NODENAME)
|
||||
|
||||
|
|
Loading…
Reference in New Issue