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

Sergey Bronnikov sergeyb at tarantool.org
Tue Dec 22 11:19:01 MSK 2020


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


>
>>
>>
>>> 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