Exemplo n.º 1
0
    def test_zlib_compressed_stream_writer(self):

        compressed_ref = zlib.compress(b'abcd')

        # Read parts from the beginning
        for x in range(1, len(compressed_ref)):
            bytesio = six.BytesIO(b'abcd')
            s = utils.ZlibCompressedStream(bytesio)
            compressed = s.read(x)
            self.assertEqual(x, len(compressed))
            self.assertEqual(compressed_ref[0:x], compressed[0:x])

        # Try now with bigger data sizes
        for size in [2 ** x + y for x in range(3, 18) for y in (-1, 0, 1)]:

            original_bytes = os.urandom(size)
            compressed_bytes = zlib.compress(original_bytes)

            # Try first with whole reads
            uncompressed_stream = six.BytesIO(original_bytes)
            compressed_stream = utils.ZlibCompressedStream(uncompressed_stream)
            b = compressed_stream.read()
            self.assertEqual(len(compressed_bytes), len(b), "Incorrect size when compressing %d bytes" % (size))
            self.assertEqual(compressed_bytes, b)

            # Now read little by little
            read_size = min(size // 4, 1024)
            uncompressed_stream = six.BytesIO(original_bytes)
            compressed_stream = utils.ZlibCompressedStream(uncompressed_stream)
            b = b''
            for c in iter(functools.partial(compressed_stream.read, read_size), b''):
                b += c
            self.assertEqual(len(compressed_bytes), len(b), "Incorrect size when compressing %d bytes" % (size))
            self.assertEqual(compressed_bytes, b)
Exemplo n.º 2
0
    def _test_zlib_streams_combined(self, gen_bytes):

        sizes = [2 ** x + y for x in range(1, 18) for y in (-1, 0, 1)]
        for size in sizes:

            original_bytes = gen_bytes(size)

            # Read the whole thing
            original_stream = six.BytesIO(original_bytes)
            compressed_stream = utils.ZlibCompressedStream(original_stream)
            uncompressed_stream = utils.ZlibUncompressedStream(compressed_stream)
            b = uncompressed_stream.read()
            self.assertEqual(size, len(b))
            self.assertEqual(original_bytes, b)

            # There's nothing left now to read
            for x in range(10):
                self.assertEqual(0, len(uncompressed_stream.read(100)))

            # Read with given number of bytes
            for n in (1, len(original_bytes) // 2, len(original_bytes)):

                these_bytes = original_bytes[0:n]

                original_stream = six.BytesIO(these_bytes)
                compressed_stream = utils.ZlibCompressedStream(original_stream)
                uncompressed_stream = utils.ZlibUncompressedStream(compressed_stream)

                b = uncompressed_stream.read(n)
                self.assertEqual(n, len(b))
                self.assertEqual(these_bytes, b)

                # There's nothing left now to read
                for x in range(10):
                    self.assertEqual(0, len(uncompressed_stream.read(100)))