From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org, qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Max Reitz <mreitz@redhat.com>,
John Snow <jsnow@redhat.com>
Subject: [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order
Date: Wed, 30 Jan 2019 21:26:48 -0500 [thread overview]
Message-ID: <20190131022648.14264-1-jsnow@redhat.com> (raw)
It's not enough to order the kwargs for consistent QMP log output,
we must also sort any sub-dictionaries in lists that appear as values.
Reported-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
tests/qemu-iotests/236.out | 56 +++++++++++++++++------------------
tests/qemu-iotests/iotests.py | 21 ++++++-------
2 files changed, 39 insertions(+), 38 deletions(-)
diff --git a/tests/qemu-iotests/236.out b/tests/qemu-iotests/236.out
index 1dad24db0d..bb2d71ea5e 100644
--- a/tests/qemu-iotests/236.out
+++ b/tests/qemu-iotests/236.out
@@ -45,23 +45,23 @@ write -P0xcd 0x3ff0000 64k
"actions": [
{
"data": {
- "node": "drive0",
- "name": "bitmapB"
+ "name": "bitmapB",
+ "node": "drive0"
},
"type": "block-dirty-bitmap-disable"
},
{
"data": {
- "node": "drive0",
+ "granularity": 65536,
"name": "bitmapC",
- "granularity": 65536
+ "node": "drive0"
},
"type": "block-dirty-bitmap-add"
},
{
"data": {
- "node": "drive0",
- "name": "bitmapA"
+ "name": "bitmapA",
+ "node": "drive0"
},
"type": "block-dirty-bitmap-clear"
},
@@ -105,30 +105,30 @@ write -P0xcd 0x3ff0000 64k
"actions": [
{
"data": {
- "node": "drive0",
- "name": "bitmapB"
+ "name": "bitmapB",
+ "node": "drive0"
},
"type": "block-dirty-bitmap-disable"
},
{
"data": {
- "node": "drive0",
+ "granularity": 65536,
"name": "bitmapC",
- "granularity": 65536
+ "node": "drive0"
},
"type": "block-dirty-bitmap-add"
},
{
"data": {
- "node": "drive0",
- "name": "bitmapC"
+ "name": "bitmapC",
+ "node": "drive0"
},
"type": "block-dirty-bitmap-disable"
},
{
"data": {
- "node": "drive0",
- "name": "bitmapC"
+ "name": "bitmapC",
+ "node": "drive0"
},
"type": "block-dirty-bitmap-enable"
}
@@ -158,15 +158,15 @@ write -P0xea 0x3fe0000 64k
"actions": [
{
"data": {
- "node": "drive0",
- "name": "bitmapA"
+ "name": "bitmapA",
+ "node": "drive0"
},
"type": "block-dirty-bitmap-disable"
},
{
"data": {
- "node": "drive0",
- "name": "bitmapC"
+ "name": "bitmapC",
+ "node": "drive0"
},
"type": "block-dirty-bitmap-disable"
}
@@ -209,21 +209,21 @@ write -P0xea 0x3fe0000 64k
"actions": [
{
"data": {
- "node": "drive0",
"disabled": true,
+ "granularity": 65536,
"name": "bitmapD",
- "granularity": 65536
+ "node": "drive0"
},
"type": "block-dirty-bitmap-add"
},
{
"data": {
- "node": "drive0",
- "target": "bitmapD",
"bitmaps": [
"bitmapB",
"bitmapC"
- ]
+ ],
+ "node": "drive0",
+ "target": "bitmapD"
},
"type": "block-dirty-bitmap-merge"
},
@@ -273,21 +273,21 @@ write -P0xea 0x3fe0000 64k
"actions": [
{
"data": {
- "node": "drive0",
"disabled": true,
+ "granularity": 65536,
"name": "bitmapD",
- "granularity": 65536
+ "node": "drive0"
},
"type": "block-dirty-bitmap-add"
},
{
"data": {
- "node": "drive0",
- "target": "bitmapD",
"bitmaps": [
"bitmapB",
"bitmapC"
- ]
+ ],
+ "node": "drive0",
+ "target": "bitmapD"
},
"type": "block-dirty-bitmap-merge"
}
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index cbedfaf1df..76ad52b358 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -76,15 +76,16 @@ def qemu_img(*args):
sys.stderr.write('qemu-img received signal %i: %s\n' % (-exitcode, ' '.join(qemu_img_args + list(args))))
return exitcode
-def ordered_kwargs(kwargs):
- # kwargs prior to 3.6 are not ordered, so:
- od = OrderedDict()
- for k, v in sorted(kwargs.items()):
- if isinstance(v, dict):
- od[k] = ordered_kwargs(v)
- else:
- od[k] = v
- return od
+def ordered_qmp(qmsg):
+ # Dictionaries are not ordered prior to 3.6, therefore:
+ if isinstance(qmsg, list):
+ return [ordered_qmp(atom) for atom in qmsg]
+ if isinstance(qmsg, dict):
+ od = OrderedDict()
+ for k, v in sorted(qmsg.items()):
+ od[k] = ordered_qmp(v)
+ return od
+ return qmsg
def qemu_img_create(*args):
args = list(args)
@@ -491,7 +492,7 @@ class VM(qtest.QEMUQtestMachine):
def qmp_log(self, cmd, filters=[], indent=None, **kwargs):
full_cmd = OrderedDict((
("execute", cmd),
- ("arguments", ordered_kwargs(kwargs))
+ ("arguments", ordered_qmp(kwargs))
))
log(full_cmd, filters, indent=indent)
result = self.qmp(cmd, **kwargs)
--
2.17.2
next reply other threads:[~2019-01-31 2:26 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-31 2:26 John Snow [this message]
2019-01-31 3:44 ` [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order Eric Blake
2019-01-31 9:04 ` Kevin Wolf
2019-01-31 10:17 ` Vladimir Sementsov-Ogievskiy
2019-02-01 19:10 ` John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190131022648.14264-1-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.