[Python-checkins] cpython (2.7): Issue #17835: Fix test_io when the default OS pipe buffer size is larger than
antoine.pitrou
python-checkins at python.org
Wed Apr 24 23:38:35 CEST 2013
http://hg.python.org/cpython/rev/09811ecd5df1
changeset: 83519:09811ecd5df1
branch: 2.7
parent: 83505:a389700fbc74
user: Antoine Pitrou <solipsis at pitrou.net>
date: Wed Apr 24 23:31:38 2013 +0200
summary:
Issue #17835: Fix test_io when the default OS pipe buffer size is larger than one million bytes.
files:
Lib/test/test_io.py | 4 ++--
Lib/test/test_support.py | 9 +++++++++
Misc/NEWS | 3 +++
3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -2880,7 +2880,7 @@
# The buffered IO layer must check for pending signal
# handlers, which in this case will invoke alarm_interrupt().
self.assertRaises(ZeroDivisionError,
- wio.write, item * (3 * 1000 * 1000))
+ 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.
@@ -2978,7 +2978,7 @@
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/Lib/test/test_support.py b/Lib/test/test_support.py
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -400,6 +400,15 @@
return (len(x) > len(y)) - (len(x) < len(y))
return (x > y) - (x < y)
+
+# 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
+
+
try:
unicode
have_unicode = True
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -131,6 +131,9 @@
Tests
-----
+- Issue #17835: Fix test_io when the default OS pipe buffer size is larger
+ than one million bytes.
+
- Issue #17531: Fix tests that thought group and user ids were always the int
type. Also, always allow -1 as a valid group and user id.
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list