Skip to content

Commit 01df1ad

Browse files
committed
Simplify common code in test result writing
1 parent ddcde4f commit 01df1ad

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

test/parallel_testsuite.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -94,23 +94,21 @@ def run(self, result):
9494
for r in results:
9595
# Save a test result record with the specific suite name (e.g. "core0.test_foo")
9696
test_failed = r.test_result not in ['success', 'skipped']
97-
fail_frequency = previous_test_run_results[r.test_name]['fail_frequency'] if r.test_name in previous_test_run_results else int(test_failed)
98-
fail_frequency = (fail_frequency + int(test_failed)) / 2
99-
previous_test_run_results[r.test_name] = {
100-
'result': r.test_result,
101-
'duration': r.test_duration,
102-
'fail_frequency': fail_frequency,
103-
}
97+
98+
def apply_test_results_to(test_name):
99+
fail_frequency = previous_test_run_results[test_name]['fail_frequency'] if test_name in previous_test_run_results else int(test_failed)
100+
# Apply exponential moving average with 50% weighting to merge previous fail frequency with new fail frequency
101+
fail_frequency = (fail_frequency + int(test_failed)) / 2
102+
previous_test_run_results[test_name] = {
103+
'result': r.test_result,
104+
'duration': r.test_duration,
105+
'fail_frequency': fail_frequency,
106+
}
107+
108+
apply_test_results_to(r.test_name)
104109
# Also save a test result record without suite name (e.g. just "test_foo"). This enables different suite runs to order tests
105110
# for quick --failfast termination, in case a test fails in multiple suites
106-
test_in_any_suite = r.test_name.split(' ')[0]
107-
fail_frequency = previous_test_run_results[test_in_any_suite]['fail_frequency'] if test_in_any_suite in previous_test_run_results else int(test_failed)
108-
fail_frequency = (fail_frequency + int(test_failed)) / 2
109-
previous_test_run_results[test_in_any_suite] = {
110-
'result': r.test_result,
111-
'duration': r.test_duration,
112-
'fail_frequency': fail_frequency,
113-
}
111+
apply_test_results_to(r.test_name.split(' ')[0])
114112

115113
json.dump(previous_test_run_results, open(common.PREVIOUS_TEST_RUN_RESULTS_FILE, 'w'), indent=2)
116114
pool.close()

0 commit comments

Comments
 (0)