utils: Add binary_str() method to print binary data
Because repr() is not enough to escape ascii code or control code, MsgBase.__str__() may collapse representation with binary data. This patch add binary_str() in order to convert binary data into a sequence of '\x00' style string. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
27befc18fa
commit
23b2fc4b41
@ -15,6 +15,7 @@
|
||||
|
||||
import unittest
|
||||
import logging
|
||||
import six
|
||||
from nose.tools import eq_
|
||||
|
||||
from ryu import utils
|
||||
@ -55,3 +56,29 @@ class Test_utils(unittest.TestCase):
|
||||
expected_result = '0x01 0x02 0x03 0x04'
|
||||
data = bytes(b'\x01\x02\x03\x04')
|
||||
eq_(expected_result, utils.hex_array(data))
|
||||
|
||||
def test_binary_str_string(self):
|
||||
"""
|
||||
Test binary_str() with str type.
|
||||
"""
|
||||
expected_result = '\\x01\\x02\\x03\\x04'
|
||||
data = b'\x01\x02\x03\x04'
|
||||
eq_(expected_result, utils.binary_str(data))
|
||||
|
||||
def test_binary_str_bytearray(self):
|
||||
"""
|
||||
Test binary_str() with bytearray type.
|
||||
"""
|
||||
expected_result = '\\x01\\x02\\x03\\x04'
|
||||
data = bytearray(b'\x01\x02\x03\x04')
|
||||
eq_(expected_result, utils.binary_str(data))
|
||||
|
||||
def test_binary_str_bytes(self):
|
||||
"""
|
||||
Test binary_str() with bytes type. (Python3 only)
|
||||
"""
|
||||
if six.PY2:
|
||||
return
|
||||
expected_result = '\\x01\\x02\\x03\\x04'
|
||||
data = bytes(b'\x01\x02\x03\x04')
|
||||
eq_(expected_result, utils.binary_str(data))
|
||||
|
@ -106,6 +106,14 @@ def hex_array(data):
|
||||
return ' '.join('0x%02x' % byte for byte in bytearray(data))
|
||||
|
||||
|
||||
def binary_str(data):
|
||||
"""
|
||||
Convert six.binary_type or bytearray into str to be printed.
|
||||
"""
|
||||
# convert data into bytearray explicitly
|
||||
return ''.join('\\x%02x' % byte for byte in bytearray(data))
|
||||
|
||||
|
||||
# the following functions are taken from OpenStack
|
||||
#
|
||||
# Get requirements from the first file that exists
|
||||
|
Loading…
x
Reference in New Issue
Block a user