diff options
author | Julian Lettner <jlettner@apple.com> | 2019-02-26 19:03:26 +0000 |
---|---|---|
committer | Julian Lettner <jlettner@apple.com> | 2019-02-26 19:03:26 +0000 |
commit | eb38a70d11a66a950a8234940a0614888a988200 (patch) | |
tree | 7b346195d106782c69f5175209ca390b10c058d5 | |
parent | 76eb4b02d93b3a7704b496f3e16dd14bf72cb3a9 (diff) | |
download | bcm5719-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.py | 2 | ||||
-rw-r--r-- | llvm/utils/lit/lit/run.py | 15 | ||||
-rw-r--r-- | llvm/utils/lit/tests/Inputs/parallelism-groups/lit.cfg | 11 | ||||
-rw-r--r-- | llvm/utils/lit/tests/Inputs/parallelism-groups/test1.txt | 1 | ||||
-rw-r--r-- | llvm/utils/lit/tests/Inputs/parallelism-groups/test2.txt | 1 | ||||
-rw-r--r-- | llvm/utils/lit/tests/parallelism-groups.py | 21 |
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 |