summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulian Lettner <jlettner@apple.com>2019-02-26 19:03:26 +0000
committerJulian Lettner <jlettner@apple.com>2019-02-26 19:03:26 +0000
commiteb38a70d11a66a950a8234940a0614888a988200 (patch)
tree7b346195d106782c69f5175209ca390b10c058d5
parent76eb4b02d93b3a7704b496f3e16dd14bf72cb3a9 (diff)
downloadbcm5719-llvm-eb38a70d11a66a950a8234940a0614888a988200.tar.gz
bcm5719-llvm-eb38a70d11a66a950a8234940a0614888a988200.zip
[lit] Allow setting parallelism groups to None
Check that we do not crash if a parallelism group is explicitly set to None. Permits usage of the following pattern. [lit.common.cfg] lit_config.parallelism_groups['my_group'] = None if <condition>: lit_config.parallelism_groups['my_group'] = 3 [project/lit.cfg] config.parallelism_group = 'my_group' Reviewers: rnk Differential Revision: https://reviews.llvm.org/D58305 llvm-svn: 354912
-rw-r--r--llvm/utils/lit/lit/TestingConfig.py2
-rw-r--r--llvm/utils/lit/lit/run.py15
-rw-r--r--llvm/utils/lit/tests/Inputs/parallelism-groups/lit.cfg11
-rw-r--r--llvm/utils/lit/tests/Inputs/parallelism-groups/test1.txt1
-rw-r--r--llvm/utils/lit/tests/Inputs/parallelism-groups/test2.txt1
-rw-r--r--llvm/utils/lit/tests/parallelism-groups.py21
6 files changed, 45 insertions, 6 deletions
diff --git a/llvm/utils/lit/lit/TestingConfig.py b/llvm/utils/lit/lit/TestingConfig.py
index 8060688116b..738aafe5b41 100644
--- a/llvm/utils/lit/lit/TestingConfig.py
+++ b/llvm/utils/lit/lit/TestingConfig.py
@@ -106,7 +106,7 @@ class TestingConfig:
environment, substitutions, unsupported,
test_exec_root, test_source_root, excludes,
available_features, pipefail, limit_to_features = [],
- is_early = False, parallelism_group = ""):
+ is_early = False, parallelism_group = None):
self.parent = parent
self.name = str(name)
self.suffixes = set(suffixes)
diff --git a/llvm/utils/lit/lit/run.py b/llvm/utils/lit/lit/run.py
index a33e541654b..18e754addd3 100644
--- a/llvm/utils/lit/lit/run.py
+++ b/llvm/utils/lit/lit/run.py
@@ -17,6 +17,12 @@ class _Display(object):
if self.failedCount == self.maxFailures:
self.provider.cancel()
+# No-operation semaphore for supporting `None` for parallelism_groups.
+# lit_config.parallelism_groups['my_group'] = None
+class NopSemaphore(object):
+ def acquire(self): pass
+ def release(self): pass
+
class Run(object):
"""
This class represents a concrete, configured testing run.
@@ -26,11 +32,10 @@ class Run(object):
self.lit_config = lit_config
self.tests = tests
# Set up semaphores to limit parallelism of certain classes of tests.
- # For example, some ASan tests require lots of virtual memory and run
- # faster with less parallelism on OS X.
- self.parallelism_semaphores = \
- {k: multiprocessing.BoundedSemaphore(v) for k, v in
- self.lit_config.parallelism_groups.items()}
+ self.parallelism_semaphores = {
+ k : NopSemaphore() if v is None else
+ multiprocessing.BoundedSemaphore(v)
+ for k, v in lit_config.parallelism_groups.items()}
def execute_tests_in_pool(self, jobs, max_time):
# We need to issue many wait calls, so compute the final deadline and
diff --git a/llvm/utils/lit/tests/Inputs/parallelism-groups/lit.cfg b/llvm/utils/lit/tests/Inputs/parallelism-groups/lit.cfg
new file mode 100644
index 00000000000..ffc41b1ffe5
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/parallelism-groups/lit.cfg
@@ -0,0 +1,11 @@
+import lit.formats
+config.name = 'parallelism-groups'
+config.suffixes = ['.txt']
+config.test_format = lit.formats.ShTest()
+config.test_source_root = None
+config.test_exec_root = None
+
+# Should not crash
+lit_config.parallelism_groups['my_group'] = None
+
+config.parallelism_group = 'my_group'
diff --git a/llvm/utils/lit/tests/Inputs/parallelism-groups/test1.txt b/llvm/utils/lit/tests/Inputs/parallelism-groups/test1.txt
new file mode 100644
index 00000000000..b80b60b7a27
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/parallelism-groups/test1.txt
@@ -0,0 +1 @@
+# RUN: true
diff --git a/llvm/utils/lit/tests/Inputs/parallelism-groups/test2.txt b/llvm/utils/lit/tests/Inputs/parallelism-groups/test2.txt
new file mode 100644
index 00000000000..b80b60b7a27
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/parallelism-groups/test2.txt
@@ -0,0 +1 @@
+# RUN: true
diff --git a/llvm/utils/lit/tests/parallelism-groups.py b/llvm/utils/lit/tests/parallelism-groups.py
new file mode 100644
index 00000000000..c6427bee124
--- /dev/null
+++ b/llvm/utils/lit/tests/parallelism-groups.py
@@ -0,0 +1,21 @@
+# Check that we do not crash if a parallelism group is set to None. Permits
+# usage of the following pattern.
+#
+# [lit.common.cfg]
+# lit_config.parallelism_groups['my_group'] = None
+# if <condition>:
+# lit_config.parallelism_groups['my_group'] = 3
+#
+# [project/lit.cfg]
+# config.parallelism_group = 'my_group'
+#
+# Note: We need at least 2 tests to prevent lit from using "single process
+# mode", which ignores parallelism groups.
+#
+
+# RUN: %{lit} -j2 %{inputs}/parallelism-groups | FileCheck %s
+
+# CHECK: -- Testing: 2 tests, 2 threads --
+# CHECK-DAG: PASS: parallelism-groups :: test1.txt
+# CHECK-DAG: PASS: parallelism-groups :: test2.txt
+# CHECK: Expected Passes : 2
OpenPOWER on IntegriCloud