[Tarantool-patches] [PATCH 3/4] test: make convert to hex compatible with Python 3.x

Leonid Vasiliev lvasiliev at tarantool.org
Wed Dec 23 13:00:08 MSK 2020


Hi!

On 22.12.2020 11:19, Sergey Bronnikov wrote:
> Hi,
> 
> On 17.12.2020 21:26, Leonid Vasiliev wrote:
>> Hi!
>>
>> On 16.12.2020 17:04, Sergey Bronnikov wrote:
>>> Hello,
>>>
>>>
>>> On 15.12.2020 14:55, Leonid Vasiliev wrote:
>>>> Hi! Thank you for the patch.
>>>>
>>>> On 11.12.2020 11:42, Sergey Bronnikov via Tarantool-patches wrote:
>>>>> From: Sergey Bronnikov <sergeyb at tarantool.org>
>>>>>
>>>>> Part of #5538
>>>>> ---
>>>>>   test/box-py/iproto.test.py | 6 +++++-
>>>>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/test/box-py/iproto.test.py b/test/box-py/iproto.test.py
>>>>> index 25ead43c4..72400923c 100644
>>>>> --- a/test/box-py/iproto.test.py
>>>>> +++ b/test/box-py/iproto.test.pyHi
>>>>> @@ -191,7 +191,11 @@ for test in TESTS:
>>>>>       print("STR", size)
>>>>>       print("--")
>>>>>       for fmt in it:
>>>>> -        print("0x" + fmt.encode("hex"), "=>", end=" ")
>>>>> +        try:
>>>>> +            # Python 3
>>>>> +            print("0x" + "hex".encode("utf-8").hex(), "=>", end=" ")
>>>>
>>>> Maybe fmt.encode("utf-8").hex()?
>>>
>>> I would be glad to use it in Python 3, but fmt module was removed there.
>>
>> Sorry, but I don't understand which module "fmt" you mean. I don't see
>> any `import fmt...` here. AFAIU `fmt` in this context is a string from
>> one of the tuples from the list `TESTS`.
>>
>> So, I copy this hunk:
>> ```
>> from __future__ import print_function
>>
>> TESTS = [
>>     (1,     "\xa1", "\xd9\x01", "\xda\x00\x01", "\xdb\x00\x00\x00\x01"),
>>     (31,    "\xbf", "\xd9\x1f", "\xda\x00\x1f", "\xdb\x00\x00\x00\x1f"),
>>     (32,    "\xd9\x20", "\xda\x00\x20", "\xdb\x00\x00\x00\x20"),
>>     (255,   "\xd9\xff", "\xda\x00\xff", "\xdb\x00\x00\x00\xff"),
>>     (256,   "\xda\x01\x00", "\xdb\x00\x00\x01\x00"),
>>     (65535, "\xda\xff\xff", "\xdb\x00\x00\xff\xff"),
>>     (65536, "\xdb\x00\x01\x00\x00"),
>> ]
>>
>> for test in TESTS:
>>     it = iter(test)
>>     size = next(it)
>>     print("STR", size)
>>     print("--")
>>     for fmt in it:
>>         try:
>>             # Python 3
>>             print("0x" + "hex".encode("utf-8").hex(), "=>", end=" ")
>>         except AttributeError:
>>             print("0x" + fmt.encode("hex"), "=>", end=" ")
>>         print()
>>     print()
>> ```
>>
>> and run it on python2 and python3.
>> Results doesn't look identically.
>>
>> Python2:
>> ```
>> ┌─[leonid at vasya-L460]─[~/work/mail/tarantool/tmp]
>> └──╼ python2 test.py
>> STR 1
>> -- 
>> 0xa1 =>
>> 0xd901 =>
>> 0xda0001 =>
>> 0xdb00000001 =>
>>
>> STR 31
>> -- 
>> 0xbf =>
>> 0xd91f =>
>> 0xda001f =>
>> 0xdb0000001f =>
>>
>> STR 32
>> -- 
>> 0xd920 =>
>> 0xda0020 =>
>> 0xdb00000020 =>
>>
>> STR 255
>> -- 
>> 0xd9ff =>
>> 0xda00ff =>
>> 0xdb000000ff =>
>>
>> STR 256
>> -- 
>> 0xda0100 =>
>> 0xdb00000100 =>
>>
>> STR 65535
>> -- 
>> 0xdaffff =>
>> 0xdb0000ffff =>
>>
>> STR 65536
>> -- 
>> 0xdb00010000 =>
>>
>> ```
>>
>> Python3:
>> ```
>> ┌─[leonid at vasya-L460]─[~/work/mail/tarantool/tmp]
>> └──╼ python3 test.py
>> STR 1
>> -- 
>> 0x686578 =>
>> 0x686578 =>
>> 0x686578 =>
>> 0x686578 =>
>>
>> STR 31
>> -- 
>> 0x686578 =>
>> 0x686578 =>
>> 0x686578 =>
>> 0x686578 =>
>>
>> STR 32
>> -- 
>> 0x686578 =>
>> 0x686578 =>
>> 0x686578 =>
>>
>> STR 255
>> -- 
>> 0x686578 =>
>> 0x686578 =>
>> 0x686578 =>
>>
>> STR 256
>> -- 
>> 0x686578 =>
>> 0x686578 =>
>>
>> STR 65535
>> -- 
>> 0x686578 =>
>> 0x686578 =>
>>
>> STR 65536
>> -- 
>> 0x686578 =>
>>
>> ```
>>
>> Am I doing something wrong or a bug in the patch?
> 
> Yep, patch was incorrect. I have removed it and added new one to the 
> branch and send to this thread [1].
> 
> Could you please take a look?
> 
> 1. 
> https://lists.tarantool.org/pipermail/tarantool-patches/2020-December/021528.html 

Done.

> 
> 
> 
>>
>>>
>>>
>>>> Please, add a comment that describing the difference between python2 
>>>> and
>>>> python3 in this print.
>>>>
>>> Added comment to a commit message and force-pushed.
>>>>> +        except AttributeError:
>>>>> +            print("0x" + fmt.encode("hex"), "=>", end=" ")
>>>>>           field = "*" * size
>>>>>           c._send_request(RawInsert(c, space_id, "\x91" + fmt + 
>>>>> field))
>>>>>           tuple = space.select(field)[0]
>>>>>


More information about the Tarantool-patches mailing list