diff options
| -rw-r--r-- | llvm/utils/lit/lit/run.py | 31 | 
1 files changed, 15 insertions, 16 deletions
diff --git a/llvm/utils/lit/lit/run.py b/llvm/utils/lit/lit/run.py index fb53817dfc8..d758f7ab4eb 100644 --- a/llvm/utils/lit/lit/run.py +++ b/llvm/utils/lit/lit/run.py @@ -11,20 +11,20 @@ class NopSemaphore(object):      def acquire(self): pass      def release(self): pass -def create_run(tests, lit_config, workers, progress_callback, max_time): +def create_run(tests, lit_config, workers, progress_callback, timeout=None):      # TODO(yln) assert workers > 0      if workers == 1: -        return SerialRun(tests, lit_config, progress_callback, max_time) -    return ParallelRun(tests, lit_config, progress_callback, max_time, workers) +        return SerialRun(tests, lit_config, progress_callback, timeout) +    return ParallelRun(tests, lit_config, progress_callback, timeout, workers)  class Run(object):      """A concrete, configured testing run.""" -    def __init__(self, tests, lit_config, progress_callback, max_time): +    def __init__(self, tests, lit_config, progress_callback, timeout):          self.tests = tests          self.lit_config = lit_config          self.progress_callback = progress_callback -        self.max_time = max_time +        self.timeout = timeout      def execute(self):          """ @@ -35,7 +35,7 @@ class Run(object):          The progress_callback will be invoked for each completed test. -        If max_time is non-None, it should be a time in seconds after which to +        If timeout is non-None, it should be a time in seconds after which to          stop executing tests.          Returns the elapsed testing time. @@ -51,7 +51,8 @@ class Run(object):          self.hit_max_failures = False          start = time.time() -        self._execute() +        deadline = (start + self.timeout) if self.timeout else float('inf') +        self._execute(deadline)          end = time.time()          # Mark any tests that weren't run as UNRESOLVED. @@ -91,11 +92,11 @@ class Run(object):              self.hit_max_failures = True  class SerialRun(Run): -    def __init__(self, tests, lit_config, progress_callback, max_time): -        super(SerialRun, self).__init__(tests, lit_config, progress_callback, max_time) +    def __init__(self, tests, lit_config, progress_callback, timeout): +        super(SerialRun, self).__init__(tests, lit_config, progress_callback, timeout) -    def _execute(self): -        # TODO(yln): ignores max_time +    def _execute(self, deadline): +        # TODO(yln): ignores deadline          for test_index, test in enumerate(self.tests):              lit.worker._execute_test(test, self.lit_config)              self._consume_test_result((test_index, test)) @@ -103,13 +104,11 @@ class SerialRun(Run):                  break  class ParallelRun(Run): -    def __init__(self, tests, lit_config, progress_callback, max_time, workers): -        super(ParallelRun, self).__init__(tests, lit_config, progress_callback, max_time) +    def __init__(self, tests, lit_config, progress_callback, timeout, workers): +        super(ParallelRun, self).__init__(tests, lit_config, progress_callback, timeout)          self.workers = workers -    def _execute(self): -        deadline = (time.time() + self.max_time) if self.max_time else float('inf') - +    def _execute(self, deadline):          semaphores = {              k: NopSemaphore() if v is None else              multiprocessing.BoundedSemaphore(v) for k, v in  | 

