From 6364dcbfebe8a21735f025d19566cfd6fe0cb0f0 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 24 Nov 2015 16:29:06 -0800 Subject: [PATCH] Add remaining count to run_tests --- tools/run_tests/jobset.py | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py index 88d95027e28..fb80c8d161c 100755 --- a/tools/run_tests/jobset.py +++ b/tools/run_tests/jobset.py @@ -302,9 +302,13 @@ class Jobset(object): self._hashes = {} self._add_env = add_env self.resultset = {} - + self._remaining = None + + def set_remaining(self, remaining): + self._remaining = remaining + def get_num_failures(self): - return self._failures + return self._failures def start(self, spec): """Start a job. Return True on success, False on failure.""" @@ -357,8 +361,9 @@ class Jobset(object): self._running.remove(job) if dead: return if (not self._travis): - message('WAITING', '%d jobs running, %d complete, %d failed' % ( - len(self._running), self._completed, self._failures)) + rstr = '' if self._remaining is None else ', %d remaining' % self._remaining + message('WAITING', '%d jobs running, %d complete, %d failed%s' % ( + len(self._running), self._completed, self._failures, rstr)) if platform.system() == 'Windows': time.sleep(0.1) else: @@ -397,6 +402,17 @@ class NoCache(object): pass +def tag_remaining(xs): + staging = [] + for x in xs: + staging.append(x) + if len(staging) > 1000: + yield (staging.pop(0), None) + n = len(staging) + for i, x in enumerate(staging): + yield (x, n - i - 1) + + def run(cmdlines, check_cancelled=_never_cancelled, maxjobs=None, @@ -410,8 +426,11 @@ def run(cmdlines, maxjobs if maxjobs is not None else _DEFAULT_MAX_JOBS, newline_on_success, travis, stop_on_failure, add_env, cache if cache is not None else NoCache()) - for cmdline in cmdlines: + for cmdline, remaining in tag_remaining(cmdlines): if not js.start(cmdline): break - js.finish() + if remaining is not None: + js.set_remaining(remaining) + js.finish() return js.get_num_failures(), js.resultset +