@@ -98,6 +98,8 @@ def __init__(self):
9898 # used by --junit-xml
9999 self .testsuite_xml = None
100100
101+ self .win_load_tracker = None
102+
101103 def get_executed (self ):
102104 return (set (self .good ) | set (self .bad ) | set (self .skipped )
103105 | set (self .resource_denieds ) | set (self .environment_changed )
@@ -154,9 +156,9 @@ def display_progress(self, test_index, text):
154156 line = f"[{ line } ] { text } "
155157
156158 # 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 } "
160162
161163 # add the timestamp prefix: "0:01:05 "
162164 test_time = time .monotonic () - self .start_time
@@ -490,6 +492,10 @@ def run_tests(self):
490492 self .run_tests_sequential ()
491493
492494 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+
493499 if self .next_single_filename :
494500 if self .next_single_test :
495501 with open (self .next_single_filename , 'w' ) as fp :
@@ -560,6 +566,15 @@ def main(self, tests=None, **kwargs):
560566 with support .temp_cwd (test_cwd , quiet = True ):
561567 self ._main (tests , kwargs )
562568
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+
563578 def _main (self , tests , kwargs ):
564579 if self .ns .huntrleaks :
565580 warmup , repetitions , _ = self .ns .huntrleaks
@@ -591,23 +606,17 @@ def _main(self, tests, kwargs):
591606 self .list_cases ()
592607 sys .exit (0 )
593608
594- self .getloadavg = None
595609 # 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 ):
602612 from test .libregrtest .win_utils import WindowsLoadTracker
603613
604614 try :
605- load_tracker = WindowsLoadTracker ()
606- self .getloadavg = load_tracker .getloadavg
615+ self .win_load_tracker = WindowsLoadTracker ()
607616 except FileNotFoundError as error :
608617 # Windows IoT Core and Windows Nano Server do not provide
609618 # typeperf.exe for x64, x86 or ARM
610- print ('Failed to create WindowsLoadTracker: {}' . format ( error ) )
619+ print (f 'Failed to create WindowsLoadTracker: { error } ' )
611620
612621 self .run_tests ()
613622 self .display_result ()
0 commit comments