Skip to content

Commit a43a67e

Browse files
nashifmmahadevan108
authored andcommitted
twister: stats: fix suite statistics
suite stats were not correct, a mixup between skipped and filtered suites was leading to inconsistent numbers. This is now fixed. Signed-off-by: Anas Nashif <[email protected]>
1 parent b578fa5 commit a43a67e

File tree

2 files changed

+32
-21
lines changed

2 files changed

+32
-21
lines changed

scripts/pylib/twister/twisterlib/runner.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ def __init__(self, total=0):
104104
# updated by report_out() in pipeline
105105
self._error = Value('i', 0)
106106
self._failed = Value('i', 0)
107+
self._skipped = Value('i', 0)
107108

108109
# initialized to number of test instances
109110
self._total = Value('i', total)
@@ -145,30 +146,27 @@ def _find_number_length(n):
145146

146147
def summary(self):
147148
selected_cases = self.cases - self.filtered_cases
148-
completed_configs = self.done - self.filtered_static
149+
completed_configs = self.done - self.filtered_static - self.filtered_runtime
149150

150151
# Find alignment length for aesthetic printing
151152
suites_n_length = self._find_number_length(self.total if self.total > self.done else self.done)
152-
processed_suites_n_length = self._find_number_length(self.done)
153153
completed_suites_n_length = self._find_number_length(completed_configs)
154-
skipped_suites_n_length = self._find_number_length(self.filtered_configs)
154+
filtered_suites_n_length = self._find_number_length(self.filtered_configs)
155155
total_cases_n_length = self._find_number_length(self.cases)
156156
selected_cases_n_length = self._find_number_length(selected_cases)
157157

158158
print("--------------------------------------------------")
159159
print(f"{'Total test suites: ':<23}{self.total:>{suites_n_length}}") # actually test instances
160160
print(f"{'Processed test suites: ':<23}{self.done:>{suites_n_length}}")
161-
print(f"├─ {'Filtered test suites (static): ':<37}{self.filtered_static:>{processed_suites_n_length}}")
162-
print(f"└─ {'Selected test suites: ':<37}{completed_configs:>{processed_suites_n_length}}")
163-
print(f" ├─ {'Skipped test suites: ':<37}{self.filtered_runtime:>{completed_suites_n_length}}")
161+
print(f"└─{'Filtered test suites: ':<21}{self.filtered_configs}")
162+
print(f" ├─ {'Filtered test suites (static): ':<37}{self.filtered_static:>{filtered_suites_n_length}}")
163+
print(f" └─ {'Filtered test suites (at runtime): ':<37}{self.filtered_runtime:>{filtered_suites_n_length}}")
164+
print(f"└─ {'Selected test suites: ':<37}{completed_configs:>{completed_suites_n_length}}")
165+
print(f" ├─ {'Skipped test suites: ':<37}{self.skipped:>{completed_suites_n_length}}")
164166
print(f" ├─ {'Passed test suites: ':<37}{self.passed:>{completed_suites_n_length}}")
165167
print(f" ├─ {'Built only test suites: ':<37}{self.notrun:>{completed_suites_n_length}}")
166168
print(f" ├─ {'Failed test suites: ':<37}{self.failed:>{completed_suites_n_length}}")
167169
print(f" └─ {'Errors in test suites: ':<37}{self.error:>{completed_suites_n_length}}")
168-
print(f"")
169-
print(f"{'Filtered test suites: ':<21}{self.filtered_configs}")
170-
print(f"├─ {'Filtered test suites (static): ':<37}{self.filtered_static:>{skipped_suites_n_length}}")
171-
print(f"└─ {'Filtered test suites (at runtime): ':<37}{self.filtered_runtime:>{skipped_suites_n_length}}")
172170
print("---------------------- ----------------------")
173171
print(f"{'Total test cases: ':<18}{self.cases}")
174172
print(f"├─ {'Filtered test cases: ':<21}{self.filtered_cases:>{total_cases_n_length}}")
@@ -341,6 +339,20 @@ def started_cases_increment(self, value=1):
341339
with self._started_cases.get_lock():
342340
self._started_cases.value += value
343341

342+
@property
343+
def skipped(self):
344+
with self._skipped.get_lock():
345+
return self._skipped.value
346+
347+
@skipped.setter
348+
def skipped(self, value):
349+
with self._skipped.get_lock():
350+
self._skipped.value = value
351+
352+
def skipped_increment(self, value=1):
353+
with self._skipped.get_lock():
354+
self._skipped.value += value
355+
344356
@property
345357
def error(self):
346358
with self._error.get_lock():
@@ -892,6 +904,7 @@ def process(self, pipeline, done, message, lock, results):
892904
logger.debug("filtering %s" % self.instance.name)
893905
self.instance.status = TwisterStatus.FILTER
894906
self.instance.reason = "runtime filter"
907+
results.filtered_runtime_increment()
895908
self.instance.add_missing_case_status(TwisterStatus.FILTER)
896909
next_op = 'report'
897910
else:
@@ -951,7 +964,7 @@ def process(self, pipeline, done, message, lock, results):
951964
# Count skipped cases during build, for example
952965
# due to ram/rom overflow.
953966
if self.instance.status == TwisterStatus.SKIP:
954-
results.filtered_runtime_increment()
967+
results.skipped_increment()
955968
self.instance.add_missing_case_status(TwisterStatus.SKIP, self.instance.reason)
956969

957970
if ret.get('returncode', 1) > 0:
@@ -1381,7 +1394,7 @@ def report_out(self, results):
13811394
if not self.options.verbose:
13821395
self.log_info_file(self.options.inline_logs)
13831396
elif instance.status == TwisterStatus.SKIP:
1384-
results.filtered_configs_increment()
1397+
results.skipped_increment()
13851398
elif instance.status == TwisterStatus.FILTER:
13861399
results.filtered_configs_increment()
13871400
elif instance.status == TwisterStatus.PASS:

scripts/tests/twister/test_runner.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -209,17 +209,15 @@ def test_executioncounter(capfd):
209209
'--------------------------------------------------\n'
210210
'Total test suites: 12\n'
211211
'Processed test suites: 9\n'
212-
'├─ Filtered test suites (static): 2\n'
213-
'└─ Completed test suites: 7\n'
214-
' ├─ Filtered test suites (at runtime): 1\n'
212+
'└─Filtered test suites: 3\n'
213+
' ├─ Filtered test suites (static): 2\n'
214+
' └─ Filtered test suites (at runtime): 1\n'
215+
'└─ Selected test suites: 6\n'
216+
' ├─ Skipped test suites: 0\n'
215217
' ├─ Passed test suites: 6\n'
216218
' ├─ Built only test suites: 0\n'
217219
' ├─ Failed test suites: 1\n'
218220
' └─ Errors in test suites: 2\n'
219-
'\n'
220-
'Filtered test suites: 3\n'
221-
'├─ Filtered test suites (static): 2\n'
222-
'└─ Filtered test suites (at runtime): 1\n'
223221
'---------------------- ----------------------\n'
224222
'Total test cases: 25\n'
225223
'├─ Filtered test cases: 0\n'
@@ -914,7 +912,7 @@ def mock_getsize(filename, *args, **kwargs):
914912
{'op': 'report', 'test': mock.ANY},
915913
TwisterStatus.FILTER,
916914
'runtime filter',
917-
0,
915+
1,
918916
(TwisterStatus.FILTER,)
919917
),
920918
(
@@ -1091,7 +1089,7 @@ def mock_getsize(filename, *args, **kwargs):
10911089
{'op': 'gather_metrics', 'test': mock.ANY},
10921090
mock.ANY,
10931091
mock.ANY,
1094-
1,
1092+
0,
10951093
(TwisterStatus.SKIP, mock.ANY)
10961094
),
10971095
(

0 commit comments

Comments
 (0)