@@ -54,7 +54,7 @@ def run_server():
5454 class MockServer (Server ):
5555 @rpc_method
5656 def mock_method (self ):
57- if not crash_event .wait ( 0 ):
57+ if not crash_event .is_set ( ):
5858 crash_event .set ()
5959 sys .exit (1 )
6060 else :
@@ -63,7 +63,7 @@ def mock_method(self):
6363 MockServer (socket_dir = socket_dir ).run ()
6464
6565 def run_client ():
66- client = Client (socket_dir = socket_dir )
66+ client = Client (socket_dir = socket_dir , retry_timeout = 0.1 )
6767 response = client .call ('mock_server' , 'mock_method' )
6868 if response ['success' ]:
6969 rpc_event .set ()
@@ -220,3 +220,28 @@ def mock_method(self):
220220 client = Client (socket_dir = socket_dir )
221221 response = client .call ('mock_server' , 'mock_method' , timeout = 3 )
222222 assert response ['success' ]
223+
224+
225+ def test_server_cache (socket_dir ):
226+
227+ counter = multiprocessing .Value ('i' )
228+ counter .value = 0
229+
230+ class MockServer (Server ):
231+ @rpc_method
232+ def mock_method (self ):
233+ time .sleep (0.1 )
234+ counter .value += 1
235+ return {'success' : True }
236+
237+ def run_server ():
238+ MockServer (socket_dir = socket_dir ).run ()
239+
240+ multiprocessing .Process (target = run_server , daemon = True ).start ()
241+
242+ # Retry 10 times
243+ client = Client (socket_dir = socket_dir , retry_timeout = 0.01 )
244+ client .call (server = 'mock_server' , method = 'mock_method' , timeout = 1 )
245+
246+ # Assert method executed only once
247+ assert counter .value == 1
0 commit comments