Introduced in these new tests:
https://review.openstack.org/#/c/540679/
They are doing a primitive dict compare with nested dicts and the keys can be in random orders. We need to use something like self.assertJsonEqual.
Seen here:
http://logs.openstack.org/04/523604/21/check/openstack-tox-lower-constraints/8a273cd/testr_results.html.gz
ft1.600: nova.tests.unit.virt.libvirt.test_driver.LibvirtConnTestCase.test_pre_live_migration_volume_backed_StringException: pythonlogging:'': {{{2018-06-29 18:43:57,584 WARNING [os_brick.initiator.connectors.remotefs] Connection details not present. RemoteFsClient may not initialize properly.}}}
stderr: {{{
/home/zuul/src/git.openstack.org/openstack/nova/nova/test.py:323: DeprecationWarning: Using class 'MoxStubout' (either directly or via inheritance) is deprecated in version '3.5.0'
mox_fixture = self.useFixture(moxstubout.MoxStubout())
}}}
Traceback (most recent call last):
File "/home/zuul/src/git.openstack.org/openstack/nova/nova/tests/unit/virt/libvirt/test_driver.py", line 11972, in test_pre_live_migration_volume_backed
self._test_pre_live_migration_volume_backed()
File "/home/zuul/src/git.openstack.org/openstack/nova/nova/tests/unit/virt/libvirt/test_driver.py", line 11969, in _test_pre_live_migration_volume_backed
returned_migrate_data.obj_to_primitive())
File "/home/zuul/src/git.openstack.org/openstack/nova/.tox/lower-constraints/lib/python3.5/site-packages/testtools/testcase.py", line 411, in assertEqual
self.assertThat(observed, matcher, message)
File "/home/zuul/src/git.openstack.org/openstack/nova/.tox/lower-constraints/lib/python3.5/site-packages/testtools/testcase.py", line 498, in assertThat
raise mismatch_error
testtools.matchers._impl.MismatchError: !=:
reference = {'nova_object.data': {'bdms': [{'nova_object.data': {'boot_index': None,
'bus': 'scsi',
'connection_info_json': '{"data": '
'{"device_path": '
'"/dev/disk/path/lun-X"}, '
'"serial": '
'"53641be9-7553-4b55-b2fd-cb3cf6373505"}',
'dev': 'sda',
'format': None,
'serial': '53641be9-7553-4b55-b2fd-cb3cf6373505',
'type': 'disk'},
'nova_object.name': 'LibvirtLiveMigrateBDMInfo',
'nova_object.namespace': 'nova',
'nova_object.version': '1.1'},
{'nova_object.data': {'boot_index': None,
'bus': 'scsi',
'connection_info_json': '{"data": '
'{"device_path": '
'"/dev/disk/path/lun-Z"}, '
'"serial": '
'"1f5cf6f3-6afb-45d2-a4a9-7a206f3a3cf8"}',
'dev': 'sdb',
'format': None,
'serial': '1f5cf6f3-6afb-45d2-a4a9-7a206f3a3cf8',
'type': 'disk'},
'nova_object.name': 'LibvirtLiveMigrateBDMInfo',
'nova_object.namespace': 'nova',
'nova_object.version': '1.1'}],
'block_migration': False,
'disk_available_mb': 123,
'disk_over_commit': False,
'filename': 'foo',
'image_type': 'qcow2',
'instance_relative_path': 'instance-00000001',
'is_shared_block_storage': False,
'is_shared_instance_path': True,
'is_volume_backed': True,
'serial_listen_ports': [],
'src_supports_native_luks': True,
'supported_perf_events': [],
'target_connect_addr': None},
'nova_object.name': 'LibvirtLiveMigrateData',
'nova_object.namespace': 'nova',
'nova_object.version': '1.8'}
actual = {'nova_object.data': {'bdms': [{'nova_object.data': {'boot_index': None,
'bus': 'scsi',
'connection_info_json': '{"serial": '
'"53641be9-7553-4b55-b2fd-cb3cf6373505", '
'"data": '
'{"device_path": '
'"/dev/disk/path/lun-X"}}',
'dev': 'sda',
'format': None,
'serial': '53641be9-7553-4b55-b2fd-cb3cf6373505',
'type': 'disk'},
'nova_object.name': 'LibvirtLiveMigrateBDMInfo',
'nova_object.namespace': 'nova',
'nova_object.version': '1.1'},
{'nova_object.data': {'boot_index': None,
'bus': 'scsi',
'connection_info_json': '{"serial": '
'"1f5cf6f3-6afb-45d2-a4a9-7a206f3a3cf8", '
'"data": '
'{"device_path": '
'"/dev/disk/path/lun-Z"}}',
'dev': 'sdb',
'format': None,
'serial': '1f5cf6f3-6afb-45d2-a4a9-7a206f3a3cf8',
'type': 'disk'},
'nova_object.name': 'LibvirtLiveMigrateBDMInfo',
'nova_object.namespace': 'nova',
'nova_object.version': '1.1'}],
'block_migration': False,
'disk_available_mb': 123,
'disk_over_commit': False,
'filename': 'foo',
'image_type': 'qcow2',
'instance_relative_path': 'instance-00000001',
'is_shared_block_storage': False,
'is_shared_instance_path': True,
'is_volume_backed': True,
'serial_listen_ports': [],
'src_supports_native_luks': True,
'supported_perf_events': [],
'target_connect_addr': None},
'nova_object.name': 'LibvirtLiveMigrateData',
'nova_object.namespace': 'nova',
'nova_object.version': '1.8'}
http:// logstash. openstack. org/#dashboard/ file/logstash. json?query= message% 3A%5C%22actual% 20%20%20% 20%3D%20% 7B'nova_ object. data'%3A% 20%7B'bdms' %3A%20% 5B%7B'nova_ object. data'%3A% 20%7B'boot_ index'% 3A%20None% 2C%5C%5C% 5C%22%5C% 22%20AND% 20tags% 3A%5C%22console %5C%22& from=7d