diff options
Diffstat (limited to 'vstf/vstf/controller/reporters/report/html')
4 files changed, 241 insertions, 0 deletions
diff --git a/vstf/vstf/controller/reporters/report/html/__init__.py b/vstf/vstf/controller/reporters/report/html/__init__.py new file mode 100755 index 00000000..89dcd4e2 --- /dev/null +++ b/vstf/vstf/controller/reporters/report/html/__init__.py @@ -0,0 +1,14 @@ +# Copyright Huawei Technologies Co., Ltd. 1998-2015. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the License); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an AS IS BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. diff --git a/vstf/vstf/controller/reporters/report/html/html_base.py b/vstf/vstf/controller/reporters/report/html/html_base.py new file mode 100755 index 00000000..270ef394 --- /dev/null +++ b/vstf/vstf/controller/reporters/report/html/html_base.py @@ -0,0 +1,42 @@ +#!/usr/bin/python +# -*- coding: utf8 -*- +# author: wly +# date: 2015-09.25 +# see license for license details +__version__ = ''' ''' + +import os +from vstf.common.pyhtml import * + + +class HtmlBase(object): + def __init__(self, provider, ofile='text.html'): + self._page = PyHtml('HtmlBase Text') + self._ofile = ofile + self._provider = provider + self._chapter = 1 + + def save(self): + if self._ofile: + os.system('rm -rf %s' % self._ofile) + self._page.output(self._ofile) + + def as_string(self): + return self._page.as_string() + + def add_table(self, data): + self._page.add_table(data) + + def add_style(self): + style = self._provider.get_style() + self._page.add_style(style) + + def create(self, is_save=True): + self.add_style() + self.create_story() + if is_save: + self.save() + return self.as_string() + + def create_story(self): + raise NotImplementedError("abstract HtmlBase") diff --git a/vstf/vstf/controller/reporters/report/html/html_text.py b/vstf/vstf/controller/reporters/report/html/html_text.py new file mode 100755 index 00000000..86505b8f --- /dev/null +++ b/vstf/vstf/controller/reporters/report/html/html_text.py @@ -0,0 +1,68 @@ +#!/usr/bin/python +# -*- coding: utf8 -*- +# author: wly +# date: 2015-09-24 +# see license for license details +__version__ = ''' ''' + +import logging + +LOG = logging.getLogger(__name__) +import vstf.common.constants as cst +from vstf.controller.reporters.report.html.html_base import * + + +class HtmlCreator(HtmlBase): + def add_subject(self): + title = self._provider.get_subject() + self._page << H1(title) + + def add_ovs(self): + title = "%s %s" % (self._chapter, self._provider.get_ovs_title()) + self._page << H2(title) + data = self._provider.get_ovs_table() + self.add_table(data) + self._chapter += 1 + + def add_result(self): + title = "%s %s" % (self._chapter, self._provider.get_result_title()) + self._page << H2(title) + + section = 1 + for ttype in cst.TTYPES: + data = self._provider.get_result_table(ttype) + if data: + title = "%s.%s %s" % (self._chapter, section, ttype.title()) + self._page << H3(title) + self.add_table(data) + section += 1 + self._chapter += 1 + + def create_story(self): + self.add_subject() + self.add_ovs() + self.add_result() + + +def unit_test(): + from vstf.common.log import setup_logging + setup_logging(level=logging.DEBUG, log_file="/var/log/html-test.log", clevel=logging.INFO) + + from vstf.controller.settings.html_settings import HtmlSettings + from vstf.controller.settings.data_settings import DataSettings + + html_settings = HtmlSettings() + LOG.info(html_settings.settings) + data_settings = DataSettings() + LOG.info(data_settings.settings) + + from vstf.controller.reporters.report.provider.html_provider import HtmlProvider + provider = HtmlProvider(data_settings.settings, html_settings.settings) + html = HtmlCreator(provider) + + result = html.create() + print result + + +if __name__ == '__main__': + unit_test() diff --git a/vstf/vstf/controller/reporters/report/html/htmlcreator.py b/vstf/vstf/controller/reporters/report/html/htmlcreator.py new file mode 100755 index 00000000..e6c75caf --- /dev/null +++ b/vstf/vstf/controller/reporters/report/html/htmlcreator.py @@ -0,0 +1,117 @@ +#!/usr/bin/python +# -*- coding: utf8 -*- +# author: wly +# date: 2015-08-04 +# see license for license details +__version__ = ''' ''' + +import logging + +from vstf.controller.reporters.report.data_factory import TaskData +from vstf.controller.database.dbinterface import DbManage +from vstf.controller.reporters.report.html.html_base import * + +LOG = logging.getLogger(__name__) + + +class HtmlvSwitchCreator(HtmlBase): + def __init__(self, task_data, provider, ofile='creator.html'): + HtmlBase.__init__(self, provider, ofile) + self._task = task_data + self._table_type = 'html' + + def create_story(self): + self.add_subject() + self.add_gitinfo() + self.add_envinfo() + self.add_scenarios() + + def add_subject(self): + job_name = "JOB_NAME: " + self._task.common.get_taskname() + self._page << H2(job_name) + + def add_gitinfo(self): + self._page << H2("Trigger and Repository Info") + + git_table = self._task.common.get_gitinfo_tabledata() + if git_table: + self.add_table(git_table) + + def add_envinfo(self): + self._page << H2("System Environment Information") + env_table = self._task.common.get_systeminfo() + LOG.info(env_table) + if env_table: + self.add_table(env_table) + + def add_scenarios(self): + scenario_list = self._task.common.get_scenariolist() + self._page << H2("Scenario List: " + ', '.join(scenario_list)) + for scenario in scenario_list: + self._page << H2("Scenario: " + scenario) + data = getattr(self._task, scenario) + self.add_scenario(data) + + def add_scenario(self, scenario_data): + case_list = scenario_data.get_caselist() + for case in case_list: + self.add_case(scenario_data, case) + + def add_case(self, scenario_data, case): + case_name = self._task.common.get_casename(case) + title = "Case : %s (%s)" % (case, case_name) + self._page << H2(title) + + provider_list = ["fastlink", "rdp", "l2switch"] + provider_dict = {"fastlink": "Fast Link", "l2switch": "L2Switch", "rdp": "Kernel RDP"} + + for provider in provider_list: + if scenario_data.is_provider_start(case, provider): + title = " %s (%s_%s)" % (provider_dict[provider], case_name, provider) + self._page << H3(title) + test_types = ["throughput", "frameloss"] + for test_type in test_types: + if scenario_data.is_type_provider_start(case, provider, test_type): + self.add_casedata(scenario_data, case, provider, test_type) + + if scenario_data.is_latency_start(case): + self.add_latency_result(scenario_data, case) + + def add_casedata(self, scenario_data, case, provider, test_type): + table_content = scenario_data.get_summary_tabledata(case, provider, test_type, self._table_type) + if table_content: + title = "Test type:%s" % (test_type) + self._page << H4(title) + self.add_table(table_content) + + def add_latency_result(self, scenario_data, case): + title = "Average Latency Summary" + table_content = scenario_data.get_latency_tabledata(case) + if table_content: + self._page << H2(title) + self.add_table(table_content) + + +def unit_test(): + from vstf.common.log import setup_logging + setup_logging(level=logging.DEBUG, log_file="/var/log/html-creator.log", clevel=logging.INFO) + + dbase = DbManage() + taskid = dbase.get_last_taskid() + task_data = TaskData(taskid, dbase) + + from vstf.controller.settings.html_settings import HtmlSettings + from vstf.controller.reporters.report.provider.html_provider import StyleProvider + + html_settings = HtmlSettings() + LOG.info(html_settings.settings) + + provider = StyleProvider(html_settings.settings) + html = HtmlvSwitchCreator(task_data, provider) + + result = html.create(True) + print result + + +if __name__ == '__main__': + unit_test() |