Implements proper UUID format for few objects tests.

Currently some of the unittests are using non valid UUID format
for the FieldType UUID.

This is preparation work to add UUID validation in the
oslo_versionedobjects/fields.py.

Without this change adding validation will cause tests to fail.

Change-Id: I6c32f33f4062c1caadffcfd9905113e9f99f5579
This commit is contained in:
Michal Pryc 2015-12-16 15:12:13 +01:00
parent a1143e184d
commit 1c67948f13
4 changed files with 86 additions and 79 deletions

View File

@ -44,6 +44,7 @@ from nova.tests.unit.objects import test_migration_context as test_mig_ctxt
from nova.tests.unit.objects import test_objects
from nova.tests.unit.objects import test_security_group
from nova.tests.unit.objects import test_vcpu_model
from nova.tests import uuidsentinel as uuids
from nova import utils
@ -53,7 +54,7 @@ class _TestInstanceObject(object):
db_inst = fake_instance.fake_db_instance(id=2,
access_ip_v4='1.2.3.4',
access_ip_v6='::1')
db_inst['uuid'] = '34fd7606-2ed5-42c7-ad46-76240c088801'
db_inst['uuid'] = uuids.db_instance
db_inst['cell_name'] = 'api!child'
db_inst['terminated_at'] = None
db_inst['deleted_at'] = None
@ -76,13 +77,14 @@ class _TestInstanceObject(object):
def test_datetime_deserialization(self):
red_letter_date = timeutils.parse_isotime(
utils.isotime(datetime.datetime(1955, 11, 5)))
inst = objects.Instance(uuid='fake-uuid', launched_at=red_letter_date)
inst = objects.Instance(uuid=uuids.instance,
launched_at=red_letter_date)
primitive = inst.obj_to_primitive()
expected = {'nova_object.name': 'Instance',
'nova_object.namespace': 'nova',
'nova_object.version': inst.VERSION,
'nova_object.data':
{'uuid': 'fake-uuid',
{'uuid': uuids.instance,
'launched_at': '1955-11-05T00:00:00Z'},
'nova_object.changes': ['launched_at', 'uuid']}
self.assertJsonEqual(primitive, expected)
@ -91,14 +93,14 @@ class _TestInstanceObject(object):
self.assertEqual(red_letter_date, inst2.launched_at)
def test_ip_deserialization(self):
inst = objects.Instance(uuid='fake-uuid', access_ip_v4='1.2.3.4',
inst = objects.Instance(uuid=uuids.instance, access_ip_v4='1.2.3.4',
access_ip_v6='::1')
primitive = inst.obj_to_primitive()
expected = {'nova_object.name': 'Instance',
'nova_object.namespace': 'nova',
'nova_object.version': inst.VERSION,
'nova_object.data':
{'uuid': 'fake-uuid',
{'uuid': uuids.instance,
'access_ip_v4': '1.2.3.4',
'access_ip_v6': '::1'},
'nova_object.changes': ['uuid', 'access_ip_v6',
@ -211,7 +213,7 @@ class _TestInstanceObject(object):
self.assertEqual({'foo': 'bar'}, meta2)
def test_load_invalid(self):
inst = objects.Instance(context=self.context, uuid='fake-uuid')
inst = objects.Instance(context=self.context, uuid=uuids.instance)
self.assertRaises(exception.ObjectActionError,
inst.obj_load_attr, 'foo')
@ -219,13 +221,13 @@ class _TestInstanceObject(object):
# isotime doesn't have microseconds and is always UTC
self.mox.StubOutWithMock(db, 'instance_get_by_uuid')
fake_instance = self.fake_instance
db.instance_get_by_uuid(self.context, 'fake-uuid',
db.instance_get_by_uuid(self.context, uuids.instance,
columns_to_join=['info_cache',
'security_groups'],
use_slave=False
).AndReturn(fake_instance)
self.mox.ReplayAll()
inst = objects.Instance.get_by_uuid(self.context, 'fake-uuid')
inst = objects.Instance.get_by_uuid(self.context, uuids.instance)
self.assertEqual(fake_instance['id'], inst.id)
self.assertEqual(fake_instance['launched_at'],
inst.launched_at.replace(tzinfo=None))
@ -260,7 +262,7 @@ class _TestInstanceObject(object):
self.assertEqual(set([]), inst.obj_what_changed())
def test_refresh_does_not_recurse(self):
inst = objects.Instance(context=self.context, uuid='fake-uuid',
inst = objects.Instance(context=self.context, uuid=uuids.instance,
metadata={})
inst_copy = objects.Instance()
inst_copy.uuid = inst.uuid
@ -432,7 +434,7 @@ class _TestInstanceObject(object):
# resolved, this test should go away.
mock_update.return_value = None, None
inst = objects.Instance(context=self.context, id=123)
inst.uuid = 'foo'
inst.uuid = uuids.test_instance_not_refresh
inst.pci_devices = pci_device.PciDeviceList()
inst.save()
self.assertNotIn('pci_devices',
@ -446,12 +448,12 @@ class _TestInstanceObject(object):
fake_obj_numa_topology = objects.InstanceNUMATopology(cells=[
objects.InstanceNUMACell(id=0, cpuset=set([0]), memory=128),
objects.InstanceNUMACell(id=1, cpuset=set([1]), memory=128)])
fake_obj_numa_topology.instance_uuid = 'fake-uuid'
fake_obj_numa_topology.instance_uuid = uuids.instance
jsonified = fake_obj_numa_topology._to_json()
mock_update.return_value = None, None
inst = objects.Instance(
context=self.context, id=123, uuid='fake-uuid')
context=self.context, id=123, uuid=uuids.instance)
inst.numa_topology = fake_obj_numa_topology
inst.save()
@ -829,13 +831,13 @@ class _TestInstanceObject(object):
def test_iteritems_with_extra_attrs(self):
self.stubs.Set(objects.Instance, 'name', 'foo')
inst = objects.Instance(uuid='fake-uuid')
self.assertEqual(sorted({'uuid': 'fake-uuid',
inst = objects.Instance(uuid=uuids.instance)
self.assertEqual(sorted({'uuid': uuids.instance,
'name': 'foo',
}.items()), sorted(inst.items()))
def _test_metadata_change_tracking(self, which):
inst = objects.Instance(uuid='fake-uuid')
inst = objects.Instance(uuid=uuids.instance)
setattr(inst, which, {})
inst.obj_reset_changes()
getattr(inst, which)['foo'] = 'bar'
@ -961,11 +963,11 @@ class _TestInstanceObject(object):
deleted_at = datetime.datetime(1955, 11, 6)
fake_inst = fake_instance.fake_db_instance(deleted_at=deleted_at,
deleted=True)
db.instance_destroy(self.context, 'fake-uuid',
db.instance_destroy(self.context, uuids.instance,
constraint=None).AndReturn(fake_inst)
self.mox.ReplayAll()
inst = objects.Instance(context=self.context, id=1, uuid='fake-uuid',
host='foo')
inst = objects.Instance(context=self.context, id=1,
uuid=uuids.instance, host='foo')
inst.destroy()
self.assertEqual(timeutils.normalize_time(deleted_at),
timeutils.normalize_time(inst.deleted_at))
@ -998,7 +1000,8 @@ class _TestInstanceObject(object):
self.flags(enable=True, cell_type='compute', group='cells')
fake_inst = fake_instance.fake_db_instance(deleted=True)
mock_destroy.return_value = fake_inst
inst = objects.Instance(context=self.context, id=1, uuid='fake-uuid')
inst = objects.Instance(context=self.context, id=1,
uuid=uuids.instance)
inst.destroy()
mock_destroy_at_top.assert_called_once_with(self.context, mock.ANY)
actual_inst = mock_destroy_at_top.call_args[0][1]
@ -1010,7 +1013,8 @@ class _TestInstanceObject(object):
mock_destroy_at_top):
fake_inst = fake_instance.fake_db_instance(deleted=True)
mock_destroy.return_value = fake_inst
inst = objects.Instance(context=self.context, id=1, uuid='fake-uuid')
inst = objects.Instance(context=self.context, id=1,
uuid=uuids.instance)
inst.destroy()
self.assertFalse(mock_destroy_at_top.called)
@ -1108,7 +1112,7 @@ class _TestInstanceObject(object):
@mock.patch.object(db, 'instance_metadata_delete')
def test_delete_metadata_key(self, db_delete):
inst = objects.Instance(context=self.context,
id=1, uuid='fake-uuid')
id=1, uuid=uuids.instance)
inst.metadata = {'foo': '1', 'bar': '2'}
inst.obj_reset_changes()
inst.delete_metadata_key('foo')
@ -1126,8 +1130,7 @@ class _TestInstanceObject(object):
self.assertEqual({}, inst._orig_system_metadata)
def test_load_generic_calls_handler(self):
inst = objects.Instance(context=self.context,
uuid='fake-uuid')
inst = objects.Instance(context=self.context, uuid=uuids.instance)
with mock.patch.object(inst, '_load_generic') as mock_load:
def fake_load(name):
inst.system_metadata = {}
@ -1137,8 +1140,7 @@ class _TestInstanceObject(object):
mock_load.assert_called_once_with('system_metadata')
def test_load_fault_calls_handler(self):
inst = objects.Instance(context=self.context,
uuid='fake-uuid')
inst = objects.Instance(context=self.context, uuid=uuids.instance)
with mock.patch.object(inst, '_load_fault') as mock_load:
def fake_load():
inst.fault = None
@ -1148,8 +1150,7 @@ class _TestInstanceObject(object):
mock_load.assert_called_once_with()
def test_load_ec2_ids_calls_handler(self):
inst = objects.Instance(context=self.context,
uuid='fake-uuid')
inst = objects.Instance(context=self.context, uuid=uuids.instance)
with mock.patch.object(inst, '_load_ec2_ids') as mock_load:
def fake_load():
inst.ec2_ids = objects.EC2Ids(instance_id='fake-inst',
@ -1160,8 +1161,7 @@ class _TestInstanceObject(object):
mock_load.assert_called_once_with()
def test_load_migration_context(self):
inst = instance.Instance(context=self.context,
uuid='fake-uuid')
inst = instance.Instance(context=self.context, uuid=uuids.instance)
with mock.patch.object(
objects.MigrationContext, 'get_by_instance_uuid',
return_value=test_mig_ctxt.fake_migration_context_obj
@ -1170,8 +1170,7 @@ class _TestInstanceObject(object):
mock_get.assert_called_once_with(self.context, inst.uuid)
def test_load_migration_context_no_context(self):
inst = instance.Instance(context=self.context,
uuid='fake-uuid')
inst = instance.Instance(context=self.context, uuid=uuids.instance)
with mock.patch.object(
objects.MigrationContext, 'get_by_instance_uuid',
side_effect=exception.MigrationContextNotFound(
@ -1182,8 +1181,7 @@ class _TestInstanceObject(object):
self.assertIsNone(mig_ctxt)
def test_load_migration_context_no_data(self):
inst = instance.Instance(context=self.context,
uuid='fake-uuid')
inst = instance.Instance(context=self.context, uuid=uuids.instance)
with mock.patch.object(
objects.MigrationContext, 'get_by_instance_uuid') as mock_get:
loaded_ctxt = inst._load_migration_context(db_context=None)
@ -1191,8 +1189,8 @@ class _TestInstanceObject(object):
self.assertIsNone(loaded_ctxt)
def test_apply_revert_migration_context(self):
inst = instance.Instance(context=self.context,
uuid='fake-uuid', numa_topology=None)
inst = instance.Instance(context=self.context, uuid=uuids.instance,
numa_topology=None)
inst.migration_context = test_mig_ctxt.get_fake_migration_context_obj(
self.context)
inst.apply_migration_context()
@ -1201,8 +1199,7 @@ class _TestInstanceObject(object):
self.assertIsNone(inst.numa_topology)
def test_drop_migration_context(self):
inst = instance.Instance(context=self.context,
uuid='fake-uuid')
inst = instance.Instance(context=self.context, uuid=uuids.instance)
inst.migration_context = test_mig_ctxt.get_fake_migration_context_obj(
self.context)
inst.migration_context.instance_uuid = inst.uuid
@ -1220,8 +1217,8 @@ class _TestInstanceObject(object):
numa_topology.cells[0].memory = 1024
numa_topology.cells[1].memory = 1024
inst = instance.Instance(context=self.context,
uuid='fake-uuid', numa_topology=numa_topology)
inst = instance.Instance(context=self.context, uuid=uuids.instance,
numa_topology=numa_topology)
inst.migration_context = test_mig_ctxt.get_fake_migration_context_obj(
self.context)
with inst.mutated_migration_context():
@ -1233,17 +1230,18 @@ class _TestInstanceObject(object):
def test_load_generic(self, mock_get):
inst2 = instance.Instance(metadata={'foo': 'bar'})
mock_get.return_value = inst2
inst = instance.Instance(context=self.context,
uuid='fake-uuid')
inst = instance.Instance(context=self.context, uuid=uuids.instance)
inst.metadata
@mock.patch('nova.db.instance_fault_get_by_instance_uuids')
def test_load_fault(self, mock_get):
fake_fault = test_instance_fault.fake_faults['fake-uuid'][0]
mock_get.return_value = {'fake': [fake_fault]}
inst = objects.Instance(context=self.context, uuid='fake')
mock_get.return_value = {uuids.load_fault_instance: [fake_fault]}
inst = objects.Instance(context=self.context,
uuid=uuids.load_fault_instance)
fault = inst.fault
mock_get.assert_called_once_with(self.context, ['fake'])
mock_get.assert_called_once_with(self.context,
[uuids.load_fault_instance])
self.assertEqual(fake_fault['id'], fault.id)
self.assertNotIn('metadata', inst.obj_what_changed())
@ -1252,7 +1250,7 @@ class _TestInstanceObject(object):
fake_ec2_ids = objects.EC2Ids(instance_id='fake-inst',
ami_id='fake-ami')
mock_get.return_value = fake_ec2_ids
inst = objects.Instance(context=self.context, uuid='fake')
inst = objects.Instance(context=self.context, uuid=uuids.instance)
ec2_ids = inst.ec2_ids
mock_get.assert_called_once_with(self.context, inst)
self.assertEqual(fake_ec2_ids, ec2_ids)
@ -1521,8 +1519,10 @@ class _TestInstanceListObject(object):
def test_with_fault(self):
fake_insts = [
fake_instance.fake_db_instance(uuid='fake-uuid', host='host'),
fake_instance.fake_db_instance(uuid='fake-inst2', host='host'),
fake_instance.fake_db_instance(uuid=uuids.faults_instance,
host='host'),
fake_instance.fake_db_instance(uuid=uuids.faults_instance_nonexist,
host='host'),
]
fake_faults = test_instance_fault.fake_faults
self.mox.StubOutWithMock(db, 'instance_get_all_by_host')
@ -1546,14 +1546,14 @@ class _TestInstanceListObject(object):
def test_fill_faults(self):
self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids')
inst1 = objects.Instance(uuid='uuid1')
inst2 = objects.Instance(uuid='uuid2')
inst1 = objects.Instance(uuid=uuids.db_fault_1)
inst2 = objects.Instance(uuid=uuids.db_fault_2)
insts = [inst1, inst2]
for inst in insts:
inst.obj_reset_changes()
db_faults = {
'uuid1': [{'id': 123,
'instance_uuid': 'uuid1',
'instance_uuid': uuids.db_fault_1,
'code': 456,
'message': 'Fake message',
'details': 'No details',
@ -1573,7 +1573,7 @@ class _TestInstanceListObject(object):
inst_list._context = self.context
inst_list.objects = insts
faulty = inst_list.fill_faults()
self.assertEqual(['uuid1'], list(faulty))
self.assertEqual([uuids.db_fault_1], list(faulty))
self.assertEqual(db_faults['uuid1'][0]['message'],
inst_list[0].fault.message)
self.assertIsNone(inst_list[1].fault)

View File

@ -18,16 +18,19 @@ from nova import db
from nova import exception
from nova.objects import instance_fault
from nova.tests.unit.objects import test_objects
from nova.tests import uuidsentinel as uuids
fake_faults = {
'fake-uuid': [
{'id': 1, 'instance_uuid': 'fake-uuid', 'code': 123, 'message': 'msg1',
'details': 'details', 'host': 'host', 'deleted': False,
'created_at': None, 'updated_at': None, 'deleted_at': None},
{'id': 2, 'instance_uuid': 'fake-uuid', 'code': 456, 'message': 'msg2',
'details': 'details', 'host': 'host', 'deleted': False,
'created_at': None, 'updated_at': None, 'deleted_at': None},
{'id': 1, 'instance_uuid': uuids.faults_instance, 'code': 123,
'message': 'msg1', 'details': 'details', 'host': 'host',
'deleted': False, 'created_at': None, 'updated_at': None,
'deleted_at': None},
{'id': 2, 'instance_uuid': uuids.faults_instance, 'code': 456,
'message': 'msg2', 'details': 'details', 'host': 'host',
'deleted': False, 'created_at': None, 'updated_at': None,
'deleted_at': None},
]
}
@ -78,7 +81,7 @@ class _TestInstanceFault(object):
def _test_create(self, update_cells, mock_create, cells_fault_create):
mock_create.return_value = fake_faults['fake-uuid'][1]
fault = instance_fault.InstanceFault(context=self.context)
fault.instance_uuid = 'fake-uuid'
fault.instance_uuid = uuids.faults_instance
fault.code = 456
fault.message = 'foo'
fault.details = 'you screwed up'
@ -86,11 +89,11 @@ class _TestInstanceFault(object):
fault.create()
self.assertEqual(2, fault.id)
mock_create.assert_called_once_with(self.context,
{'instance_uuid': 'fake-uuid',
'code': 456,
'message': 'foo',
'details': 'you screwed up',
'host': 'myhost'})
{'instance_uuid': uuids.faults_instance,
'code': 456,
'message': 'foo',
'details': 'you screwed up',
'host': 'myhost'})
if update_cells:
cells_fault_create.assert_called_once_with(
self.context, fake_faults['fake-uuid'][1])

View File

@ -24,6 +24,7 @@ from nova import exception
from nova.network import model as network_model
from nova.objects import instance_info_cache
from nova.tests.unit.objects import test_objects
from nova.tests import uuidsentinel as uuids
fake_info_cache = {
@ -31,7 +32,7 @@ fake_info_cache = {
'updated_at': None,
'deleted_at': None,
'deleted': False,
'instance_uuid': 'fake-uuid',
'instance_uuid': uuids.info_instance,
'network_info': '[]',
}
@ -40,29 +41,31 @@ class _TestInstanceInfoCacheObject(object):
def test_get_by_instance_uuid(self):
nwinfo = network_model.NetworkInfo.hydrate([{'address': 'foo'}])
self.mox.StubOutWithMock(db, 'instance_info_cache_get')
db.instance_info_cache_get(self.context, 'fake-uuid').AndReturn(
db.instance_info_cache_get(
self.context, uuids.info_instance).AndReturn(
dict(fake_info_cache, network_info=nwinfo.json()))
self.mox.ReplayAll()
obj = instance_info_cache.InstanceInfoCache.get_by_instance_uuid(
self.context, 'fake-uuid')
self.assertEqual('fake-uuid', obj.instance_uuid)
self.context, uuids.info_instance)
self.assertEqual(uuids.info_instance, obj.instance_uuid)
self.assertEqual(nwinfo, obj.network_info)
def test_get_by_instance_uuid_no_entries(self):
self.mox.StubOutWithMock(db, 'instance_info_cache_get')
db.instance_info_cache_get(self.context, 'fake-uuid').AndReturn(None)
db.instance_info_cache_get(self.context,
uuids.info_instance).AndReturn(None)
self.mox.ReplayAll()
self.assertRaises(
exception.InstanceInfoCacheNotFound,
instance_info_cache.InstanceInfoCache.get_by_instance_uuid,
self.context, 'fake-uuid')
self.context, uuids.info_instance)
def test_new(self):
obj = instance_info_cache.InstanceInfoCache.new(self.context,
'fake-uuid')
uuids.info_instance)
self.assertEqual(set(['instance_uuid', 'network_info']),
obj.obj_what_changed())
self.assertEqual('fake-uuid', obj.instance_uuid)
self.assertEqual(uuids.info_instance, obj.instance_uuid)
self.assertIsNone(obj.network_info)
def _save_helper(self, cell_type, update_cells):
@ -79,7 +82,7 @@ class _TestInstanceInfoCacheObject(object):
new_info_cache = fake_info_cache.copy()
new_info_cache['network_info'] = nwinfo.json()
db.instance_info_cache_update(
self.context, 'fake-uuid',
self.context, uuids.info_instance,
{'network_info': nwinfo.json()}).AndReturn(new_info_cache)
if update_cells:
cells_opts.get_cell_type().AndReturn(cell_type)
@ -89,7 +92,7 @@ class _TestInstanceInfoCacheObject(object):
self.context, 'foo')
self.mox.ReplayAll()
obj._context = self.context
obj.instance_uuid = 'fake-uuid'
obj.instance_uuid = uuids.info_instance
obj.network_info = nwinfo
obj.save(update_cells=update_cells)
@ -113,20 +116,20 @@ class _TestInstanceInfoCacheObject(object):
new_info_cache['network_info'] = nwinfo_json
mock_update.return_value = new_info_cache
obj = instance_info_cache.InstanceInfoCache(context=self.context)
obj.instance_uuid = 'fake-uuid'
obj.instance_uuid = uuids.info_instance
obj.network_info = nwinfo_json
obj.save()
mock_update.assert_called_once_with(self.context, 'fake-uuid',
mock_update.assert_called_once_with(self.context, uuids.info_instance,
{'network_info': nwinfo_json})
self.assertEqual(timeutils.normalize_time(fake_updated_at),
timeutils.normalize_time(obj.updated_at))
def test_refresh(self):
obj = instance_info_cache.InstanceInfoCache.new(self.context,
'fake-uuid1')
uuids.info_instance_1)
self.mox.StubOutWithMock(db, 'instance_info_cache_get')
db.instance_info_cache_get(self.context, 'fake-uuid1').AndReturn(
fake_info_cache)
db.instance_info_cache_get(
self.context, uuids.info_instance_1).AndReturn(fake_info_cache)
self.mox.ReplayAll()
obj.refresh()
self.assertEqual(fake_info_cache['instance_uuid'], obj.instance_uuid)

View File

@ -17,6 +17,7 @@ import netaddr
from nova.objects import network as network_obj
from nova.tests.unit.objects import test_objects
from nova.tests import uuidsentinel as uuids
fake_network = {
@ -48,7 +49,7 @@ fake_network = {
'project_id': None,
'priority': None,
'host': None,
'uuid': 'fake-uuid',
'uuid': uuids.network_instance,
'mtu': None,
'dhcp_server': '192.168.1.1',
'enable_dhcp': True,