def extend_result(self, cases_result=None, print_out=True): """update cases result to the result buffer""" self._mutex.acquire() if cases_result is not None: self._result["cases"].extend(cases_result) if print_out: for case_it in cases_result: LOGGER.info(self._progress % (self._suite_name, case_it["case_id"], case_it["result"])) if case_it["result"].lower() in ["fail", "block"] and "stdout" in case_it: LOGGER.info(str2str(case_it["stdout"])) self._mutex.release()
def extend_result(self, cases_result=None, print_out=True): """update cases result to the result buffer""" self._mutex.acquire() if cases_result is not None: self._result["cases"].extend(cases_result) if print_out: for case_it in cases_result: LOGGER.info(self._progress % (self._suite_name, case_it['case_id'], case_it['result'])) if case_it['result'].lower() in ['fail', 'block'] and 'stdout' in case_it: LOGGER.info(str2str(case_it['stdout'])) self._mutex.release()
def extend_result(self, cases_result=None, print_out=True): """update cases result to the result buffer""" self._mutex.acquire() if cases_result is not None: self._result["cases"].extend(cases_result) if print_out: for case_it in cases_result: LOGGER.info( self._progress % (self._suite_name, case_it['case_id'], case_it['result'])) if case_it['result'].lower() in ['fail', 'block' ] and 'stdout' in case_it: LOGGER.info(str2str(case_it['stdout'])) self._mutex.release()
def shell_command_ext(cmd="", timeout=None, boutput=False, stdout_file=None, stderr_file=None, callbk=None): """shell executor, return [exitcode, stdout/stderr] timeout: None means unlimited timeout boutput: specify whether print output during the command running """ if stdout_file is None: stdout_file = os.path.expanduser("~") + os.sep + "shell_stdout" if os.path.isfile(stdout_file): stdout_file = "%s%d" % (stdout_file, len(glob.glob("%s*" % stdout_file))) if stderr_file is None: stderr_file = os.path.expanduser("~") + os.sep + "shell_stderr" if os.path.isfile(stderr_file): stderr_file = "%s%d" % (stderr_file, len(glob.glob("%s*" % stderr_file))) exit_code = None wbuffile1 = file(stdout_file, "w") wbuffile2 = file(stderr_file, "w") rbuffile1 = file(stdout_file, "r") rbuffile2 = file(stderr_file, "r") cmd_open = subprocess.Popen(args=cmd, shell=True, stdout=wbuffile1, stderr=wbuffile2) rbuffile1.seek(0) rbuffile2.seek(0) def print_log(): """print the stdout to terminate""" if callbk and callable(callbk): callbk(rbuffile1.read()) else: sys.stdout.write(rbuffile1.read()) sys.stdout.write(rbuffile2.read()) sys.stdout.flush() while True: exit_code = cmd_open.poll() if exit_code is not None: break if boutput: print_log() if timeout is not None: timeout -= 0.1 if timeout <= 0: exit_code = "timeout" killall(cmd_open.pid) time.sleep(3) break time.sleep(0.1) if boutput: print_log() rbuffile1.seek(0) rbuffile2.seek(0) stdout_log = str2str(rbuffile1.read()) stderr_log = str2str(rbuffile2.read()) if 'returncode=' in stdout_log: index = stdout_log.find('returncode=') + 11 exit_code = str(stdout_log[index:]).strip('\r\n') stdout_log = '<![CDATA[' + stdout_log + ']]>' stderr_log = '<![CDATA[' + stderr_log + ']]>' wbuffile1.close() wbuffile2.close() rbuffile1.close() rbuffile2.close() os.remove(stdout_file) os.remove(stderr_file) return [exit_code, stdout_log, stderr_log]
def shell_command_ext(cmd="", timeout=None, boutput=False, stdout_file=None, stderr_file=None, callbk=None): """shell executor, return [exitcode, stdout/stderr] timeout: None means unlimited timeout boutput: specify whether print output during the command running """ if stdout_file is None: stdout_file = os.path.expanduser("~") + os.sep + "shell_stdout" if stderr_file is None: stderr_file = os.path.expanduser("~") + os.sep + "shell_stderr" exit_code = None wbuffile1 = file(stdout_file, "w") wbuffile2 = file(stderr_file, "w") rbuffile1 = file(stdout_file, "r") rbuffile2 = file(stderr_file, "r") cmd_open = subprocess.Popen(args=cmd, shell=True, stdout=wbuffile1, stderr=wbuffile2) rbuffile1.seek(0) rbuffile2.seek(0) def print_log(): """print the stdout to terminate""" if callbk and callable(callbk): callbk(rbuffile1.read()) else: sys.stdout.write(rbuffile1.read()) sys.stdout.write(rbuffile2.read()) sys.stdout.flush() while True: exit_code = cmd_open.poll() if exit_code is not None: break if boutput: print_log() if timeout is not None: timeout -= 0.1 if timeout <= 0: exit_code = "timeout" killall(cmd_open.pid) time.sleep(3) break time.sleep(0.1) if boutput: print_log() rbuffile1.seek(0) rbuffile2.seek(0) stdout_log = str2str(rbuffile1.read()) stderr_log = str2str(rbuffile2.read()) if 'returncode=' in stdout_log: index = stdout_log.find('returncode=') + 11 exit_code = str(stdout_log[index:]).strip('\r\n') stdout_log = '<![CDATA[' + stdout_log + ']]>' stderr_log = '<![CDATA[' + stderr_log + ']]>' wbuffile1.close() wbuffile2.close() rbuffile1.close() rbuffile2.close() os.remove(stdout_file) os.remove(stderr_file) return [exit_code, stdout_log, stderr_log]