Change display way of reporting status, add last ten days score
[releng.git] / utils / test / reporting / yardstick / reportingUtils.py
index 06bcd49..71eb919 100644 (file)
@@ -45,17 +45,59 @@ def getScenarioStatus(installer, version):
         print 'Got an error code:', e
 
     scenario_results = {}
+    result_dict = {}
     if test_results is not None:
         for r in test_results:
-            if r['stop_date'] != 'None':
+            if r['stop_date'] != 'None' and r['criteria'] is not None:
                 if not r['scenario'] in scenario_results.keys():
                     scenario_results[r['scenario']] = []
                 scenario_results[r['scenario']].append(r)
 
         for k,v in scenario_results.items():
-            scenario_results[k] = v[:conf.LASTEST_TESTS]
+            # scenario_results[k] = v[:conf.LASTEST_TESTS]
+            s_list = []
+            for element in v:
+                if element['criteria'] == 'SUCCESS':
+                    s_list.append(1)
+                else:
+                    s_list.append(0)
+            result_dict[k] = s_list
 
-    return scenario_results
+    # return scenario_results
+    return result_dict
+
+def subfind(given_list, pattern_list):
+    for i in range(len(given_list)):
+        if given_list[i] == pattern_list[0] and given_list[i:i + conf.LASTEST_TESTS] == pattern_list:
+            return True
+    return False
+
+def get_percent(status):
+    
+    if status * 100 % 6:
+        return round(float(status) * 100 / 6, 1)
+    else:
+        return status * 100 / 6
+
+def get_status(four_list, ten_list):
+    four_score = 0
+    ten_score = 0
+
+    for v in four_list:
+        four_score += v
+    for v in ten_list:
+        ten_score += v
+
+    if four_score == conf.LASTEST_TESTS:
+        status = 6
+    elif subfind(ten_list, [1, 1, 1, 1]):
+        status = 5
+    elif ten_score == 0:
+        status = 0
+    else:
+        status = four_score + 1
+
+    return get_percent(status)
 
 
 def _test():