diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py index 575d2c5902d..7e1faa7b949 100755 --- a/tools/run_tests/jobset.py +++ b/tools/run_tests/jobset.py @@ -161,6 +161,7 @@ class Job(object): env = os.environ.copy() for k, v in spec.environ.iteritems(): env[k] = v + self._start = time.time() self._process = subprocess.Popen(args=spec.cmdline, stderr=subprocess.STDOUT, stdout=self._tempfile, @@ -168,12 +169,12 @@ class Job(object): self._state = _RUNNING self._newline_on_success = newline_on_success self._travis = travis - if not travis: - message('START', spec.shortname) + message('START', spec.shortname, do_newline=self._travis) def state(self, update_cache): """Poll current state of the job. Prints messages at completion.""" if self._state == _RUNNING and self._process.poll() is not None: + elapsed = time.time() - self._start if self._process.returncode != 0: self._state = _FAILURE self._tempfile.seek(0) @@ -182,7 +183,7 @@ class Job(object): self._spec.shortname, self._process.returncode), stdout) else: self._state = _SUCCESS - message('PASSED', self._spec.shortname, + message('PASSED', '%s [time=%.1fsec]' % (self._spec.shortname, elapsed), do_newline=self._newline_on_success or self._travis) if self._bin_hash: update_cache.finished(self._spec.identity(), self._bin_hash) @@ -288,7 +289,11 @@ def run(cmdlines, maxjobs if maxjobs is not None else _DEFAULT_MAX_JOBS, newline_on_success, travis, cache if cache is not None else NoCache()) - for cmdline in shuffle_iteratable(cmdlines): + if not travis: + cmdlines = shuffle_iteratable(cmdlines) + else: + cmdlines = sorted(cmdlines) + for cmdline in cmdlines: if not js.start(cmdline): break return js.finish()