diff options
Diffstat (limited to 'vstf/vstf/controller/reporters/report/html')
4 files changed, 94 insertions, 197 deletions
diff --git a/vstf/vstf/controller/reporters/report/html/__init__.py b/vstf/vstf/controller/reporters/report/html/__init__.py index 89dcd4e2..df7d24d0 100755 --- a/vstf/vstf/controller/reporters/report/html/__init__.py +++ b/vstf/vstf/controller/reporters/report/html/__init__.py @@ -1,14 +1,9 @@ -# Copyright Huawei Technologies Co., Ltd. 1998-2015. -# All Rights Reserved. +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. # -# 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. +# All rights reserved. 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 +############################################################################## + diff --git a/vstf/vstf/controller/reporters/report/html/html_base.py b/vstf/vstf/controller/reporters/report/html/html_base.py index 270ef394..36be5981 100755 --- a/vstf/vstf/controller/reporters/report/html/html_base.py +++ b/vstf/vstf/controller/reporters/report/html/html_base.py @@ -1,41 +1,43 @@ -#!/usr/bin/python -# -*- coding: utf8 -*- -# author: wly -# date: 2015-09.25 -# see license for license details +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. 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 +############################################################################## + __version__ = ''' ''' import os -from vstf.common.pyhtml import * +import vstf.common.pyhtml as pyhtm class HtmlBase(object): - def __init__(self, provider, ofile='text.html'): - self._page = PyHtml('HtmlBase Text') - self._ofile = ofile + def __init__(self, provider): + self._page = pyhtm.PyHtml('Html Text') 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 save(self, ofile): + if ofile: + os.system('rm -rf %s' % ofile) + self._page.output(ofile) def as_string(self): return self._page.as_string() def add_table(self, data): - self._page.add_table(data) + if data and zip(*data): + self._page.add_table(data) def add_style(self): - style = self._provider.get_style() + style = self._provider.get_style self._page.add_style(style) - def create(self, is_save=True): + def create(self, ofile='text.html'): self.add_style() self.create_story() - if is_save: - self.save() + self.save(ofile) return self.as_string() def create_story(self): diff --git a/vstf/vstf/controller/reporters/report/html/html_text.py b/vstf/vstf/controller/reporters/report/html/html_text.py deleted file mode 100755 index 86505b8f..00000000 --- a/vstf/vstf/controller/reporters/report/html/html_text.py +++ /dev/null @@ -1,68 +0,0 @@ -#!/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 index e6c75caf..1d150e28 100755 --- a/vstf/vstf/controller/reporters/report/html/htmlcreator.py +++ b/vstf/vstf/controller/reporters/report/html/htmlcreator.py @@ -1,117 +1,85 @@ -#!/usr/bin/python -# -*- coding: utf8 -*- -# author: wly -# date: 2015-08-04 -# see license for license details +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. 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 +############################################################################## + __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 * +import vstf.common.candy_text as candy +from vstf.controller.reporters.report.provider.html_provider import HtmlProvider +from vstf.controller.settings.template_settings import TemplateSettings +from vstf.controller.settings.html_settings import HtmlSettings +from vstf.controller.reporters.report.html.html_base import HtmlBase, pyhtm 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' - +class HtmlCreator(HtmlBase): 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) + self.add_context() + + def add_context(self): + context = self._provider.get_context + self._raw_context(context) + + def _raw_context(self, context, ci=0, si=0, ui=0, level=-1): + _story = [] + for key, value in sorted(context.items()): + LOG.info(key) + LOG.info(value) + _sn, _node, _style = candy.text2tuple(key) + if _node in candy.dom: + if _node == candy.chapter: + ci = _style + elif _node == candy.section: + si = _style + else: + ui = _style + self._raw_context(value, ci, si, ui, level + 1) + + else: + LOG.info("node: %s %s" % (_node, candy.title)) + if _node == candy.title: + assert value + if level in range(len(candy.dom)): + if level == 0: + value[0] = "Chapter %s %s" % (ci, value[0]) + for title in value: + self._page << pyhtm.H2(title) + elif level == 1: + value[0] = "%s.%s %s" % (ci, si, value[0]) + for title in value: + self._page << pyhtm.H3(title) + else: + value[0] = "%s.%s.%s %s" % (ci, si, ui, value[0]) + for title in value: + self._page << pyhtm.H3(title) + + elif _node == candy.table: + self.add_table(value) + elif _node == candy.paragraph: + for para in value: + para = pyhtm.space(2) + para + self._page << pyhtm.P(para) 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 + out_file = "vstf_report.html" + info = TemplateSettings() html_settings = HtmlSettings() - LOG.info(html_settings.settings) - - provider = StyleProvider(html_settings.settings) - html = HtmlvSwitchCreator(task_data, provider) - - result = html.create(True) - print result - + provider = HtmlProvider(info.settings, html_settings.settings) + reporter = HtmlCreator(provider) + reporter.create(out_file) if __name__ == '__main__': unit_test() |