Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 30 additions & 6 deletions utils/github_reporting.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,23 @@ def format_results(results, jobs, reference_jobs=None, instability_analysis=None
output_string += "\nInstalling updates failed, skipping the report!\n"
return output_string

output_string += "\n"
failed_tests_details = ""
upload_failures = []
for k in results:
if results[k]:
if all(f.fixed for f in results[k]):
continue
if any(f.name != "system_tests" for f in results[k]):
continue
failed_tests_details += '* ' + str(k) + "\n"
for fail in results[k]:
failed_tests_details += ' * ' + str(fail) + '\n'
upload_failures.append(fail)
if upload_failures:
output_string += "## Upload failures\n"
output_string += failed_tests_details

if reference_jobs:
output_string += "## New failures{}\n" \
"Compared to: {}\n".format(
Expand All @@ -74,6 +91,8 @@ def format_results(results, jobs, reference_jobs=None, instability_analysis=None
fails = results[k]
add_to_output = ""
for fail in fails:
if fail in upload_failures:
continue
if fail.regression and not fail.unstable:
add_to_output += ' * ' + str(fail) + '\n'

Expand All @@ -88,15 +107,18 @@ def format_results(results, jobs, reference_jobs=None, instability_analysis=None
if results[k]:
if all(f.fixed for f in results[k]):
continue
failed_tests_details += '* ' + str(k) + "\n"
add_to_output = ""
for fail in results[k]:
if fail.fixed:
if fail.fixed or fail in upload_failures:
Comment thread
marmarek marked this conversation as resolved.
continue
if fail.unstable:
failed_tests_details += ' * [unstable] ' + str(fail) + '\n'
add_to_output += ' * [unstable] ' + str(fail) + '\n'
else:
failed_tests_details += ' * ' + str(fail) + '\n'
add_to_output += ' * ' + str(fail) + '\n'
number_of_failures += 1
if add_to_output:
failed_tests_details += '* ' + str(k) + "\n"
failed_tests_details += add_to_output

if not number_of_failures:
output_string += "No failures!\n"
Expand Down Expand Up @@ -172,11 +194,13 @@ def format_results(results, jobs, reference_jobs=None, instability_analysis=None
alert = result / ref < 0.9

if degradation:
s += (f" :small_red_triangle: ( previous "
red_triangle = "🔻"
s += (f" {red_triangle} ( previous "
f"job: {ref:.2f}, degradation: "
f"{result / ref:.2%})\n")
elif ref:
s += (f" :green_circle: ( previous "
green_circle = "🟢"
s += (f" {green_circle} ( previous "
f"job: {ref:.2f}, improvement: "
f"{result / ref:.2%})\n")
else:
Expand Down
15 changes: 13 additions & 2 deletions utils/lib/openqa_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,11 @@ def get_results(self):
json_data = self.get_job_details()

failure_list = []

for test_group in json_data['job']['testresults']:
if test_group['result'] == 'passed':
continue
failures = []
delayed_failures = []
for test in test_group['details']:
if test['result'] == 'fail':
failure = TestFailure(test_group['name'],
Expand All @@ -230,7 +231,17 @@ def get_results(self):
if not TestFailure.exists_in_db(failure):
local_session.add(failure)
local_session.flush()
failure_list.append(failure)
failures.append(failure)
elif failure.name == "system_tests":
if not TestFailure.exists_in_db(failure):
local_session.add(failure)
local_session.flush()
delayed_failures.append(failure)

if not failures:
failure_list.extend(delayed_failures)
else:
failure_list.extend(failures)

self.failures[self.get_job_combined_name()] = failure_list

Expand Down