[PATCH] D18089: [lit] Hack lit to allow a test suite to request that it is run "early".
Rafael EspĂndola via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 11 13:51:18 PST 2016
Nice!
I can also reproduce the speedup, from 35.66s to 29.46s in a Release+Asserts!
On 11 March 2016 at 12:52, Chandler Carruth via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> chandlerc created this revision.
> chandlerc added a subscriber: llvm-commits.
> Herald added a subscriber: mcrosier.
>
> This lets us for example start running the unit test suite early. For
> 'check-llvm' on my machine, this drops the tim e from 44s to 32s!!!!!
>
> It's pretty ugly. I barely know how to write Python, so feel free to
> just tell me how I should write it instead. =D
>
> http://reviews.llvm.org/D18089
>
> Files:
> test/Unit/lit.cfg
> utils/lit/lit/Test.py
> utils/lit/lit/TestingConfig.py
> utils/lit/lit/main.py
>
> Index: utils/lit/lit/main.py
> ===================================================================
> --- utils/lit/lit/main.py
> +++ utils/lit/lit/main.py
> @@ -367,7 +367,8 @@
> elif opts.incremental:
> sort_by_incremental_cache(run)
> else:
> - run.tests.sort(key = lambda result_test: result_test.getFullName())
> + run.tests.sort(key = lambda t: (('a' if t.isEarlyTest() else 'b') +
> + t.getFullName()))
>
> # Finally limit the number of tests, if desired.
> if opts.maxTests is not None:
> Index: utils/lit/lit/TestingConfig.py
> ===================================================================
> --- utils/lit/lit/TestingConfig.py
> +++ utils/lit/lit/TestingConfig.py
> @@ -118,7 +118,8 @@
> def __init__(self, parent, name, suffixes, test_format,
> environment, substitutions, unsupported,
> test_exec_root, test_source_root, excludes,
> - available_features, pipefail, limit_to_features = []):
> + available_features, pipefail, limit_to_features = [],
> + is_early = False):
> self.parent = parent
> self.name = str(name)
> self.suffixes = set(suffixes)
> @@ -135,6 +136,8 @@
> # require one of the features in this list if this list is non-empty.
> # Configurations can set this list to restrict the set of tests to run.
> self.limit_to_features = set(limit_to_features)
> + # Whether the suite should be tested early in a given run.
> + self.is_early = bool(is_early)
>
> def finish(self, litConfig):
> """finish() - Finish this config object, after loading is complete."""
> Index: utils/lit/lit/Test.py
> ===================================================================
> --- utils/lit/lit/Test.py
> +++ utils/lit/lit/Test.py
> @@ -235,6 +235,15 @@
>
> return False
>
> + def isEarlyTest(self):
> + """
> + isEarlyTest() -> bool
> +
> + Check whether this test should be executed early in a particular run.
> + This can be used for test suites with long running tests to maximize
> + parallelism or where it is desirable to surface their failures early.
> + """
> + return self.suite.config.is_early
>
> def getJUnitXML(self):
> test_name = self.path_in_suite[-1]
> Index: test/Unit/lit.cfg
> ===================================================================
> --- test/Unit/lit.cfg
> +++ test/Unit/lit.cfg
> @@ -12,6 +12,9 @@
> # suffixes: A list of file extensions to treat as test files.
> config.suffixes = []
>
> +# is_early; Request to run this suite early.
> +config.is_early = True
> +
> # test_source_root: The root path where tests are located.
> # test_exec_root: The root path where tests should be run.
> llvm_obj_root = getattr(config, 'llvm_obj_root', None)
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list