1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#!/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 = %s days *" % 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 = "./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()
|