@@ -53,6 +53,32 @@ def assert_get_object_equal(unit_test, client1, client2, object_id, memory_buffe
5353 unit_test .assertEqual (client1 .get_metadata (object_id )[:],
5454 client2 .get_metadata (object_id )[:])
5555
56+ def start_plasma_manager (store_name , host_name , redis_port , use_valgrind = False ):
57+ """Start a plasma manager and return the ports it listens on."""
58+ plasma_manager_executable = os .path .join (os .path .abspath (os .path .dirname (__file__ )), "../build/plasma_manager" )
59+ num_retries = 5
60+ port = None
61+ process = None
62+ while num_retries >= 0 :
63+ port = random .randint (10000 , 50000 )
64+ command = [plasma_manager_executable ,
65+ "-s" , store_name ,
66+ "-m" , host_name ,
67+ "-h" , "127.0.0.1" ,
68+ "-p" , str (port ),
69+ "-r" , "{addr}:{port}" .format (addr = "127.0.0.1" , port = redis_port )]
70+ print ("Try to start plasma manager on port " + str (port ))
71+ if use_valgrind :
72+ process = subprocess .Popen (["valgrind" , "--track-origins=yes" , "--leak-check=full" , "--show-leak-kinds=all" , "--error-exitcode=1" ] + command )
73+ else :
74+ process = subprocess .Popen (command )
75+ time .sleep (0.1 )
76+ # See if the process has terminated
77+ if process .poll () == None :
78+ return process , port
79+ num_retries = num_retries - 1
80+ raise Exception ("Couldn't start plasma manager" )
81+
5682# Check if the redis-server binary is present.
5783redis_path = os .path .join (os .path .abspath (os .path .dirname (__file__ )), "../../common/thirdparty/redis-3.2.3/src/redis-server" )
5884if not os .path .exists (redis_path ):
@@ -240,30 +266,8 @@ def setUp(self):
240266 time .sleep (0.1 )
241267
242268 # Start two PlasmaManagers.
243- self .port1 = random .randint (10000 , 50000 )
244- self .port2 = random .randint (10000 , 50000 )
245- plasma_manager_executable = os .path .join (os .path .abspath (os .path .dirname (__file__ )), "../build/plasma_manager" )
246- plasma_manager_command1 = [plasma_manager_executable ,
247- "-s" , store_name1 ,
248- "-m" , manager_name1 ,
249- "-h" , "127.0.0.1" ,
250- "-p" , str (self .port1 ),
251- "-r" , "{addr}:{port}" .format (addr = "127.0.0.1" ,
252- port = redis_port )]
253- plasma_manager_command2 = [plasma_manager_executable ,
254- "-s" , store_name2 ,
255- "-m" , manager_name2 ,
256- "-h" , "127.0.0.1" ,
257- "-p" , str (self .port2 ),
258- "-r" , "{addr}:{port}" .format (addr = "127.0.0.1" ,
259- port = redis_port )]
260-
261- if USE_VALGRIND :
262- self .p4 = subprocess .Popen (["valgrind" , "--track-origins=yes" , "--leak-check=full" , "--show-leak-kinds=all" , "--error-exitcode=1" ] + plasma_manager_command1 )
263- self .p5 = subprocess .Popen (["valgrind" , "--track-origins=yes" , "--leak-check=full" , "--show-leak-kinds=all" , "--error-exitcode=1" ] + plasma_manager_command2 )
264- else :
265- self .p4 = subprocess .Popen (plasma_manager_command1 )
266- self .p5 = subprocess .Popen (plasma_manager_command2 )
269+ self .p4 , self .port1 = start_plasma_manager (store_name1 , manager_name1 , redis_port , USE_VALGRIND )
270+ self .p5 , self .port2 = start_plasma_manager (store_name2 , manager_name2 , redis_port , USE_VALGRIND )
267271
268272 # Connect two PlasmaClients.
269273 self .client1 = plasma .PlasmaClient (store_name1 , manager_name1 )
0 commit comments