From 4729fa819675ca511fe0027950d9aadf0aebef1b Mon Sep 17 00:00:00 2001 From: Yikun Jiang Date: Mon, 11 Jun 2018 20:30:55 +0800 Subject: [PATCH] Fix all invalid obj_make_compatible test case We use obj_to_primitive() to generate the primitive obj, the origin obj value is primitive['nova_object.data'], so, we need transfer primitive to obj data before obj_make_compatible called. This patch fixed all invalid obj_make_compatible test cases. Closes-Bug: #1776373 Change-Id: I048b22b2447b671228a7ba067e06c59b59e81ce5 --- nova/tests/unit/objects/test_block_device.py | 16 ++++++++++++---- nova/tests/unit/objects/test_build_request.py | 5 ++++- nova/tests/unit/objects/test_flavor.py | 5 ++++- nova/tests/unit/objects/test_instance_group.py | 3 ++- .../unit/objects/test_instance_numa_topology.py | 8 ++++++-- nova/tests/unit/objects/test_network_request.py | 5 ++++- .../tests/unit/objects/test_virtual_interface.py | 5 +++-- 7 files changed, 35 insertions(+), 12 deletions(-) diff --git a/nova/tests/unit/objects/test_block_device.py b/nova/tests/unit/objects/test_block_device.py index 32e35068fd60..c62b34b2aa74 100644 --- a/nova/tests/unit/objects/test_block_device.py +++ b/nova/tests/unit/objects/test_block_device.py @@ -395,10 +395,14 @@ class _TestBlockDeviceMappingObject(object): def test_obj_make_compatible_pre_1_17(self): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', 'destination_type': 'volume', - 'instance_uuid': uuids.instance} + 'instance_uuid': uuids.instance, 'tag': 'fake-tag'} bdm = objects.BlockDeviceMapping(context=self.context, **values) - primitive = bdm.obj_to_primitive(target_version='1.16') + data = lambda x: x['nova_object.data'] + primitive = data(bdm.obj_to_primitive(target_version='1.17')) + self.assertIn('tag', primitive) + primitive = data(bdm.obj_to_primitive(target_version='1.16')) self.assertNotIn('tag', primitive) + self.assertIn('volume_id', primitive) def test_obj_make_compatible_pre_1_18(self): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', @@ -406,16 +410,20 @@ class _TestBlockDeviceMappingObject(object): 'instance_uuid': uuids.instance, 'attachment_id': uuids.attachment_id} bdm = objects.BlockDeviceMapping(context=self.context, **values) - primitive = bdm.obj_to_primitive(target_version='1.17') + data = lambda x: x['nova_object.data'] + primitive = data(bdm.obj_to_primitive(target_version='1.17')) self.assertNotIn('attachment_id', primitive) + self.assertIn('volume_id', primitive) def test_obj_make_compatible_pre_1_19(self): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', 'destination_type': 'volume', 'instance_uuid': uuids.instance, 'uuid': uuids.bdm} bdm = objects.BlockDeviceMapping(context=self.context, **values) - primitive = bdm.obj_to_primitive(target_version='1.18') + data = lambda x: x['nova_object.data'] + primitive = data(bdm.obj_to_primitive(target_version='1.18')) self.assertNotIn('uuid', primitive) + self.assertIn('volume_id', primitive) class TestBlockDeviceMappingUUIDMigration(test.TestCase): diff --git a/nova/tests/unit/objects/test_build_request.py b/nova/tests/unit/objects/test_build_request.py index a124581076cb..4bdc9ee3fd04 100644 --- a/nova/tests/unit/objects/test_build_request.py +++ b/nova/tests/unit/objects/test_build_request.py @@ -166,8 +166,11 @@ class _TestBuildRequestObject(object): def test_obj_make_compatible_pre_1_3(self): obj = fake_build_request.fake_req_obj(self.context) build_request_obj = objects.BuildRequest(self.context) - obj_primitive = obj.obj_to_primitive() + data = lambda x: x['nova_object.data'] + obj_primitive = data(obj.obj_to_primitive()) + self.assertIn('tags', obj_primitive) build_request_obj.obj_make_compatible(obj_primitive, '1.2') + self.assertIn('instance_uuid', obj_primitive) self.assertNotIn('tags', obj_primitive) def test_create_with_tags_set(self): diff --git a/nova/tests/unit/objects/test_flavor.py b/nova/tests/unit/objects/test_flavor.py index 1162f3be0f87..21ec57be2c95 100644 --- a/nova/tests/unit/objects/test_flavor.py +++ b/nova/tests/unit/objects/test_flavor.py @@ -361,8 +361,11 @@ class TestFlavor(test_objects._LocalTest, _TestFlavor): # Test compatibility. flavor.description = 'flavor descriptions are not backward compatible' - flavor_primitive = flavor.obj_to_primitive() + data = lambda x: x['nova_object.data'] + flavor_primitive = data(flavor.obj_to_primitive()) + self.assertIn('description', flavor_primitive) flavor.obj_make_compatible(flavor_primitive, '1.1') + self.assertIn('name', flavor_primitive) self.assertNotIn('description', flavor_primitive) diff --git a/nova/tests/unit/objects/test_instance_group.py b/nova/tests/unit/objects/test_instance_group.py index 41d0b9792a74..1d2e585955ee 100644 --- a/nova/tests/unit/objects/test_instance_group.py +++ b/nova/tests/unit/objects/test_instance_group.py @@ -297,7 +297,8 @@ class _TestInstanceGroupObject(object): def test_obj_make_compatible(self): obj = objects.InstanceGroup(self.context, **_INST_GROUP_OBJ_VALS) - obj_primitive = obj.obj_to_primitive() + data = lambda x: x['nova_object.data'] + obj_primitive = data(obj.obj_to_primitive()) self.assertNotIn('metadetails', obj_primitive) obj.obj_make_compatible(obj_primitive, '1.6') self.assertEqual({}, obj_primitive['metadetails']) diff --git a/nova/tests/unit/objects/test_instance_numa_topology.py b/nova/tests/unit/objects/test_instance_numa_topology.py index 188baaf17a82..2cc93d355b8c 100644 --- a/nova/tests/unit/objects/test_instance_numa_topology.py +++ b/nova/tests/unit/objects/test_instance_numa_topology.py @@ -195,8 +195,12 @@ class _TestInstanceNUMATopology(object): topo_obj = objects.InstanceNUMACell( cpuset_reserved=set([1, 2])) versions = ovo_base.obj_tree_get_versions('InstanceNUMACell') - primitive = topo_obj.obj_to_primitive(target_version='1.3', - version_manifest=versions) + data = lambda x: x['nova_object.data'] + primitive = data(topo_obj.obj_to_primitive(target_version='1.4', + version_manifest=versions)) + self.assertIn('cpuset_reserved', primitive) + primitive = data(topo_obj.obj_to_primitive(target_version='1.3', + version_manifest=versions)) self.assertNotIn('cpuset_reserved', primitive) diff --git a/nova/tests/unit/objects/test_network_request.py b/nova/tests/unit/objects/test_network_request.py index 80c63c8dbe93..5864130012db 100644 --- a/nova/tests/unit/objects/test_network_request.py +++ b/nova/tests/unit/objects/test_network_request.py @@ -133,7 +133,10 @@ class _TestNetworkRequestObject(object): def test_obj_make_compatible_pre_1_2(self): net_req = objects.NetworkRequest() net_req.tag = 'foo' - primitive = net_req.obj_to_primitive(target_version='1.1') + data = lambda x: x['nova_object.data'] + primitive = data(net_req.obj_to_primitive(target_version='1.2')) + self.assertIn('tag', primitive) + primitive = data(net_req.obj_to_primitive(target_version='1.1')) self.assertNotIn('tag', primitive) diff --git a/nova/tests/unit/objects/test_virtual_interface.py b/nova/tests/unit/objects/test_virtual_interface.py index ae332b463746..0a1ccc325c71 100644 --- a/nova/tests/unit/objects/test_virtual_interface.py +++ b/nova/tests/unit/objects/test_virtual_interface.py @@ -145,9 +145,10 @@ class _TestVirtualInterface(object): vif.instance_uuid = uuids.instance vif.uuid = uuids.uuid vif.tag = 'fake-tag' - - primitive = vif.obj_to_primitive(target_version='1.0') + data = lambda x: x['nova_object.data'] + primitive = data(vif.obj_to_primitive(target_version='1.0')) self.assertNotIn('tag', primitive) + self.assertIn('uuid', primitive) class TestVirtualInterfaceObject(test_objects._LocalTest,