Merge "modfiied to include the feature."
[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/test/api/v1/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['results']
37
38     scenario_results = {}
39     for r in test_results:
40         if not r['version'] in scenario_results.keys():
41             scenario_results[r['version']] = []
42         scenario_results[r['version']].append(r)
43
44     for s, s_result in scenario_results.items():
45         scenario_results[s] = s_result[0:5]
46         for result in scenario_results[s]:
47             result["start_date"] = result["start_date"].split(".")[0]
48             sig_test = result['details']['sig_test']['result']
49             if not sig_test == "" and isinstance(sig_test, list):
50                 format_result = sig_test_format(sig_test)
51                 if format_result['failures'] > format_result['passed']:
52                     result['details']['sig_test']['duration'] = 0
53                 result['details']['sig_test']['result'] = format_result
54             nb_step_ok = 0
55             nb_step = len(result['details'])
56
57             for step_name, step_result in result['details'].items():
58                 if step_result['duration'] != 0:
59                     nb_step_ok += 1
60                 m, s = divmod(step_result['duration'], 60)
61                 m_display = ""
62                 if int(m) != 0:
63                     m_display += str(int(m)) + "m "
64                 step_result['duration_display'] = m_display + str(int(s)) + "s"
65
66             result['pr_step_ok'] = 0
67             if nb_step != 0:
68                 result['pr_step_ok'] = (float(nb_step_ok)/nb_step)*100
69
70
71     templateLoader = jinja2.FileSystemLoader(os.path.dirname(os.path.abspath(__file__)))
72     templateEnv = jinja2.Environment( loader=templateLoader )
73
74     TEMPLATE_FILE = "./template/index-vims-tmpl.html"
75     template = templateEnv.get_template( TEMPLATE_FILE )
76
77     outputText = template.render( scenario_results = scenario_results, step_order = step_order, installer = installer)
78
79     with open("./release/master/index-vims-" + installer + ".html", "wb") as fh:
80         fh.write(outputText)
81
82