@@ -115,24 +115,20 @@ def test_switch_on(self):
115115 empty_req = Trigger .Request ()
116116 get_robot_mode_req = GetRobotMode .Request ()
117117
118- self .power_on_client . call_async ( empty_req )
118+ self .call_service ( self . power_on_client , empty_req )
119119 end_time = time .time () + 10
120120 mode = RobotMode .DISCONNECTED
121121 while mode not in (RobotMode .IDLE , RobotMode .RUNNING ) and time .time () < end_time :
122- future = self .get_robot_mode_client .call_async (get_robot_mode_req )
123- while future .done () is False :
124- rclpy .spin_once (self .node , timeout_sec = 0.1 )
125- mode = future .result ().robot_mode .mode
122+ result = self .call_service (self .get_robot_mode_client , get_robot_mode_req )
123+ mode = result .robot_mode .mode
126124
127125 self .assertIn (mode , (RobotMode .IDLE , RobotMode .RUNNING ))
128126
129- self .brake_release_client . call_async ( empty_req )
127+ self .call_service ( self . brake_release_client , empty_req )
130128 end_time = time .time () + 10
131129 while mode != RobotMode .RUNNING and time .time () < end_time :
132- future = self .get_robot_mode_client .call_async (get_robot_mode_req )
133- while future .done () is False :
134- rclpy .spin_once (self .node , timeout_sec = 0.1 )
135- mode = future .result ().robot_mode .mode
130+ result = self .call_service (self .get_robot_mode_client , get_robot_mode_req )
131+ mode = result .robot_mode .mode
136132
137133 self .assertEqual (mode , RobotMode .RUNNING )
138134
@@ -152,7 +148,7 @@ def test_set_io(self):
152148 set_io_req .pin = pin
153149 set_io_req .state = 1.0
154150
155- self .set_io_client . call_async ( set_io_req )
151+ self .call_service ( self . set_io_client , set_io_req )
156152 pin_state = False
157153
158154 end_time = time .time () + 5
@@ -164,7 +160,7 @@ def test_set_io(self):
164160 self .assertEqual (pin_state , 1 )
165161
166162 set_io_req .state = 0.0
167- self .set_io_client . call_async ( set_io_req )
163+ self .call_service ( self . set_io_client , set_io_req )
168164
169165 end_time = time .time () + 5
170166 while pin_state and time .time () < end_time :
@@ -178,3 +174,11 @@ def test_set_io(self):
178174
179175 def io_msg_cb (self , msg ):
180176 self .io_msg = msg
177+
178+ def call_service (self , client , request ):
179+ future = client .call_async (request )
180+ rclpy .spin_until_future_complete (self .node , future )
181+ if future .result () is not None :
182+ return future .result ()
183+ else :
184+ raise Exception (f"Exception while calling service: { future .exception ()} " )
0 commit comments