(cmd, cmd_name, logger, timeout=SINGLE_CASE_TIMEOUT, **kargs)
| 102 | |
| 103 | |
| 104 | def run_subprocess(cmd, cmd_name, logger, timeout=SINGLE_CASE_TIMEOUT, **kargs): |
| 105 | kargs["timeout"] = timeout |
| 106 | try: |
| 107 | result = subprocess.run(cmd, **kargs) |
| 108 | logger.debug(f"{cmd} log: {result.stdout}", extra={"cmd": cmd_name}) |
| 109 | return result |
| 110 | except subprocess.CalledProcessError as e: |
| 111 | err = f"{cmd} return exit code {e.returncode}, stderr" + e.stderr.decode("utf-8") |
| 112 | logger.error(err, extra={"cmd": cmd_name, "return_code": e.returncode}) |
| 113 | raise SubprocessError(cmd[0], e.returncode, e) |
| 114 | except subprocess.TimeoutExpired as e: |
| 115 | err = f"{cmd} timeout after {e.timeout} seconds, stdout: {e.stdout}, stderr: {e.stderr}" |
| 116 | logger.error(err, extra={"cmd": cmd_name, "return_code": "timeout"}) |
| 117 | raise e |
no test coverage detected
searching dependent graphs…