mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
Issue #18643: Fix some test_socket failures due to large default socket buffer
sizes.
This commit is contained in:
commit
74b7408604
2 changed files with 11 additions and 4 deletions
|
@ -602,8 +602,14 @@ IPV6_ENABLED = _is_ipv6_enabled()
|
||||||
# Windows limit seems to be around 512 B, and many Unix kernels have a
|
# 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.
|
# 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).
|
# (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
|
# decorator for skipping tests on non-IEEE 754 platforms
|
||||||
requires_IEEE_754 = unittest.skipUnless(
|
requires_IEEE_754 = unittest.skipUnless(
|
||||||
|
|
|
@ -1245,11 +1245,12 @@ class GeneralModuleTests(unittest.TestCase):
|
||||||
c.settimeout(1.5)
|
c.settimeout(1.5)
|
||||||
with self.assertRaises(ZeroDivisionError):
|
with self.assertRaises(ZeroDivisionError):
|
||||||
signal.alarm(1)
|
signal.alarm(1)
|
||||||
c.sendall(b"x" * (1024**2))
|
c.sendall(b"x" * support.SOCK_MAX_SIZE)
|
||||||
if with_timeout:
|
if with_timeout:
|
||||||
signal.signal(signal.SIGALRM, ok_handler)
|
signal.signal(signal.SIGALRM, ok_handler)
|
||||||
signal.alarm(1)
|
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:
|
finally:
|
||||||
signal.alarm(0)
|
signal.alarm(0)
|
||||||
signal.signal(signal.SIGALRM, old_alarm)
|
signal.signal(signal.SIGALRM, old_alarm)
|
||||||
|
@ -4136,7 +4137,7 @@ class UnbufferedFileObjectClassTestCase(FileObjectClassTestCase):
|
||||||
self.serv_skipped = None
|
self.serv_skipped = None
|
||||||
self.serv_conn.setblocking(False)
|
self.serv_conn.setblocking(False)
|
||||||
# Try to saturate the socket buffer pipe with repeated large writes.
|
# 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
|
LIMIT = 10
|
||||||
# The first write() succeeds since a chunk of data can be buffered
|
# The first write() succeeds since a chunk of data can be buffered
|
||||||
n = self.write_file.write(BIG)
|
n = self.write_file.write(BIG)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue