diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2013-04-24 21:31:38 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2013-04-24 21:31:38 (GMT) |
commit | e1a1674e1ed954c82cf1c88f3392baf4fd86ecdc (patch) | |
tree | ab92fc3631b27dba0a3a23bedd06148a4dcb174d | |
parent | 6ae466732c6a5cd988d02110ab0538c7752a3253 (diff) | |
download | cpython-e1a1674e1ed954c82cf1c88f3392baf4fd86ecdc.zip cpython-e1a1674e1ed954c82cf1c88f3392baf4fd86ecdc.tar.gz cpython-e1a1674e1ed954c82cf1c88f3392baf4fd86ecdc.tar.bz2 |
Issue #17835: Fix test_io when the default OS pipe buffer size is larger than one million bytes.
-rw-r--r-- | Lib/test/support.py | 10 | ||||
-rw-r--r-- | Lib/test/test_io.py | 4 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 11 insertions, 6 deletions
diff --git a/Lib/test/support.py b/Lib/test/support.py index f2c3434..bc5176a 100644 --- a/Lib/test/support.py +++ b/Lib/test/support.py @@ -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 diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 95b4d80..6efd010 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -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 @@ -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). |