summaryrefslogtreecommitdiffstats
path: root/reporting/reporting/qtip/reporting-status.py
diff options
context:
space:
mode:
authorMorgan Richomme <morgan.richomme@orange.com>2017-07-04 17:23:33 +0200
committerMorgan Richomme <morgan.richomme@orange.com>2017-08-09 16:45:43 +0200
commit980523c1c5fa65b4c4a786d6ddb1ddfb70a63bc6 (patch)
tree68072820e868a4688036c2425195966167fdd8fb /reporting/reporting/qtip/reporting-status.py
parent5eb90d88748ee25c0d1a858167d435a9498d175c (diff)
Initiate packetization of Testing reporting
Testing reporting provides - static reporting pages [1] (jinja2) - landing pages including test case catalogue [2] (angular) It consumes the Test API to build web pages providing status for the testing projects (so far functest, yardstick, storperf and qtip). Dockerization has been initiated [3]. The goal is to replace the static page hosted on testresults.opnfv.org by a docker regenerated and redeployed when reporting code is changed But the docker and more generally the testing reporting directory must be refactored to - manage dependencies properly - leverage tox (py27, docs, pylint, pep8) This patch - setups tox (py27, pep8, pylint, docs) - integrate the requirement management - fix pep8 errors - introduce 1 dummy unit test This patch does not - fix pylint errors - create any doc [1]: http://testresults.opnfv.org/reporting2/display/index.html [2]: http://testresults.opnfv.org/reporting2/reporting/index.html [3]: https://gerrit.opnfv.org/gerrit/#/c/36735/ Change-Id: I4613de7ca7036d6c6bbb8f58ade492b1d673599b Signed-off-by: Morgan Richomme <morgan.richomme@orange.com>
Diffstat (limited to 'reporting/reporting/qtip/reporting-status.py')
-rw-r--r--reporting/reporting/qtip/reporting-status.py112
1 files changed, 112 insertions, 0 deletions
diff --git a/reporting/reporting/qtip/reporting-status.py b/reporting/reporting/qtip/reporting-status.py
new file mode 100644
index 0000000..f0127b5
--- /dev/null
+++ b/reporting/reporting/qtip/reporting-status.py
@@ -0,0 +1,112 @@
+#!/usr/bin/python
+#
+# This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+import datetime
+import os
+
+import jinja2
+import utils.reporting_utils as rp_utils
+import utils.scenarioResult as sr
+
+installers = rp_utils.get_config('general.installers')
+versions = rp_utils.get_config('general.versions')
+PERIOD = rp_utils.get_config('general.period')
+
+# Logger
+logger = rp_utils.getLogger("Qtip-Status")
+reportingDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
+
+logger.info("*******************************************")
+logger.info("* Generating reporting scenario status *")
+logger.info("* Data retention = {} days *".format(PERIOD))
+logger.info("* *")
+logger.info("*******************************************")
+
+
+def prepare_profile_file(version):
+ profile_dir = './display/{}/qtip'.format(version)
+ if not os.path.exists(profile_dir):
+ os.makedirs(profile_dir)
+
+ profile_file = "{}/{}/scenario_history.txt".format(profile_dir,
+ version)
+ if not os.path.exists(profile_file):
+ with open(profile_file, 'w') as f:
+ info = 'date,scenario,installer,details,score\n'
+ f.write(info)
+ f.close()
+ return profile_file
+
+
+def profile_results(results, installer, profile_fd):
+ result_criterias = {}
+ for s_p, s_p_result in results.iteritems():
+ ten_criteria = len(s_p_result)
+ ten_score = sum(s_p_result)
+
+ LASTEST_TESTS = rp_utils.get_config(
+ 'general.nb_iteration_tests_success_criteria')
+ four_result = s_p_result[:LASTEST_TESTS]
+ four_criteria = len(four_result)
+ four_score = sum(four_result)
+
+ s_four_score = str(four_score / four_criteria)
+ s_ten_score = str(ten_score / ten_criteria)
+
+ info = '{},{},{},{},{}\n'.format(reportingDate,
+ s_p,
+ installer,
+ s_ten_score,
+ s_four_score)
+ profile_fd.write(info)
+ result_criterias[s_p] = sr.ScenarioResult('OK',
+ s_four_score,
+ s_ten_score,
+ '100')
+
+ logger.info("--------------------------")
+ return result_criterias
+
+
+def render_html(prof_results, installer, version):
+ template_loader = jinja2.FileSystemLoader(".")
+ template_env = jinja2.Environment(loader=template_loader,
+ autoescape=True)
+
+ template_file = "./reporting/qtip/template/index-status-tmpl.html"
+ template = template_env.get_template(template_file)
+
+ render_outcome = template.render(prof_results=prof_results,
+ installer=installer,
+ period=PERIOD,
+ version=version,
+ date=reportingDate)
+
+ with open('./display/{}/qtip/status-{}.html'.format(version, installer),
+ 'wb') as fh:
+ fh.write(render_outcome)
+
+
+def render_reporter():
+ for version in versions:
+ profile_file = prepare_profile_file(version)
+ profile_fd = open(profile_file, 'a')
+ for installer in installers:
+ results = rp_utils.getQtipResults(version, installer)
+ prof_results = profile_results(results, installer, profile_fd)
+ render_html(prof_results=prof_results,
+ installer=installer,
+ version=version)
+ profile_fd.close()
+ logger.info("Manage export CSV")
+ rp_utils.generate_csv(profile_file)
+ logger.info("CSV generated...")
+
+
+if __name__ == '__main__':
+ render_reporter()