[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 10/20] iotests: implement pretty-print for log and qm
From: |
Eric Blake |
Subject: |
[Qemu-devel] [PULL 10/20] iotests: implement pretty-print for log and qmp_log |
Date: |
Mon, 14 Jan 2019 10:25:55 -0600 |
From: John Snow <address@hidden>
If iotests have lines exceeding >998 characters long, git doesn't
want to send it plaintext to the list. We can solve this by allowing
the iotests to use pretty printed QMP output that we can match against
instead.
As a bonus, it's much nicer for human eyes too.
Signed-off-by: John Snow <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Eric Blake <address@hidden>
---
tests/qemu-iotests/iotests.py | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index a96a7010d49..cbedfaf1df6 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -288,13 +288,18 @@ def filter_img_info(output, filename):
lines.append(line)
return '\n'.join(lines)
-def log(msg, filters=[]):
+def log(msg, filters=[], indent=None):
+ '''Logs either a string message or a JSON serializable message (like QMP).
+ If indent is provided, JSON serializable messages are pretty-printed.'''
for flt in filters:
msg = flt(msg)
if isinstance(msg, dict) or isinstance(msg, list):
+ # Python < 3.4 needs to know not to add whitespace when
pretty-printing:
+ separators = (', ', ': ') if indent is None else (',', ': ')
# Don't sort if it's already sorted
do_sort = not isinstance(msg, OrderedDict)
- print(json.dumps(msg, sort_keys=do_sort))
+ print(json.dumps(msg, sort_keys=do_sort,
+ indent=indent, separators=separators))
else:
print(msg)
@@ -483,14 +488,14 @@ class VM(qtest.QEMUQtestMachine):
result.append(filter_qmp_event(ev))
return result
- def qmp_log(self, cmd, filters=[], **kwargs):
+ def qmp_log(self, cmd, filters=[], indent=None, **kwargs):
full_cmd = OrderedDict((
("execute", cmd),
("arguments", ordered_kwargs(kwargs))
))
- log(full_cmd, filters)
+ log(full_cmd, filters, indent=indent)
result = self.qmp(cmd, **kwargs)
- log(result, filters)
+ log(result, filters, indent=indent)
return result
def run_job(self, job, auto_finalize=True, auto_dismiss=False):
--
2.20.1
- [Qemu-devel] [PULL 00/20] NBD patches through 2019-01-14, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 01/20] blockdev: abort transactions in reverse order, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 02/20] block/dirty-bitmap: remove assertion from restore, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 06/20] iotests: add filter_generated_node_ids, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 05/20] iotests.py: don't abort if IMGKEYSECRET is undefined, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 04/20] block: remove 'x' prefix from experimental bitmap APIs, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 03/20] blockdev: n-ary bitmap merge, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 10/20] iotests: implement pretty-print for log and qmp_log,
Eric Blake <=
- [Qemu-devel] [PULL 09/20] iotests: change qmp_log filters to expect QMP objects only, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 08/20] iotests: remove default filters from qmp_log, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 07/20] iotests: add qmp recursive sorting function, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 12/20] qemu-nbd: Rename 'exp' variable clashing with math::exp() symbol, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 11/20] iotests: add iotest 236 for testing bitmap merge, Eric Blake, 2019/01/14
- [Qemu-devel] [PULL 13/20] nbd: Add some error case testing to iotests 223, Eric Blake, 2019/01/14