# HG changeset patch # User Gregory Szorc # Date 1571286700 25200 # Node ID ac140b85aae9afa3aaac708e937875bcef0d2d94 # Parent ae91e4e4c9b084eeb93c5e4a05fdd3ca26db267e tests: use time.time() for relative start and stop times os.times() does not work on Windows. This was resulting in the test start, stop, and duration times being reported as 0. This commit swaps in time.time() for wall clock measurements. This isn't ideal, as time.time() is not monotonic. But Python 2.7 does not have a monotonic timer that works on Windows. So it is the best we have which is trivially usable. And test times aren't terribly important, so variances due to clock skew are arguably acceptable. Differential Revision: https://phab.mercurial-scm.org/D7126 diff -r ae91e4e4c9b0 -r ac140b85aae9 tests/run-tests.py --- a/tests/run-tests.py Wed Oct 16 21:25:08 2019 -0700 +++ b/tests/run-tests.py Wed Oct 16 21:31:40 2019 -0700 @@ -2246,15 +2246,19 @@ # os.times module computes the user time and system time spent by # child's processes along with real elapsed time taken by a process. # This module has one limitation. It can only work for Linux user - # and not for Windows. + # and not for Windows. Hence why we fall back to another function + # for wall time calculations. test.started_times = os.times() + # TODO use a monotonic clock once support for Python 2.7 is dropped. + test.started_time = time.time() if self._firststarttime is None: # thread racy but irrelevant - self._firststarttime = test.started_times[4] + self._firststarttime = test.started_time def stopTest(self, test, interrupted=False): super(TestResult, self).stopTest(test) test.stopped_times = os.times() + stopped_time = time.time() starttime = test.started_times endtime = test.stopped_times @@ -2264,9 +2268,9 @@ test.name, endtime[2] - starttime[2], # user space CPU time endtime[3] - starttime[3], # sys space CPU time - endtime[4] - starttime[4], # real time - starttime[4] - origin, # start date in run context - endtime[4] - origin, # end date in run context + stopped_time - test.started_time, # real time + test.started_time - origin, # start date in run context + stopped_time - origin, # end date in run context ) )