]> granicus.if.org Git - python/commitdiff
Issue #12156: Skip test_multiprocessing on systems which don't support enough
authorCharles-François Natali <neologix@free.fr>
Tue, 22 Nov 2011 17:55:22 +0000 (18:55 +0100)
committerCharles-François Natali <neologix@free.fr>
Tue, 22 Nov 2011 17:55:22 +0000 (18:55 +0100)
POSIX semaphores (among which FreeBSD < 8).

Lib/test/test_multiprocessing.py

index 0bc056fec105a05b45d1122afdcbb9396b444abf..b99201b2809de815aac8d46252aad70250c43cad 100644 (file)
@@ -115,6 +115,22 @@ except ImportError:
     Structure = object
     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
 #
@@ -2349,6 +2365,8 @@ def test_main(run=None):
         except OSError:
             raise unittest.SkipTest("OSError raises on RLock creation, see issue 3111!")
 
+    check_enough_semaphores()
+
     if run is None:
         from test.support import run_unittest as run