bug fix: last 4 run reporting for storperf 57/29857/2
authorMorgan Richomme <morgan.richomme@orange.com>
Mon, 6 Mar 2017 13:44:47 +0000 (14:44 +0100)
committerMorgan Richomme <morgan.richomme@orange.com>
Tue, 7 Mar 2017 07:20:43 +0000 (08:20 +0100)
- bug fix:
copy/paste of yardstick code but list of results
is not sorted by default, taking the last 4 array
items lead to random results on the 4 last run
sort results before taking the last 4 results
to establish last 4 run criteria
- enhancement: add link to last CI run in the
reporting page
- fix trend line bug

Change-Id: Ice16832a81cb65503a63b16321a2be92a427d279
Signed-off-by: Morgan Richomme <morgan.richomme@orange.com>
utils/test/reporting/storperf/reporting-status.py
utils/test/reporting/storperf/template/index-status-tmpl.html
utils/test/reporting/utils/scenarioResult.py

index 674fdd8..888e339 100644 (file)
@@ -63,15 +63,23 @@ for version in versions:
 
             logger.info("ten_score: %s / %s" % (ten_score, ten_criteria))
 
-            LASTEST_TESTS = rp_utils.get_config(
-                 'general.nb_iteration_tests_success_criteria')
-            four_result = s_result[:LASTEST_TESTS]
-            four_criteria = len(four_result)
             four_score = 0
-            for v in four_result:
-                if "PASS" in v['criteria']:
-                    four_score += 1
-            logger.info("four_score: %s / %s " % (four_score, four_criteria))
+            try:
+                LASTEST_TESTS = rp_utils.get_config(
+                    'general.nb_iteration_tests_success_criteria')
+                s_result.sort(key=lambda x: x['start_date'])
+                four_result = s_result[-LASTEST_TESTS:]
+                logger.debug("four_result: {}".format(four_result))
+                logger.debug("LASTEST_TESTS: {}".format(LASTEST_TESTS))
+                # logger.debug("four_result: {}".format(four_result))
+                four_criteria = len(four_result)
+                for v in four_result:
+                    if "PASS" in v['criteria']:
+                        four_score += 1
+                logger.info("4 Score: %s / %s " % (four_score,
+                                                   four_criteria))
+            except:
+                logger.error("Impossible to retrieve the four_score")
 
             try:
                 s_status = (four_score * 100) / four_criteria
@@ -82,12 +90,20 @@ for version in versions:
             s_ten_score = str(ten_score) + '/' + str(ten_criteria)
             s_score_percent = str(s_status)
 
-            if '100' == s_status:
+            logger.debug(" s_status: {}".format(s_status))
+            if s_status == 100:
                 logger.info(">>>>> scenario OK, save the information")
             else:
                 logger.info(">>>> scenario not OK, last 4 iterations = %s, \
                              last 10 days = %s" % (s_four_score, s_ten_score))
 
+            s_url = ""
+            if len(s_result) > 0:
+                build_tag = s_result[len(s_result)-1]['build_tag']
+                logger.debug("Build tag: %s" % build_tag)
+                s_url = s_url = rp_utils.getJenkinsUrl(build_tag)
+                logger.info("last jenkins url: %s" % s_url)
+
             # Save daily results in a file
             path_validation_file = ("./display/" + version +
                                     "/storperf/scenario_history.txt")
@@ -106,7 +122,8 @@ for version in versions:
             scenario_result_criteria[s] = sr.ScenarioResult(s_status,
                                                             s_four_score,
                                                             s_ten_score,
-                                                            s_score_percent)
+                                                            s_score_percent,
+                                                            s_url)
 
             logger.info("--------------------------")
 
index e3a18b1..e0fcc68 100644 (file)
@@ -25,7 +25,7 @@
         }
 
         // trend line management
-        d3.csv("./scenario_history.csv", function(data) {
+        d3.csv("./scenario_history.txt", function(data) {
             // ***************************************
             // Create the trend line
             {% for scenario in scenario_results.keys() -%}
@@ -95,7 +95,7 @@
                     </tr>
                         {% for scenario,result in scenario_results.iteritems() -%}
                             <tr class="tr-ok">
-                                <td>{{scenario}}</td>
+                                <td><a href="{{scenario_results[scenario].getLastUrl()}}">{{scenario}}</a></td>
                                 <td><div id="gaugeScenario{{loop.index}}"></div></td>
                                 <td><div id="trend_svg{{loop.index}}"></div></td>
                                 <td>{{scenario_results[scenario].getFourDaysScore()}}</td>
index 1f7eb2b..6029d7f 100644 (file)
 
 class ScenarioResult(object):
     def __init__(self, status, four_days_score='', ten_days_score='',
-                 score_percent=0.0):
+                 score_percent=0.0, last_url=''):
         self.status = status
         self.four_days_score = four_days_score
         self.ten_days_score = ten_days_score
         self.score_percent = score_percent
+        self.last_url = last_url
 
     def getStatus(self):
         return self.status
@@ -27,3 +28,6 @@ class ScenarioResult(object):
 
     def getScorePercent(self):
         return self.score_percent
+
+    def getLastUrl(self):
+        return self.last_url