예제 #1
0
    def run_task(self):
        self.logger.info("Task %s: Running db tests of flavor %s and release %s in %s"
                         % (self.__repr__(), self.flavor_name, self.release_type, self.test_file))
        test_container = self._client.containers.get(self._test_container_info.container_name)
        log_level = "--loglevel=%s" % self.log_level
        server = "--server '%s:%s'" % (self._database_info.host, self._database_info.db_port)
        environment = "--driver=/downloads/ODBC/lib/linux/x86_64/libexaodbc-uo2214lv2.so  " \
                      "--jdbc-path /downloads/JDBC/exajdbc.jar"
        language_definition = "--script-languages '%s'" % self.language_definition
        language = ""
        if self.language is not None:
            language = "--lang %s" % self.language
        args = '"{test_file}" {server} {language_definition} {log_level} {environment} {language} {tests}' \
            .format(
            test_file=self.test_file,
            server=server,
            language_definition=language_definition,
            log_level=log_level,
            environment=environment,
            language=language,
            tests=" ".join(self.test_restrictions)
        )
        cmd = 'cd /tests/test/; python -tt %s' % args
        bash_cmd = f"""bash -c "{cmd}" """
        still_running_logger = StillRunningLogger(self.logger, self.__repr__(),
                                                  "db tests of flavor %s and release %s in %s"
                                                  % (self.flavor_name, self.release_type, self.test_file))
        thread = StillRunningLoggerThread(still_running_logger)
        thread.start()
        environment = FrozenDictToDict().convert(self.test_environment_vars)
        exit_code, output = test_container.exec_run(cmd=bash_cmd,
                                                    environment=environment)
        thread.stop()
        thread.join()
        self._log_target.parent.mkdir(parents=True, exist_ok=True)
        log_output = "command: " + bash_cmd + "\n" + \
                     "environment: " + str(environment) + "\n" + \
                     output.decode("utf-8")
        if log_config().write_log_files_to_console == WriteLogFilesToConsole.all:
            self.logger.info("Task %s: Test results for db tests of flavor %s and release %s in %s\n%s"
                             % (self.__repr__(), self.flavor_name, self.release_type, self.test_file, log_output))
        if log_config().write_log_files_to_console == WriteLogFilesToConsole.only_error and exit_code != 0:
            self.logger.error("Task %s: db tests of flavor %s and release %s in %s failed\nTest results:\n%s"
                              % (self.__repr__(), self.flavor_name, self.release_type, self.test_file, log_output))

        with self._log_target.open("w") as file:
            file.write(log_output)
        with self.output().open("w") as file:
            if exit_code == 0:
                file.write("OK")
            else:
                file.write("FAILED")
예제 #2
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self._client = docker_client_config().get_client()
        self._log_config = log_config()
        self.docker_image_task = self.get_docker_image_task()
        self._prepare_outputs()
예제 #3
0
 def __init__(self, log_file_path, logger, task_id):
     self._log_file_path = log_file_path
     self._task_id = task_id
     self._logger = logger
     self._complete_log = []
     self._error_message = None
     self._log_config = log_config()
 def __init__(self, logger, taskid, description):
     self._description = description
     self._taskid = taskid
     self._logger = logger
     self._log_config = log_config()
     self._previous_time = datetime.now()
    def __init__(self, task_id: str):


        self._log_config = log_config()
        self._low_level_client = docker_client_config().get_low_level_client()
        self._task_id = task_id