* [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order
@ 2019-01-31 2:26 John Snow
2019-01-31 3:44 ` Eric Blake
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: John Snow @ 2019-01-31 2:26 UTC (permalink / raw)
To: qemu-devel, qemu-block; +Cc: Kevin Wolf, Max Reitz, John Snow
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
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order
2019-01-31 2:26 [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order John Snow
@ 2019-01-31 3:44 ` Eric Blake
2019-01-31 9:04 ` Kevin Wolf
2019-01-31 10:17 ` Vladimir Sementsov-Ogievskiy
2 siblings, 0 replies; 5+ messages in thread
From: Eric Blake @ 2019-01-31 3:44 UTC (permalink / raw)
To: John Snow, qemu-devel, qemu-block; +Cc: Kevin Wolf, Max Reitz
[-- Attachment #1: Type: text/plain, Size: 1558 bytes --]
On 1/30/19 8:26 PM, John Snow wrote:
> 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(-)
>
> +++ 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
>
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order
2019-01-31 2:26 [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order John Snow
2019-01-31 3:44 ` Eric Blake
@ 2019-01-31 9:04 ` Kevin Wolf
2019-01-31 10:17 ` Vladimir Sementsov-Ogievskiy
2 siblings, 0 replies; 5+ messages in thread
From: Kevin Wolf @ 2019-01-31 9:04 UTC (permalink / raw)
To: John Snow; +Cc: qemu-devel, qemu-block, Max Reitz
Am 31.01.2019 um 03:26 hat John Snow geschrieben:
> 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>
Thanks, applied to the block branch.
Kevin
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order
2019-01-31 2:26 [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order John Snow
2019-01-31 3:44 ` Eric Blake
2019-01-31 9:04 ` Kevin Wolf
@ 2019-01-31 10:17 ` Vladimir Sementsov-Ogievskiy
2019-02-01 19:10 ` John Snow
2 siblings, 1 reply; 5+ messages in thread
From: Vladimir Sementsov-Ogievskiy @ 2019-01-31 10:17 UTC (permalink / raw)
To: John Snow, qemu-devel, qemu-block; +Cc: Kevin Wolf, Max Reitz
31.01.2019 5:26, John Snow wrote:
> 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"
We could notice during review, that things we are trying to order so hard
are just not ordered in result :)))
> + "name": "bitmapB",
> + "node": "drive0"
> },
[..]
> 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
or if you want:
pairs = ((k, ordered_qmp(v)) for k, v in sorted(qmsg.items()))
return OrderedDict(pairs)
> + 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)
>
anyway,
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
--
Best regards,
Vladimir
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order
2019-01-31 10:17 ` Vladimir Sementsov-Ogievskiy
@ 2019-02-01 19:10 ` John Snow
0 siblings, 0 replies; 5+ messages in thread
From: John Snow @ 2019-02-01 19:10 UTC (permalink / raw)
To: Vladimir Sementsov-Ogievskiy, qemu-devel, qemu-block
Cc: Kevin Wolf, Max Reitz
On 1/31/19 5:17 AM, Vladimir Sementsov-Ogievskiy wrote:
> 31.01.2019 5:26, John Snow wrote:
>> 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"
>
> We could notice during review, that things we are trying to order so hard
> are just not ordered in result :)))
>
I was in a bit of a rush before the holidays :(
>> + "name": "bitmapB",
>> + "node": "drive0"
>> },
>
> [..]
>
>> 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
>
> or if you want:
> pairs = ((k, ordered_qmp(v)) for k, v in sorted(qmsg.items()))
> return OrderedDict(pairs)
>
Ah, well, it already went in -- I don't think I'll send a fixup, but I
do like this way more.
Thanks for the review!
>> + 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)
>>
>
> anyway,
> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-02-01 19:11 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-31 2:26 [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order John Snow
2019-01-31 3:44 ` Eric Blake
2019-01-31 9:04 ` Kevin Wolf
2019-01-31 10:17 ` Vladimir Sementsov-Ogievskiy
2019-02-01 19:10 ` John Snow
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.