From b8a8fe7c0dfb97bf16a2499994aec52bec685a7a Mon Sep 17 00:00:00 2001 From: Andrey Somsikov Date: Wed, 9 Sep 2020 10:10:22 +0300 Subject: [PATCH] Sort memcheck timeline report for failures (#2088) --- .../memcheck-template/timeline_report.html | 4 ++-- tests/stress_tests/scripts/memcheck_upload.py | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/tests/stress_tests/scripts/memcheck-template/timeline_report.html b/tests/stress_tests/scripts/memcheck-template/timeline_report.html index d1c5cee0e13..d6f3132e584 100644 --- a/tests/stress_tests/scripts/memcheck-template/timeline_report.html +++ b/tests/stress_tests/scripts/memcheck-template/timeline_report.html @@ -14,8 +14,8 @@ {% for timeline in timelines %}

{{ timeline['device'][0]|e }} {{ timeline['model'][0]|e }} {{ timeline['test_name'][0]|e }}

-
- PASS +
+ {{ "PASS" if timeline['status'] else "FAIL" }}
diff --git a/tests/stress_tests/scripts/memcheck_upload.py b/tests/stress_tests/scripts/memcheck_upload.py index 9f8a7a510e3..38c05270198 100644 --- a/tests/stress_tests/scripts/memcheck_upload.py +++ b/tests/stress_tests/scripts/memcheck_upload.py @@ -192,6 +192,18 @@ TIMELINE_SIMILARITY = ('test_name', 'model', 'device', 'target_branch') def query_timeline(records, db_url, db_collection, max_items=20, similarity=TIMELINE_SIMILARITY): """ Query database for similar memcheck items committed previously """ + def timeline_key(item): + """ Defines order for timeline report entries + """ + if len(item['metrics']['vmhwm']) <= 1: + return 1 + order = item['metrics']['vmhwm'][-1] - item['metrics']['vmhwm'][-2] + \ + item['metrics']['vmrss'][-1] - item['metrics']['vmrss'][-2] + if not item['status']: + # ensure failed cases are always on top + order += sys.maxsize/2 + return order + client = MongoClient(db_url) collection = client[DATABASE][db_collection] result = [] @@ -213,7 +225,11 @@ def query_timeline(records, db_url, db_collection, max_items=20, similarity=TIME pass # keep only the record if timeline failed to generate items += [record] timeline = _transpose_dicts(items, template=record) + timeline['status'] = bool(timeline['metrics']['vmrss'][-1] < timeline['ref_metrics']['vmrss'][-1] and + timeline['metrics']['vmhwm'][-1] < timeline['ref_metrics']['vmhwm'][-1]) result += [timeline] + + result.sort(key=timeline_key, reverse=True) return result