bpo-36719: regrtest closes explicitly WindowsLoadTracker (GH-12965) · python/cpython@00db7c7 (original) (raw)
`@@ -98,6 +98,8 @@ def init(self):
`
98
98
`# used by --junit-xml
`
99
99
`self.testsuite_xml = None
`
100
100
``
``
101
`+
self.win_load_tracker = None
`
``
102
+
101
103
`def get_executed(self):
`
102
104
`return (set(self.good) | set(self.bad) | set(self.skipped)
`
103
105
`| set(self.resource_denieds) | set(self.environment_changed)
`
`@@ -154,9 +156,9 @@ def display_progress(self, test_index, text):
`
154
156
`line = f"[{line}] {text}"
`
155
157
``
156
158
`# add the system load prefix: "load avg: 1.80 "
`
157
``
`-
if self.getloadavg:
`
158
``
`-
load_avg_1min = self.getloadavg()
`
159
``
`-
line = f"load avg: {load_avg_1min:.2f} {line}"
`
``
159
`+
load_avg = self.getloadavg()
`
``
160
`+
if load_avg is not None:
`
``
161
`+
line = f"load avg: {load_avg:.2f} {line}"
`
160
162
``
161
163
`# add the timestamp prefix: "0:01:05 "
`
162
164
`test_time = time.monotonic() - self.start_time
`
`@@ -490,6 +492,10 @@ def run_tests(self):
`
490
492
`self.run_tests_sequential()
`
491
493
``
492
494
`def finalize(self):
`
``
495
`+
if self.win_load_tracker is not None:
`
``
496
`+
self.win_load_tracker.close()
`
``
497
`+
self.win_load_tracker = None
`
``
498
+
493
499
`if self.next_single_filename:
`
494
500
`if self.next_single_test:
`
495
501
`with open(self.next_single_filename, 'w') as fp:
`
`@@ -560,6 +566,15 @@ def main(self, tests=None, **kwargs):
`
560
566
`with support.temp_cwd(test_cwd, quiet=True):
`
561
567
`self._main(tests, kwargs)
`
562
568
``
``
569
`+
def getloadavg(self):
`
``
570
`+
if self.win_load_tracker is not None:
`
``
571
`+
return self.win_load_tracker.getloadavg()
`
``
572
+
``
573
`+
if hasattr(os, 'getloadavg'):
`
``
574
`+
return os.getloadavg()[0]
`
``
575
+
``
576
`+
return None
`
``
577
+
563
578
`def _main(self, tests, kwargs):
`
564
579
`if self.ns.huntrleaks:
`
565
580
`warmup, repetitions, _ = self.ns.huntrleaks
`
`@@ -591,23 +606,17 @@ def _main(self, tests, kwargs):
`
591
606
`self.list_cases()
`
592
607
`sys.exit(0)
`
593
608
``
594
``
`-
self.getloadavg = None
`
595
609
`# If we're on windows and this is the parent runner (not a worker),
`
596
``
`-
report the load average.
`
597
``
`-
if hasattr(os, 'getloadavg'):
`
598
``
`-
def getloadavg_1m():
`
599
``
`-
return os.getloadavg()[0]
`
600
``
`-
self.getloadavg = getloadavg_1m
`
601
``
`-
elif sys.platform == 'win32' and (self.ns.worker_args is None):
`
``
610
`+
track the load average.
`
``
611
`+
if sys.platform == 'win32' and (self.ns.worker_args is None):
`
602
612
`from test.libregrtest.win_utils import WindowsLoadTracker
`
603
613
``
604
614
`try:
`
605
``
`-
load_tracker = WindowsLoadTracker()
`
606
``
`-
self.getloadavg = load_tracker.getloadavg
`
``
615
`+
self.win_load_tracker = WindowsLoadTracker()
`
607
616
`except FileNotFoundError as error:
`
608
617
`# Windows IoT Core and Windows Nano Server do not provide
`
609
618
`# typeperf.exe for x64, x86 or ARM
`
610
``
`-
print('Failed to create WindowsLoadTracker: {}'.format(error))
`
``
619
`+
print(f'Failed to create WindowsLoadTracker: {error}')
`
611
620
``
612
621
`self.run_tests()
`
613
622
`self.display_result()
`