Issue #12156: Skip test_multiprocessing on systems which don't support enough

POSIX semaphores (among which FreeBSD < 8).
parent ab1d16b4
...@@ -98,6 +98,22 @@ except ImportError: ...@@ -98,6 +98,22 @@ except ImportError:
Structure = object Structure = object
c_int = c_double = None c_int = c_double = None
def check_enough_semaphores():
"""Check that the system supports enough semaphores to run the test."""
# minimum number of semaphores available according to POSIX
nsems_min = 256
try:
nsems = os.sysconf("SC_SEM_NSEMS_MAX")
except (AttributeError, ValueError):
# sysconf not available or setting not available
return
if nsems == -1 or nsems >= nsems_min:
return
raise unittest.SkipTest("The OS doesn't support enough semaphores "
"to run the test (required: %d)." % nsems_min)
# #
# Creates a wrapper for a function which records the time it takes to finish # Creates a wrapper for a function which records the time it takes to finish
# #
...@@ -2294,6 +2310,8 @@ def test_main(run=None): ...@@ -2294,6 +2310,8 @@ def test_main(run=None):
except OSError: except OSError:
raise unittest.SkipTest("OSError raises on RLock creation, see issue 3111!") raise unittest.SkipTest("OSError raises on RLock creation, see issue 3111!")
check_enough_semaphores()
if run is None: if run is None:
from test.support import run_unittest as run from test.support import run_unittest as run
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment