summaryrefslogtreecommitdiffstats
path: root/reporting/reporting/qtip/reporting-status.py
blob: f0127b50f7672a077b7cb13a5b6388e8703d29da (plain)
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
111
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()