diff options
author | Charles-François Natali <cf.natali@gmail.com> | 2013-08-29 17:01:40 (GMT) |
---|---|---|
committer | Charles-François Natali <cf.natali@gmail.com> | 2013-08-29 17:01:40 (GMT) |
commit | 5fd2642adb3874a4e6efc72a0782f4e98e7c6ad0 (patch) | |
tree | a9d9a7deec5dbb3d9df43d06e01364c6a8dc6401 /Lib/test | |
parent | 4af4d273bd2c18e8e3d56dc43a877ce04a5a1e13 (diff) | |
download | cpython-5fd2642adb3874a4e6efc72a0782f4e98e7c6ad0.zip cpython-5fd2642adb3874a4e6efc72a0782f4e98e7c6ad0.tar.gz cpython-5fd2642adb3874a4e6efc72a0782f4e98e7c6ad0.tar.bz2 |
Issue #18643: Fix some test_socket failures due to large default socket buffer
sizes.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/support/__init__.py | 10 | ||||
-rw-r--r-- | Lib/test/test_socket.py | 7 |
2 files changed, 12 insertions, 5 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 1c6ee03..1ab2136 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -601,8 +601,14 @@ IPV6_ENABLED = _is_ipv6_enabled() # 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 - +PIPE_MAX_SIZE = 4 * 1024 * 1024 + 1 + +# A constant likely larger than the underlying OS socket buffer size, to make +# writes blocking. +# The socket buffer sizes can usually be tuned system-wide (e.g. through sysctl +# on Linux), or on a per-socket basis (SO_SNDBUF/SO_RCVBUF). See issue #18643 +# for a discussion of this number). +SOCK_MAX_SIZE = 16 * 1024 * 1024 + 1 # decorator for skipping tests on non-IEEE 754 platforms requires_IEEE_754 = unittest.skipUnless( diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 9567090..b95e1ab 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -1210,11 +1210,12 @@ class GeneralModuleTests(unittest.TestCase): c.settimeout(1.5) with self.assertRaises(ZeroDivisionError): signal.alarm(1) - c.sendall(b"x" * (1024**2)) + c.sendall(b"x" * support.SOCK_MAX_SIZE) if with_timeout: signal.signal(signal.SIGALRM, ok_handler) signal.alarm(1) - self.assertRaises(socket.timeout, c.sendall, b"x" * (1024**2)) + self.assertRaises(socket.timeout, c.sendall, + b"x" * support.SOCK_MAX_SIZE) finally: signal.alarm(0) signal.signal(signal.SIGALRM, old_alarm) @@ -4047,7 +4048,7 @@ class UnbufferedFileObjectClassTestCase(FileObjectClassTestCase): self.serv_skipped = None self.serv_conn.setblocking(False) # Try to saturate the socket buffer pipe with repeated large writes. - BIG = b"x" * (1024 ** 2) + BIG = b"x" * support.SOCK_MAX_SIZE LIMIT = 10 # The first write() succeeds since a chunk of data can be buffered n = self.write_file.write(BIG) |