@@ -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 ()
0 commit comments