Issue #17835: Fix test_io when the default OS pipe buffer size is larger than one...
authorAntoine Pitrou <solipsis@pitrou.net>
Wed, 24 Apr 2013 21:31:38 +0000 (23:31 +0200)
committerAntoine Pitrou <solipsis@pitrou.net>
Wed, 24 Apr 2013 21:31:38 +0000 (23:31 +0200)
Lib/test/support.py
Lib/test/test_io.py
Misc/NEWS

index f2c3434c078739f00f3beec335738b800838f136..bc5176acf492071c9d942918627ad951b8af76c4 100644 (file)
@@ -573,10 +573,12 @@ def _is_ipv6_enabled():
 IPV6_ENABLED = _is_ipv6_enabled()
 
 
-# A constant likely larger than the underlying OS pipe buffer size.
-# Windows limit seems to be around 512B, and many Unix kernels have a 64K pipe
-# buffer size or 16*PAGE_SIZE: take a few megs to be sure.  This
-PIPE_MAX_SIZE = 3 * 1000 * 1000
+# A constant likely larger than the underlying OS pipe buffer size, to
+# make writes blocking.
+# Windows limit seems to be around 512 B, and many Unix kernels have a
+# 64 KiB pipe buffer size or 16 * PAGE_SIZE: take a few megs to be sure.
+# (see issue #17835 for a discussion of this number).
+PIPE_MAX_SIZE = 4 *1024 * 1024 + 1
 
 
 # decorator for skipping tests on non-IEEE 754 platforms
index 95b4d80461c1e3afc4bb9218a47ee0da2fa4a50a..6efd0105611dde2049cff073affba2c8815913ea 100644 (file)
@@ -3061,7 +3061,7 @@ class SignalsTest(unittest.TestCase):
             # The buffered IO layer must check for pending signal
             # handlers, which in this case will invoke alarm_interrupt().
             self.assertRaises(ZeroDivisionError,
-                        wio.write, item * (support.PIPE_MAX_SIZE // len(item)))
+                        wio.write, item * (support.PIPE_MAX_SIZE // len(item) + 1))
             t.join()
             # We got one byte, get another one and check that it isn't a
             # repeat of the first one.
@@ -3160,7 +3160,7 @@ class SignalsTest(unittest.TestCase):
         select = support.import_module("select")
         # A quantity that exceeds the buffer size of an anonymous pipe's
         # write end.
-        N = 1024 * 1024
+        N = support.PIPE_MAX_SIZE
         r, w = os.pipe()
         fdopen_kwargs["closefd"] = False
         # We need a separate thread to read from the pipe and allow the
index 34df05de498a986dbfb08f6cd5dbd2fbc641a576..5056009c41f3e886dbe95ec6ab7380eda729871a 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -132,6 +132,9 @@ IDLE
 Tests
 -----
 
+- Issue #17835: Fix test_io when the default OS pipe buffer size is larger
+  than one million bytes.
+
 - Issue #17065: Use process-unique key for winreg tests to avoid failures if
   test is run multiple times in parallel (eg: on a buildbot host).