qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order


From: John Snow
Subject: Re: [Qemu-devel] [PATCH] iotests/236: fix transaction kwarg order
Date: Fri, 1 Feb 2019 14:10:57 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0


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 <address@hidden>
>> Signed-off-by: John Snow <address@hidden>
>> ---
>>   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 <address@hidden>
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]