#!/usr/bin/python import unittest import test.support import resource import gzip as gzipnew import gzip import os import random sentence = b"The quick brown fox jumped over the lazy dog" class TestGzip2(unittest.TestCase): filename = test.support.TESTFN def setUp (self): pass def tearDown (self): try: os.unlink(self.filename) except os.error: pass def __block(self, mod, size, count, data=None): f = mod.GzipFile(self.filename, 'wb') if not data: random.seed(12345) data = bytearray(size) for i in range(size): data[i] = random.randint(0,255) else: data = (data*(size//len(data)+1))[:size] r1 = resource.getrusage(resource.RUSAGE_SELF) for i in range(count): f.write(data) f.close() r2 = resource.getrusage(resource.RUSAGE_SELF) rv = [r2[i] - r1[i] for i in range(len(r2))] print("Write: %8.3f s" % rv[0], end=' ') f = mod.GzipFile(self.filename, 'rb') r1 = resource.getrusage(resource.RUSAGE_SELF) while 1: c = f.read(size) if not c: break f.close() r2 = resource.getrusage(resource.RUSAGE_SELF) rv = [r2[i] - r1[i] for i in range(len(r2))] print("Read: %8.3f s" % rv[0]) def __line(self, mod, lines, maxlen): f = mod.GzipFile(self.filename, 'wb') random.seed(12345) r1 = resource.getrusage(resource.RUSAGE_SELF) for i in range(lines): f.write(sentence*random.randint(1,maxlen)+b"\n") f.close() r2 = resource.getrusage(resource.RUSAGE_SELF) rv = [r2[i] - r1[i] for i in range(len(r2))] print("Write: %8.3f s" % rv[0], end=' ') f = mod.GzipFile(self.filename, 'rb') r1 = resource.getrusage(resource.RUSAGE_SELF) while 1: c = f.readline() if not c: break f.close() r2 = resource.getrusage(resource.RUSAGE_SELF) rv = [r2[i] - r1[i] for i in range(len(r2))] print("Read: %8.3f s" % rv[0]) def __binary(self, mod, file, size, count): data = open(file, 'rb').read() self.__block(mod, size, count, data) def __getfile(self): if os.path.isfile("/usr/lib64/libc.a"): return "/usr/lib64/libc.a" if os.path.isfile("/usr/lib/libc.a"): return "/usr/lib/libc.a" return None def test_block(self): for size, count, data in ( (1, 512*1024, sentence), (4, 256*1024, sentence), (16, 256*1024, sentence), (1024, 512*1024, sentence), (16384, 512*1024//16, sentence), (1024*1024*10, 52, sentence), (32, 256*1024, None), (16384, 512*1024//16, None), (1024*1024*10, 32, None), ): if data == None: print("\nRandom %d byte block test" % size) else: print("\nText %d byte block test" % size) print("Original gzip", end=' ') self.__block(gzip, size, count, data) print("New gzip ", end=' ') self.__block(gzipnew, size, count, data) def test_readline(self): for lines, maxlen in ( (100000, 1), (10000, 1000), (100, 100000), ): print("\nReadline text (max %d linelength) test" % (maxlen*len(sentence))) print("Original gzip", end=' ') self.__line(gzip, lines, maxlen) print("New gzip ", end=' ') self.__line(gzipnew, lines, maxlen) def test_binary(self): f = self.__getfile() if not f: return for size, count in ( (1, 1024*512), (16, 1024*256), (1024, 1024*256), (16384, 1024*32), ): print("\n%d byte binary file test" % size) print("Original gzip", end=' ') self.__binary(gzip, f, size, count) print("New gzip ", end=' ') self.__binary(gzipnew, f, size, count) def test_main(verbose=None): test.support.run_unittest(TestGzip2) if __name__ == "__main__": test_main(verbose=True) # vim:ts=4:sw=4:showmatch:expandtab