Пример #1
0
    def validate(self):
        """
        Marks the process that finished with error code as validated - the error was either expected or handled by the caller
        If process finished with error but wasn't validated one of the subtest will fail.

        """
        assert self.retvalue() != None, "This function shouldn't be called when process is still running"

        if self._is_validated:
            return
        self._is_validated = True
        self._processes_not_validated.remove(self)
        logger.pop_defered(self._info_message)
Пример #2
0
    def subtest_finish(self, subtest):
        global _erisTestNumber

        if subtest.name.startswith(
                "test_") and not subtest.name.endswith("restore state"):
            logger.info("Test %s end time: %s" %
                        (subtest.name, datetime.datetime.now()))

        if subtest.result == test_utils.SubTest.FAILED and test_utils.reRunning == True:
            subtest.result = test_utils.SubTest.FAILURE_LOGGED
            logger.error(subtest.result_details)
        if subtest.result == test_utils.SubTest.FAILED:
            logger.error(subtest.result_details)

        logger.indent_decrement()
        logger.pop_defered(subtest._DefaultProgressPrinter_header_log_id)

        if subtest.result == test_utils.SubTest.SKIPPED:
            with logger.IndentBlock():
                logger.info("SKIPPED: " +
                            subtest.result_details_raw.exception.message)
        elif subtest.result != test_utils.SubTest.SUCCESS:
            logger.info("<< %s" % (subtest))

        if option_parser.options.eris:
            # Validating results of subtest with depth bigger than 3
            if subtest.depth > 3 and not subtest.name.endswith(
                    "restore state"):
                if subtest.result == test_utils.SubTest.FAILED:
                    self.childrenTest = "F"

            if subtest.depth == 3 and subtest.name.startswith(
                    "test_") and not subtest.name.endswith("restore state"):
                if subtest.result == test_utils.SubTest.SKIPPED:
                    logger.info("&&&& WAIVED %s - %d" %
                                (subtest.name, _erisTestNumber))
                elif subtest.result == test_utils.SubTest.SUCCESS and not self.childrenTest == "F":
                    logger.info("&&&& PASSED %s - %d" %
                                (subtest.name, _erisTestNumber))
                elif subtest.result == test_utils.SubTest.FAILURE_LOGGED:
                    logger.info("&&&& FAILURE_LOGGED %s - %d" %
                                (subtest.name, _erisTestNumber))
                elif subtest.result == test_utils.SubTest.FAILED or self.childrenTest == "F":
                    logger.info("&&&& FAILED %s - %d" %
                                (subtest.name, _erisTestNumber))
                elif subtest.result == test_utils.SubTest.NOT_CONNECTED:
                    logger.info("&&&& RETRY %s - %d" %
                                (subtest.name, _erisTestNumber))
Пример #3
0
    def _process_finish(self, stdout_buf, stderr_buf):
        """
        Logs return code/string and reads the remaining stdout/stderr.

        """
        logger.debug("Application %s returned with status: %s" % (self.executable, self._retvalue))
        self.runTime = datetime.datetime.now() - self.startTime

        self._split_and_log_lines(stdout_buf, self.stdout_lines, self._logfile_stdout)
        self._split_and_log_lines(stderr_buf, self.stderr_lines, self._logfile_stderr)

        if self._logfile_stdout:
            self._logfile_stdout.close()
        if self._logfile_stderr:
            self._logfile_stderr.close()
        AppRunner._processes.remove(self)
        if self._retvalue != 0 and self._retvalue != AppRunner.RETVALUE_TERMINATED:
            AppRunner._processes_not_validated.append(self)
        else:
            self._is_validated = True
            logger.pop_defered(self._info_message)