1 from urllib2 import Request, urlopen, URLError
6 import utils.reporting_utils as rp_utils
8 logger = rp_utils.getLogger("vIMS")
11 def sig_test_format(sig_test):
15 for data_test in sig_test:
16 if data_test['result'] == "Passed":
18 elif data_test['result'] == "Failed":
20 elif data_test['result'] == "Skipped":
22 total_sig_test_result = {}
23 total_sig_test_result['passed'] = nbPassed
24 total_sig_test_result['failures'] = nbFailures
25 total_sig_test_result['skipped'] = nbSkipped
26 return total_sig_test_result
28 period = rp_utils.get_config('general.period')
29 versions = rp_utils.get_config('general.versions')
30 url_base = rp_utils.get_config('testapi.url')
32 logger.info("****************************************")
33 logger.info("* Generating reporting vIMS *")
34 logger.info("* Data retention = %s days *" % period)
36 logger.info("****************************************")
38 installers = rp_utils.get_config('general.installers')
39 step_order = ["initialisation", "orchestrator", "vIMS", "sig_test"]
40 logger.info("Start processing....")
42 # For all the versions
43 for version in versions:
44 for installer in installers:
45 logger.info("Search vIMS results for installer: %s, version: %s"
46 % (installer, version))
47 request = Request("http://" + url_base + '?case=vims&installer=' +
48 installer + '&version=' + version)
51 response = urlopen(request)
53 results = json.loads(k)
55 logger.error("Error code: %s" % e)
57 test_results = results['results']
59 logger.debug("Results found: %s" % test_results)
62 for r in test_results:
63 if not r['scenario'] in scenario_results.keys():
64 scenario_results[r['scenario']] = []
65 scenario_results[r['scenario']].append(r)
67 for s, s_result in scenario_results.items():
68 scenario_results[s] = s_result[0:5]
69 logger.debug("Search for success criteria")
70 for result in scenario_results[s]:
71 result["start_date"] = result["start_date"].split(".")[0]
72 sig_test = result['details']['sig_test']['result']
73 if not sig_test == "" and isinstance(sig_test, list):
74 format_result = sig_test_format(sig_test)
75 if format_result['failures'] > format_result['passed']:
76 result['details']['sig_test']['duration'] = 0
77 result['details']['sig_test']['result'] = format_result
79 nb_step = len(result['details'])
81 for step_name, step_result in result['details'].items():
82 if step_result['duration'] != 0:
84 m, s = divmod(step_result['duration'], 60)
87 m_display += str(int(m)) + "m "
89 step_result['duration_display'] = (m_display +
92 result['pr_step_ok'] = 0
94 result['pr_step_ok'] = (float(nb_step_ok) / nb_step) * 100
96 logger.debug("Scenario %s, Installer %s"
97 % (s_result[1]['scenario'], installer))
98 res = result['details']['orchestrator']['duration']
99 logger.debug("Orchestrator deployment: %s s"
101 logger.debug("vIMS deployment: %s s"
102 % result['details']['vIMS']['duration'])
103 logger.debug("Signaling testing: %s s"
104 % result['details']['sig_test']['duration'])
105 logger.debug("Signaling testing results: %s"
108 logger.error("Data badly formatted")
109 logger.debug("----------------------------------------")
111 templateLoader = jinja2.FileSystemLoader(".")
112 templateEnv = jinja2.Environment(loader=templateLoader,
115 TEMPLATE_FILE = "./reporting/functest/template/index-vims-tmpl.html"
116 template = templateEnv.get_template(TEMPLATE_FILE)
118 outputText = template.render(scenario_results=scenario_results,
119 step_order=step_order,
122 with open("./display/" + version + "/functest/vims-" +
123 installer + ".html", "wb") as fh:
126 logger.info("vIMS report succesfully generated")