def test_exit_code(self): process_psutil = psutil.Popen.__new__(psutil.Popen, None) process_subprocess = subprocess.Popen.__new__(subprocess.Popen, None) process_multiprocessing = Process.__new__(Process, None) process_psutil.poll = Mock() process_subprocess.poll = Mock() process_multiprocessing._popen = Mock() process_multiprocessing._parent_pid = os.getpid() process_multiprocessing._name = "test" process_multiprocessing._daemonic = False process_psutil.returncode = None process_subprocess.returncode = None assert ProcessMonitor.is_process_alive(process_psutil) assert ProcessMonitor.is_process_alive(process_subprocess) with patch('multiprocessing.Process.is_alive', side_effect=lambda: False): assert not ProcessMonitor.is_process_alive(process_multiprocessing) assert ProcessMonitor.exit_code(None) is None assert ProcessMonitor.exit_code(process_psutil) is None assert ProcessMonitor.exit_code(process_subprocess) is None with patch('multiprocessing.Process.exitcode') as exitcode: exitcode.__get__ = Mock(return_value=None) assert ProcessMonitor.exit_code(process_multiprocessing) is None process_psutil.poll = Mock() process_psutil.returncode = 0 process_subprocess.poll = Mock() process_subprocess.returncode = 0 assert not ProcessMonitor.is_process_alive(None) assert not ProcessMonitor.is_process_alive(process_psutil) assert not ProcessMonitor.is_process_alive(process_subprocess) with patch('multiprocessing.Process.exitcode') as exitcode: exitcode.__get__ = Mock(return_value=0) assert not ProcessMonitor.is_process_alive(process_multiprocessing) assert ProcessMonitor.exit_code(process_psutil) == 0 assert ProcessMonitor.exit_code(process_subprocess) == 0 with patch('multiprocessing.Process.exitcode') as exitcode: exitcode.__get__ = Mock(return_value=0) assert ProcessMonitor.exit_code(process_multiprocessing) == 0
def __new__(self,**worker): try: assert worker.has_key('method') return Process.__new__(self) except AssertionError: raise ProcessError('ERRO na criacao do processo filho. O Metodo de callback precisa ser informado.')