Exemple #1
0
    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
Exemple #2
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.')