def test_is_alive(self): p = Process(target=func_add, args=(42, 89), name="test_is_alive") assert p.is_alive() is False p.start() assert p.is_alive() is True p.join() assert p.is_alive() is False
def test_exitcode(self): p = Process(target=func_add, args=(42, 89), name="test_terminate") p.start() while True: if p.exitcode is not None: break time.sleep(1) assert p.exitcode == 0
def test_pid(self): p = Process(target=func_add, args=(42, 89), daemon=True, name="test_pid") assert p.pid is None p.start() assert p.pid is not None assert p.pid < 32768 assert p.pid > 0 p.join()
def test_sentinel(self): p = Process(target=time.sleep, args=(0.2,), name="test_sentinel") p.start() fds = select.select([p.sentinel], [], [], 0.1) assert len(fds[0]) == 0 fds = select.select([p.sentinel], [], []) assert len(fds[0]) == 1 assert fds[0][0] == p.sentinel p.join()
def test_current_process_nested(self): q = SimpleQueue() p = Process(target=get_current_pid, args=(q, ), name="test_active_children") p.start() q.put(p.pid) p.join() assert p.exitcode == 0
def test_terminate(self): p = Process(target=time.sleep, args=(1000,), name="test_terminate") p.start() assert p.is_alive() is True p.terminate() time.sleep(0.5) assert p.is_alive() is False # when terminated, exit code can be 0 for k8s backend #assert p.exitcode != 0 p.join()
def test_join_timeout(self): p = Process(target=func_add, args=(42, 89), name="test_join_timeout") p.start() now = time.time() p.join(1) diff = time.time() - now # because docker backend status updates are every 1 second. In the # worst case, this should be 1 second # make sure there is no leaked processes p.join() assert math.fabs(diff - 1) < 1
def test_ipc_passive(self): if fiber.config.default_backend == "kubernetes": # ipc passive is not very useful for current setup, consider disable this completely pytest.skip("skipped because current backend is kubernetes") # worker process waits for connection from master process fiber_config.ipc_active = False try: p = Process(target=func_add, args=(42, 89), name="test_ipc_passive") p.start() p.join() assert 0 == p.exitcode finally: fiber_config.ipc_active = True
def test_active_children(self): # Reset fiber module so other processes won't inteference with # current run import importlib importlib.reload(fiber) fiber.process._children = set() try: p1 = Process(target=time.sleep, args=(1, ), name="test_active_children1") p1.start() p2 = Process(target=time.sleep, args=(1, ), name="test_active_children2") p2.start() assert len(fiber.active_children()) == 2 finally: p1.join() p2.join()
def test_none_process(self): p = Process(target=None, name="test_none_process") p.start() p.join() assert 0 == p.exitcode
def test_process_error(self): p = Process(target=func_error, name="test_process_error") p.start() p.join() assert 0 != p.exitcode
def test_process(self): p = Process(target=func_add, args=(42, 89), name="test_process") p.start() p.join() assert 0 == p.exitcode
def test_daemon(self): p = Process(target=func_add, args=(42, 89), daemon=True, name="test_daemon") p.start() assert p.daemon is True p.join()
from fiber import Process def f(name): print('Hello', name) if __name__ == "__main__": p = Process(target=f, args=('Fiber', )) p.start() p.join() print('Done')