summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/dotest_channels.py
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2015-12-02 23:07:33 +0000
committerZachary Turner <zturner@google.com>2015-12-02 23:07:33 +0000
commitfe868acafa71515be4b4da0aaf33a8ecb9b080b7 (patch)
tree9fd54a5e6111511e0db5a907b2774d8a559eb5d3 /lldb/packages/Python/lldbsuite/test/dotest_channels.py
parent70497c696a91e7147d05898b56561edf990ba7a5 (diff)
downloadbcm5719-llvm-fe868acafa71515be4b4da0aaf33a8ecb9b080b7.tar.gz
bcm5719-llvm-fe868acafa71515be4b4da0aaf33a8ecb9b080b7.zip
Fix test result serialization to use bytes.
llvm-svn: 254563
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/dotest_channels.py')
-rw-r--r--lldb/packages/Python/lldbsuite/test/dotest_channels.py28
1 files changed, 16 insertions, 12 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/dotest_channels.py b/lldb/packages/Python/lldbsuite/test/dotest_channels.py
index 02605fe6bc5..a09cbff4983 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest_channels.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest_channels.py
@@ -44,7 +44,7 @@ class UnpicklingForwardingReaderChannel(asyncore.dispatcher):
def __init__(self, file_object, async_map, forwarding_func):
asyncore.dispatcher.__init__(self, sock=file_object, map=async_map)
- self.header_contents = ''
+ self.header_contents = b""
self.packet_bytes_remaining = 0
self.reading_header = True
self.ibuffer = b''
@@ -69,17 +69,21 @@ class UnpicklingForwardingReaderChannel(asyncore.dispatcher):
if not data or (len(data) == 0):
return None
- for index in range(len(data)):
- byte = data[index]
- if byte != '#':
- # Header byte.
- self.header_contents += byte
- else:
- # End of header.
- self.packet_bytes_remaining = int(self.header_contents)
- self.header_contents = ''
- self.reading_header = False
- return data[(index+1):]
+ full_header_len = 4
+
+ assert(len(self.header_contents) < full_header_len)
+
+ bytes_avail = len(data)
+ bytes_needed = full_header_len - len(self.header_contents)
+ header_bytes_avail = min(bytes_needed, bytes_avail)
+ self.header_contents += data[:header_bytes_avail]
+ if len(self.header_contents) == full_header_len:
+ import struct
+ # End of header.
+ self.packet_bytes_remaining = struct.unpack("!I", self.header_contents)[0]
+ self.header_contents = b""
+ self.reading_header = False
+ return data[header_bytes_avail:]
# If we made it here, we've exhausted the data and
# we're still parsing header content.
OpenPOWER on IntegriCloud