#!/usr/bin/python import unittest from test import test_support import resource import gzipnew import gzip import os import random sentence = "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 = "" for i in xrange(size): data += chr(random.randint(0,255)) else: data = (data*(size/len(data)+1))[:size] r1 = resource.getrusage(resource.RUSAGE_SELF) for i in xrange(count): f.write(data) f.close() r2 = resource.getrusage(resource.RUSAGE_SELF) rv = [r2[i] - r1[i] for i in xrange(len(r2))] print "Write: %8.3f s" % rv[0], 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 xrange(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 xrange(lines): f.write(sentence*random.randint(1,maxlen)+"\n") f.close() r2 = resource.getrusage(resource.RUSAGE_SELF) rv = [r2[i] - r1[i] for i in xrange(len(r2))] print "Write: %8.3f s" % rv[0], 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 xrange(len(r2))] print "Read: %8.3f s" % rv[0] def __binary(self, mod, file, size, count): data = open(file).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", self.__block(gzip, size, count, data) print "New gzip ", 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", self.__line(gzip, lines, maxlen) print "New gzip ", 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", self.__binary(gzip, f, size, count) print "New gzip ", 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