Skip to content

Commit 6efcb9b

Browse files
committed
Add tests about pid accuracy
1 parent 2dfd88e commit 6efcb9b

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

tests/unit/service/test_process.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from multiprocessing import Queue
2+
import os
23

34
import pytest
45

@@ -37,3 +38,35 @@ def test_pass_messages_via_process_manager(manager_cls):
3738
process.message_queue.put('msg1')
3839
msg = process_manager.finished_queue.get()
3940
assert msg == 'done value msg1'
41+
42+
43+
@pytest.mark.parametrize('manager_cls', [ProcessManager, ForkServerManager])
44+
def test_workers_have_different_pid(manager_cls):
45+
process_manager = manager_cls()
46+
processes = [process_manager.create_process((f'value{i}',), target=work_loop2) for i in range(2)]
47+
48+
for i in range(2):
49+
process = processes[i]
50+
process.start()
51+
process.message_queue.put(f'msg{i}')
52+
53+
assert processes[0].pid != processes[1].pid # title of test
54+
55+
msg1 = process_manager.finished_queue.get()
56+
msg2 = process_manager.finished_queue.get()
57+
assert set([msg1, msg2]) == set(['done value1 msg1', 'done value0 msg0'])
58+
59+
60+
61+
def return_pid(in_q, out_q):
62+
out_q.put(f'{os.getpid()}')
63+
64+
65+
@pytest.mark.parametrize('manager_cls', [ProcessManager, ForkServerManager])
66+
def test_pid_is_correct(manager_cls):
67+
process_manager = manager_cls()
68+
process = process_manager.create_process((), target=return_pid)
69+
process.start()
70+
71+
msg = process_manager.finished_queue.get()
72+
assert int(msg) == process.pid

0 commit comments

Comments
 (0)