diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py b/lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py index 9607e91fd55..6d800f6c8ba 100644 --- a/lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py +++ b/lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py @@ -30,9 +30,27 @@ class RawPickledFormatter(ResultsFormatter): parser = super(RawPickledFormatter, cls).arg_parser() return parser - def __init__(self, out_file, options): - super(RawPickledFormatter, self).__init__(out_file, options) + class StreamSerializer(object): + @staticmethod + def serialize(test_event, out_file): + # Send it as {serialized_length_of_serialized_bytes}{serialized_bytes} + import struct + msg = cPickle.dumps(test_event) + packet = struct.pack("!I%ds" % len(msg), len(msg), msg) + out_file.send(packet) + + class BlockSerializer(object): + @staticmethod + def serialize(test_event, out_file): + cPickle.dump(test_event, out_file) + + def __init__(self, out_file, options, file_is_stream): + super(RawPickledFormatter, self).__init__(out_file, options, file_is_stream) self.pid = os.getpid() + if file_is_stream: + self.serializer = self.StreamSerializer() + else: + self.serializer = self.BlockSerializer() def handle_event(self, test_event): super(RawPickledFormatter, self).handle_event(test_event) @@ -50,8 +68,5 @@ class RawPickledFormatter(ResultsFormatter): # Tack on the pid. test_event["pid"] = self.pid - # Send it as {serialized_length_of_serialized_bytes}{serialized_bytes} - import struct - msg = cPickle.dumps(test_event) - packet = struct.pack("!I%ds" % len(msg), len(msg), msg) - self.out_file.send(packet) + # Serialize the test event. + self.serializer.serialize(test_event, self.out_file) |