]> git-server-git.apps.pok.os.sepia.ceph.com Git - s3-tests.git/commitdiff
improve random file generation performance
authorSteven Berler <steven.berler@dreamhost.com>
Thu, 22 Dec 2011 23:21:58 +0000 (23:21 +0000)
committerSteven Berler <steven.berler@dreamhost.com>
Thu, 22 Dec 2011 23:21:58 +0000 (23:21 +0000)
Makes the random file generator not generate more data
than the size of the file.  Previously it would generate
1 MB of data even if the file was much smaller.

s3tests/realistic.py

index b88a7276b16f824004e578f7e9a554483cd7dada..38fd9ba47b41f4fa104998cecf73b3c767a4f44e 100644 (file)
@@ -3,6 +3,7 @@ import random
 import string
 import struct
 import time
+import math
 
 
 NANOSECOND = int(1e9)
@@ -45,10 +46,11 @@ class RandomContentFile(object):
 
     def _generate(self):
         # generate and return a chunk of pseudorandom data
-        # 256 bits = 32 bytes at a time
-        size = 1*1024*1024
-        l = [self.random.getrandbits(64) for _ in xrange(size/8)]
-        s = struct.pack((size/8)*'Q', *l)
+        size = min(self.size, 1*1024*1024) # generate at most 1 MB at a time
+        chunks = int(math.ceil(size/8.0))  # number of 8-byte chunks to create
+
+        l = [self.random.getrandbits(64) for _ in xrange(chunks)]
+        s = struct.pack(chunks*'Q', *l)
         return s
 
     def read(self, size=-1):