Skip to content

Commit dd73fd4

Browse files
committed
fix: tests
1 parent f19187b commit dd73fd4

1 file changed

Lines changed: 18 additions & 26 deletions

File tree

tests/test_concurrency.py

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
33
"""
44

5-
import threading
5+
import multiprocessing
66
import unittest
77
from unittest.mock import patch, MagicMock
88

@@ -18,23 +18,22 @@ def setUp(self):
1818
self.socket = "/tmp/sock"
1919

2020
def test_success_and_failure_isolation(self):
21-
success_counter = 0
22-
fail_counter = 0
23-
process_index = 0
24-
lock = threading.Lock()
21+
multiprocessing.set_start_method("fork", force=True)
22+
success_counter = multiprocessing.Value("i", 0)
23+
fail_counter = multiprocessing.Value("i", 0)
24+
process_index = multiprocessing.Value("i", 0)
2525

2626
def fake_bootstrap_run(handler, lambda_runtime_client):
27-
nonlocal success_counter, fail_counter, process_index
28-
with lock:
29-
idx = process_index
30-
process_index += 1
27+
with process_index.get_lock():
28+
idx = process_index.value
29+
process_index.value += 1
3130
if idx % 2 == 0:
3231
for _ in range(3):
33-
with lock:
34-
success_counter += 1
32+
with success_counter.get_lock():
33+
success_counter.value += 1
3534
else:
36-
with lock:
37-
fail_counter += 1
35+
with fail_counter.get_lock():
36+
fail_counter.value += 1
3837
raise RuntimeError("Simulated failure")
3938

4039
with patch(
@@ -44,19 +43,12 @@ def fake_bootstrap_run(handler, lambda_runtime_client):
4443
side_effect=fake_bootstrap_run,
4544
):
4645
# spawn 4 multi-concurrent processes
47-
threads = []
48-
for _ in range(4):
49-
t = threading.Thread(
50-
target=MultiConcurrentRunner.run_single,
51-
args=(self.handler, self.addr, self.use_thread, self.socket),
52-
)
53-
t.start()
54-
threads.append(t)
55-
for t in threads:
56-
t.join()
57-
58-
self.assertEqual(success_counter, 6)
59-
self.assertEqual(fail_counter, 2)
46+
MultiConcurrentRunner.run_concurrent(
47+
self.handler, self.addr, self.use_thread, self.socket, max_concurrency=4
48+
)
49+
50+
self.assertEqual(success_counter.value, 6)
51+
self.assertEqual(fail_counter.value, 2)
6052

6153

6254
if __name__ == "__main__":

0 commit comments

Comments
 (0)