@@ -18,18 +18,19 @@ def setUp(self):
1818 self .socket = "/tmp/sock"
1919
2020 def test_success_and_failure_isolation (self ):
21- ctx = multiprocessing .get_context ("fork" )
22- success_counter = ctx .Value ("i" , 0 )
23- fail_counter = ctx .Value ("i" , 0 )
21+ manager = multiprocessing .Manager ()
22+ success_counter = manager .Value ("i" , 0 )
23+ fail_counter = manager .Value ("i" , 0 )
24+ lock = manager .Lock ()
2425
2526 def fake_bootstrap_run (handler , lambda_runtime_client ):
2627 pid = multiprocessing .current_process ().pid
2728 if pid % 2 == 0 :
2829 for _ in range (3 ):
29- with success_counter . get_lock () :
30+ with lock :
3031 success_counter .value += 1
3132 else :
32- with fail_counter . get_lock () :
33+ with lock :
3334 fail_counter .value += 1
3435 raise RuntimeError ("Simulated failure" )
3536
@@ -38,17 +39,14 @@ def fake_bootstrap_run(handler, lambda_runtime_client):
3839 ), patch (
3940 "awslambdaric.lambda_multi_concurrent_utils.bootstrap.run" ,
4041 side_effect = fake_bootstrap_run ,
41- ), patch (
42- "awslambdaric.lambda_multi_concurrent_utils.multiprocessing.Process" ,
43- ctx .Process ,
4442 ):
45- # spawn 4 multi-concurrent processes
4643 MultiConcurrentRunner .run_concurrent (
4744 self .handler , self .addr , self .use_thread , self .socket , max_concurrency = 4
4845 )
4946
5047 self .assertEqual (success_counter .value , 6 )
5148 self .assertEqual (fail_counter .value , 2 )
49+ manager .shutdown ()
5250
5351
5452if __name__ == "__main__" :
0 commit comments