Sort memcheck timeline report for failures (#2088)
authorAndrey Somsikov <andrey.somsikov@intel.com>
Wed, 9 Sep 2020 07:10:22 +0000 (10:10 +0300)
committerGitHub <noreply@github.com>
Wed, 9 Sep 2020 07:10:22 +0000 (10:10 +0300)
tests/stress_tests/scripts/memcheck-template/timeline_report.html
tests/stress_tests/scripts/memcheck_upload.py

index d1c5cee..d6f3132 100644 (file)
@@ -14,8 +14,8 @@
     {% for timeline in timelines %}
     <div class="w3-container">
         <h4> {{ timeline['device'][0]|e }} {{ timeline['model'][0]|e }} {{ timeline['test_name'][0]|e }} </h4>
-        <div class="w3-text-green">
-            PASS
+        <div class={{ '"w3-text-green"' if timeline['status'] else '"w3-text-red"' }}>
+            {{ "PASS" if timeline['status'] else "FAIL" }}
         </div>
 
         <div id="{{timeline['_id'][0]|e}}-details" class="w3-show w3-container">
index 9f8a7a5..38c0527 100644 (file)
@@ -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