iotests: Unify log outputs between Python 2 and 3
commite21b5f34d669b82087597273f3783626947291a0
authorMax Reitz <mreitz@redhat.com>
Mon, 22 Oct 2018 13:53:07 +0000 (22 14:53 +0100)
committerEduardo Habkost <ehabkost@redhat.com>
Wed, 31 Oct 2018 00:13:54 +0000 (30 21:13 -0300)
tree592617e2d04ddb111fde104f177297fa9ab0d27a
parent2d894bee1c907399fbd59163a18e42c41daf4863
iotests: Unify log outputs between Python 2 and 3

When dumping an object into the log, there are differences between
Python 2 and 3.  First, unicode strings are prefixed by 'u' in Python 2
(they are no longer in 3, because unicode strings are the default
there).  Second, the order of keys in dicts may differ.  Third,
especially long numbers are longs in Python 2 and thus get an 'L'
suffix, which does not happen in Python 3.

We can get around all of these differences by dumping objects (lists and
dicts) in a language-independent format, namely JSON.  The JSON
generator even allows emitting dicts with their keys sorted
alphabetically.

This changes the output of all tests that use these logging functions
(dict keys are ordered now, strings in dicts are now enclosed in double
quotes instead of single quotes, the 'L' suffix of large integers is
dropped, and "true" and "false" are now in lower case).
The quote change necessitates a small change to a filter used in test
207.

Suggested-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Message-Id: <20181022135307.14398-10-mreitz@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
16 files changed:
tests/qemu-iotests/194.out
tests/qemu-iotests/202.out
tests/qemu-iotests/203.out
tests/qemu-iotests/206.out
tests/qemu-iotests/207
tests/qemu-iotests/207.out
tests/qemu-iotests/208.out
tests/qemu-iotests/210.out
tests/qemu-iotests/211.out
tests/qemu-iotests/212.out
tests/qemu-iotests/213.out
tests/qemu-iotests/216.out
tests/qemu-iotests/218.out
tests/qemu-iotests/219.out
tests/qemu-iotests/222.out
tests/qemu-iotests/iotests.py