[Python-checkins] cpython (2.7): Issue #11277: test_zlib tests a buffer of 1 GB on 32 bits

victor.stinner python-checkins at python.org
Wed May 4 21:27:50 CEST 2011


http://hg.python.org/cpython/rev/7f3cab59ef3e
changeset:   69834:7f3cab59ef3e
branch:      2.7
parent:      69827:affec521b330
user:        Victor Stinner <victor.stinner at haypocalc.com>
date:        Wed May 04 21:27:39 2011 +0200
summary:
  Issue #11277: test_zlib tests a buffer of 1 GB on 32 bits

(instead of a buffer of 2 GB)

files:
  Lib/test/test_zlib.py |  21 +++++++++++++++------
  1 files changed, 15 insertions(+), 6 deletions(-)


diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py
--- a/Lib/test/test_zlib.py
+++ b/Lib/test/test_zlib.py
@@ -2,7 +2,7 @@
 from test.test_support import TESTFN, run_unittest, import_module, unlink, requires
 import binascii
 import random
-from test.test_support import precisionbigmemtest, _1G
+from test.test_support import precisionbigmemtest, _1G, _4G
 import sys
 
 try:
@@ -72,20 +72,29 @@
                          zlib.crc32('spam',  (2**31)))
 
 
-# Issue #11277 - check that inputs of 2 GB are handled correctly.
-# Be aware of issues #1202, #8650, #8651 and #10276
+# Issue #11277 - check that inputs of 2 GB (or 1 GB on 32 bits system) are
+# handled correctly. Be aware of issues #1202. We cannot test a buffer of 4 GB
+# or more (#8650, #8651 and #10276), because the zlib stores the buffer size
+# into an int.
 class ChecksumBigBufferTestCase(unittest.TestCase):
-    int_max = 0x7FFFFFFF
+    if sys.maxsize > _4G:
+        # (64 bits system) crc32() and adler32() stores the buffer size into an
+        # int, the maximum filesize is INT_MAX (0x7FFFFFFF)
+        filesize = 0x7FFFFFFF
+    else:
+        # (32 bits system) On a 32 bits OS, a process cannot usually address
+        # more than 2 GB, so test only 1 GB
+        filesize = _1G
 
     @unittest.skipUnless(mmap, "mmap() is not available.")
     def test_big_buffer(self):
         if sys.platform[:3] == 'win' or sys.platform == 'darwin':
             requires('largefile',
                      'test requires %s bytes and a long time to run' %
-                     str(self.int_max))
+                     str(self.filesize))
         try:
             with open(TESTFN, "wb+") as f:
-                f.seek(self.int_max-4)
+                f.seek(self.filesize-4)
                 f.write("asdf")
                 f.flush()
                 m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list