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)
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))
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)