open-cas-linux/test/functional/test-framework/log/html_log_manager.py
Robert Baldyga 849f59855c tests: Embed test framework within OCL repository
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-12-23 12:53:55 +01:00

127 lines
4.1 KiB
Python

#
# Copyright(c) 2019-2021 Intel Corporation
# SPDX-License-Identifier: BSD-3-Clause
#
from log.base_log import BaseLog, escape
from log.html_iteration_log import HtmlIterationLog
from log.html_log_config import HtmlLogConfig
from log.html_main_log import HtmlMainLog
from log.html_setup_log import HtmlSetupLog
class HtmlLogManager(BaseLog):
def __init__(self, begin_message=None, log_config=None):
super().__init__(begin_message)
self._config = HtmlLogConfig() if log_config is None else log_config
self._main = None
self._log_setup = None
self._log_iterations = []
self._current_log = None
self._files_path = None
def __add(self, msg):
pass
def begin(self, message):
self._files_path = self._config.create_html_test_log(message)
self._main = HtmlMainLog(message, self._config)
self._log_setup = HtmlSetupLog(message, config=self._config)
self._current_log = self._log_setup
self._main.begin(message)
self._current_log.begin(message)
self.__add("begin: " + message)
@property
def base_dir(self):
return self._files_path
def get_result(self):
log_result = self._log_setup.get_result()
for iteration in self._log_iterations:
if log_result.value < iteration.get_result().value:
log_result = iteration.get_result()
return log_result
def end(self):
self._log_setup.end()
self._main.end_setup_iteration(self._log_setup.get_result())
log_result = self.get_result()
self._main.end(log_result)
self.__add("end")
def add_build_info(self, message):
self._main.add_build_info(escape(message))
def start_iteration(self, message):
message = escape(message)
self._log_iterations.append(HtmlIterationLog(message, message, self._config))
self._main.start_iteration(self._config.get_iteration_id())
self._current_log = self._log_iterations[-1]
self._current_log.begin(message)
self._log_setup.start_iteration(message)
self.__add("start_iteration: " + message)
def end_iteration(self):
self._current_log.end()
self._main.end_iteration(self._current_log.get_result())
self._log_setup.end_iteration(self._current_log.get_result())
self._current_log.iteration_closed = True
self._current_log = self._log_setup
self.__add("end_iteration: ")
return self._current_log
def debug(self, message):
self._current_log.debug(escape(message))
self.__add("debug: " + message)
def info(self, message):
self._current_log.info(escape(message))
self.__add("info: " + message)
def workaround(self, message):
self._current_log.workaround(escape(message))
self.__add(": " + message)
def warning(self, message):
self._current_log.warning(escape(message))
self.__add(": " + message)
def skip(self, message):
self._current_log.skip(escape(message))
self.__add("warning: " + message)
def error(self, message):
self._current_log.error(escape(message))
self.__add("error: " + message)
def blocked(self, message):
self._current_log.blocked(escape(message))
self.__add(f'blocked: {message}')
self.end_all_groups()
def exception(self, message):
self._current_log.exception(escape(message))
self.__add("exception: " + message)
self.end_all_groups()
def critical(self, message):
self._current_log.critical(escape(message))
self.__add("critical: " + message)
self.end_all_groups()
def start_group(self, message):
self._current_log.start_group(escape(message))
self.__add("start_group: " + message)
def end_group(self):
self._current_log.end_group()
self.__add("end_group")
def end_all_groups(self):
for iteration in reversed(self._log_iterations):
if not iteration.iteration_closed:
self.end_iteration()
self._current_log.end_all_groups()