78ca9f5b370cb93af9eb0db46fe4f2f732440a62
[releng.git] / utils / test / reporting / functest / reporting-vims.py
1 from urllib2 import Request, urlopen, URLError
2 import json
3 import jinja2
4 import os
5
6 def sig_test_format(sig_test):
7     nbPassed = 0
8     nbFailures = 0
9     nbSkipped = 0
10     for data_test in sig_test:
11         if data_test['result'] == "Passed":
12             nbPassed+= 1
13         elif data_test['result'] == "Failed":
14             nbFailures += 1
15         elif data_test['result'] == "Skipped":
16             nbSkipped += 1
17     total_sig_test_result = {}
18     total_sig_test_result['passed'] = nbPassed
19     total_sig_test_result['failures'] = nbFailures
20     total_sig_test_result['skipped'] = nbSkipped
21     return total_sig_test_result
22
23 installers = ["fuel", "compass", "joid", "apex"]
24 step_order = ["initialisation", "orchestrator", "vIMS", "sig_test"]
25
26 for installer in installers:
27     request = Request('http://testresults.opnfv.org/testapi/results?case=vIMS&installer=' + installer)
28
29     try:
30         response = urlopen(request)
31         k = response.read()
32         results = json.loads(k)
33     except URLError, e:
34         print 'No kittez. Got an error code:', e
35
36     test_results = results['test_results']
37     test_results.reverse()
38
39     scenario_results = {}
40     for r in test_results:
41         if not r['version'] in scenario_results.keys():
42             scenario_results[r['version']] = []
43         scenario_results[r['version']].append(r)
44
45     for s, s_result in scenario_results.items():
46         scenario_results[s] = s_result[0:5]
47         for result in scenario_results[s]:
48             result["creation_date"] = result["creation_date"].split(".")[0]
49             sig_test = result['details']['sig_test']['result']
50             if not sig_test == "" and isinstance(sig_test, list):
51                 format_result = sig_test_format(sig_test)
52                 if format_result['failures'] > format_result['passed']:
53                     result['details']['sig_test']['duration'] = 0
54                 result['details']['sig_test']['result'] = format_result
55             nb_step_ok = 0
56             nb_step = len(result['details'])
57
58             for step_name, step_result in result['details'].items():
59                 if step_result['duration'] != 0:
60                     nb_step_ok += 1
61                 m, s = divmod(step_result['duration'], 60)
62                 m_display = ""
63                 if int(m) != 0:
64                     m_display += str(int(m)) + "m "
65                 step_result['duration_display'] = m_display + str(int(s)) + "s"
66
67             result['pr_step_ok'] = 0
68             if nb_step != 0:
69                 result['pr_step_ok'] = (float(nb_step_ok)/nb_step)*100
70
71
72     templateLoader = jinja2.FileSystemLoader(os.path.dirname(os.path.abspath(__file__)))
73     templateEnv = jinja2.Environment( loader=templateLoader )
74
75     TEMPLATE_FILE = "./template/index-vims-tmpl.html"
76     template = templateEnv.get_template( TEMPLATE_FILE )
77
78     outputText = template.render( scenario_results = scenario_results, step_order = step_order, installer = installer)
79
80     with open("./release/index-vims" + installer + ".html", "wb") as fh:
81         fh.write(outputText)
82
83