예제 #1
0
    def testEmptyData(self):
        data = [b"", b"", b""]

        serialized = list(gzchunked.Serialize(iter(data)))
        deserialized = list(gzchunked.Deserialize(iter(serialized)))

        self.assertEqual(deserialized, data)
예제 #2
0
    def testSingleEntry(self):
        data = [b"foo"]

        serialized = list(gzchunked.Serialize(iter(data)))
        deserialized = list(gzchunked.Deserialize(iter(serialized)))

        self.assertEqual(deserialized, data)
예제 #3
0
    def testMultipleEntries(self):
        data = [b"foo", b"bar", b"baz", b"quux", b"norf", b"thud"]

        serialized = list(gzchunked.Serialize(iter(data)))
        deserialized = list(gzchunked.Deserialize(iter(serialized)))

        self.assertEqual(deserialized, data)
예제 #4
0
    def testIncorrectSize(self):
        buf = io.BytesIO()
        with gzip.GzipFile(fileobj=buf, mode="wb") as filedesc:
            filedesc.write(struct.pack("!I", 42))

        with self.assertRaises(ValueError):
            list(gzchunked.Deserialize(iter([buf.getvalue()])))
예제 #5
0
  def testMultipleChunks(self):
    data = [os.urandom(1024 * 1024) for _ in range(8)]

    serialized = list(gzchunked.Serialize(iter(data), chunk_size=(1024 * 1024)))
    self.assertGreater(len(serialized), 1)

    deserialized = list(gzchunked.Deserialize(iter(serialized)))
    self.assertEqual(deserialized, data)
예제 #6
0
  def testIncorrectData(self):
    buf = io.BytesIO()
    with gzip.GzipFile(fileobj=buf, mode="wb") as filedesc:
      filedesc.write(struct.pack("!Q", 8))
      filedesc.write(b"quux")

    with self.assertRaises(chunked.ChunkTruncatedError):
      list(gzchunked.Deserialize(iter([buf.getvalue()])))
예제 #7
0
 def testNoChunks(self):
     deserialized = list(gzchunked.Deserialize(iter([])))
     self.assertEmpty(deserialized)
예제 #8
0
    def testEmpty(self):
        serialized = list(gzchunked.Serialize(iter([])))
        deserialized = list(gzchunked.Deserialize(iter(serialized)))

        self.assertEqual(deserialized, [])
예제 #9
0
 def DeserializeStream(
     cls,
     entries: Iterator[bytes],
 ) -> Iterator["TimelineEntry"]:
     return map(cls.FromSerializedBytes, gzchunked.Deserialize(entries))
예제 #10
0
 def DeserializeStream(
     cls,
     entries,
 ):
     return map(cls.FromSerializedBytes, gzchunked.Deserialize(entries))
예제 #11
0
def DeserializeTimelineEntryProtoStream(
    entries: Iterator[bytes], ) -> Iterator[timeline_pb2.TimelineEntry]:
    """Deserializes given gzchunked stream chunks into TimelineEntry protos."""
    return map(_ParseTimelineEntryProto, gzchunked.Deserialize(entries))