From e1a1674e1ed954c82cf1c88f3392baf4fd86ecdc Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Wed, 24 Apr 2013 23:31:38 +0200 Subject: Issue #17835: Fix test_io when the default OS pipe buffer size is larger than one million bytes. --- Lib/test/support.py | 10 ++++++---- Lib/test/test_io.py | 4 ++-- 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 diff --git a/Misc/NEWS b/Misc/NEWS index 34df05d..5056009 100644 --- 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). -- cgit v0.12