diff --git a/satella/processes.py b/satella/processes.py index e2d872ca9da45edc396149c6cfe9133767ed8d40..cd9a431a81b73f7c6e3196fcecc935a11bd21ebd 100644 --- a/satella/processes.py +++ b/satella/processes.py @@ -1,9 +1,12 @@ import subprocess import typing as tp import threading +import logging from .exceptions import ProcessFailed +logger = logging.getLogger(__name__) + def read_nowait(process: subprocess.Popen, output_list: tp.List[str]): try: @@ -31,20 +34,24 @@ def call_and_return_stdout(args: tp.Union[str, tp.List[str]], """ if isinstance(args, str): args = args.split(' ') - + logger.warning('Modifying kwargs') kwargs['stdout'] = subprocess.PIPE stdout_list = [] + logger.warning('Starting popen') proc = subprocess.Popen(args, **kwargs) reader_thread = threading.Thread(target=read_nowait, args=(proc, stdout_list), daemon=True) + logger.warning('Starting rt') reader_thread.start() + logger.warning('Waiting for termination') try: proc.wait(timeout=timeout) except subprocess.TimeoutExpired: proc.kill() proc.wait() + logger.warning('Terminated') if proc.returncode != expected_return_code: raise ProcessFailed(proc.returncode) diff --git a/tests/test_processes.py b/tests/test_processes.py index 13dac48d66e2147ae6ccc9de66ff5f53056edf63..0c9d799f4545ce2ecf966e66e94a39ef0bad5c7e 100644 --- a/tests/test_processes.py +++ b/tests/test_processes.py @@ -6,10 +6,10 @@ from satella.processes import call_and_return_stdout class TestProcesses(unittest.TestCase): @unittest.skipIf('win' in sys.platform, 'Running on Windows') def test_return_stdout(self): - output = call_and_return_stdout('cat /proc/meminfo', shell=True) + output = call_and_return_stdout('cat /proc/meminfo', shell=True, timeout=3) self.assertIn(b'MemTotal', output) @unittest.skipIf('win' in sys.platform or sys.version_info.minor < 6, 'Running on Windows or Python 3.5') def test_return_encoding(self): - output = call_and_return_stdout('cat /proc/meminfo', shell=True, encoding='utf8') + output = call_and_return_stdout('cat /proc/meminfo', shell=True, encoding='utf8', timeout=3) self.assertIn('MemTotal', output)