summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-10-21 21:48:44 -0700
committerGitHub <noreply@github.com>2021-10-21 21:48:44 -0700
commit216c040bb1fdf73e78d67ab82a43563d7593f874 (patch)
tree914b65e5629d93a05b0c9881d774e7043d76fe9d
parentc53428fe8980aab6eda3e573bafed657e6798e6e (diff)
downloadcpython-git-216c040bb1fdf73e78d67ab82a43563d7593f874.tar.gz
bpo-43592: Raise RLIMIT_NOFILE in test.libregrtest (GH-29127)
Raise RLIMIT_NOFILE in test.libregrtest. On macOS the default is often too low for our testsuite to succeed. Co-authored by reviewer: Victor Stinner (cherry picked from commit 843b890334ca30cf6af27dffe29cecd06b49f7d9) Co-authored-by: Gregory P. Smith <greg@krypto.org>
-rw-r--r--Lib/test/libregrtest/setup.py24
-rw-r--r--Misc/NEWS.d/next/Tests/2021-10-21-17-22-26.bpo-43592.kHRsra.rst3
2 files changed, 27 insertions, 0 deletions
diff --git a/Lib/test/libregrtest/setup.py b/Lib/test/libregrtest/setup.py
index 1f264c1be4..cedf905c35 100644
--- a/Lib/test/libregrtest/setup.py
+++ b/Lib/test/libregrtest/setup.py
@@ -35,6 +35,7 @@ def setup_tests(ns):
for signum in signals:
faulthandler.register(signum, chain=True, file=stderr_fd)
+ _adjust_resource_limits()
replace_stdout()
support.record_original_stdout(sys.stdout)
@@ -117,3 +118,26 @@ def replace_stdout():
sys.stdout.close()
sys.stdout = stdout
atexit.register(restore_stdout)
+
+
+def _adjust_resource_limits():
+ """Adjust the system resource limits (ulimit) if needed."""
+ try:
+ import resource
+ from resource import RLIMIT_NOFILE, RLIM_INFINITY
+ except ImportError:
+ return
+ fd_limit, max_fds = resource.getrlimit(RLIMIT_NOFILE)
+ # On macOS the default fd limit is sometimes too low (256) for our
+ # test suite to succeed. Raise it to something more reasonable.
+ # 1024 is a common Linux default.
+ desired_fds = 1024
+ if fd_limit < desired_fds and fd_limit < max_fds:
+ new_fd_limit = min(desired_fds, max_fds)
+ try:
+ resource.setrlimit(RLIMIT_NOFILE, (new_fd_limit, max_fds))
+ print(f"Raised RLIMIT_NOFILE: {fd_limit} -> {new_fd_limit}")
+ except (ValueError, OSError) as err:
+ print(f"Unable to raise RLIMIT_NOFILE from {fd_limit} to "
+ f"{new_fd_limit}: {err}.")
+
diff --git a/Misc/NEWS.d/next/Tests/2021-10-21-17-22-26.bpo-43592.kHRsra.rst b/Misc/NEWS.d/next/Tests/2021-10-21-17-22-26.bpo-43592.kHRsra.rst
new file mode 100644
index 0000000000..2528857caf
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2021-10-21-17-22-26.bpo-43592.kHRsra.rst
@@ -0,0 +1,3 @@
+:mod:`test.libregrtest` now raises the soft resource limit for the maximum
+number of file descriptors when the default is too low for our test suite as
+was often the case on macOS.