2424import time
2525import threading
2626
27+ from examples .simple_external_control_server .simple_external_control_server import ThreadedTCPServer , FileHandler
28+
2729# Make sure we can find the external control server
2830sys .path .append (os .path .abspath (os .path .join (os .path .dirname (__file__ ), '..' )))
2931from examples .simple_external_control_server .simple_external_control_server import ThreadedTCPServer , FileHandler
@@ -68,6 +70,10 @@ def run(self):
6870
6971
7072class TestUrcap (unittest .TestCase ):
73+ client = None
74+ server = None
75+ server_thread = None
76+
7177 @classmethod
7278 def setUpClass (cls ):
7379 cls .init_robot (cls )
@@ -90,74 +96,50 @@ def init_robot(self):
9096 self .client = DashboardClient (ROBOT_IP )
9197 self .client .connect ()
9298
93- def test_one_urcap (self ):
94- """This is testing that a program with the urcap can load and run."""
95-
99+ def run_program_test (self , program ):
96100 # Load program
97- self .client .sendAndRecieve ("load one_urcap.urp" )
98- result = self .client .sendAndRecieve ("get loaded program" )
101+ self .client .sendAndRecieve (f"load { program } .urp" )
99102 t_end = time .time () + 5
100- while 'one_urcap' not in result and time .time () < t_end :
103+ while time .time () < t_end :
101104 result = self .client .sendAndRecieve ("get loaded program" )
102- self .assertTrue ('one_urcap' in result )
105+ if program in result :
106+ break
107+ self .assertTrue (program in result )
103108
104109 self .client .sendAndRecieve ("brake release" )
105110
106111 # Make sure the robot is running
107- robot_mode = self .client .sendAndRecieve ("robotmode" )
108112 t_end = time .time () + 10
109- while robot_mode != "Robotmode: RUNNING" and time .time () < t_end :
113+ while time .time () < t_end :
110114 robot_mode = self .client .sendAndRecieve ("robotmode" )
115+ if robot_mode == "Robotmode: RUNNING" :
116+ break
111117 self .assertEqual (robot_mode , "Robotmode: RUNNING" )
112118
113119 # Play program
114120 self .client .sendAndRecieve ("play" )
115- program_state = self .client .sendAndRecieve ("programState" )
116121 t_end = time .time () + 10
117- while "PLAYING" not in program_state and time .time () < t_end :
122+ while time .time () < t_end :
118123 program_state = self .client .sendAndRecieve ("programState" )
124+ if "PLAYING" in program_state :
125+ break
119126 self .assertTrue ("PLAYING" in program_state )
120127
121128 # Wait for program to stop again
122- program_state = self .client .sendAndRecieve ("programState" )
123129 t_end = time .time () + 10
124- while "STOPPED" not in program_state and time .time () < t_end :
130+ while time .time () < t_end :
125131 program_state = self .client .sendAndRecieve ("programState" )
132+ if "STOPPED" in program_state :
133+ break
126134 self .assertTrue ("STOPPED" in program_state )
127135
136+ def test_one_urcap (self ):
137+ """This is testing that a program with the urcap can load and run."""
138+ self .run_program_test ("one_urcap" )
139+
128140 def test_multiple_urcaps (self ):
129141 """Test that a program with multiple URCaps can load and run, this will test # HEADER_BEGIN # HEADER_END feature."""
130- # Load program
131- self .client .sendAndRecieve ("load multiple_urcaps.urp" )
132- result = self .client .sendAndRecieve ("get loaded program" )
133- t_end = time .time () + 5
134- while 'one_urcap' not in result and time .time () < t_end :
135- result = self .client .sendAndRecieve ("get loaded program" )
136- self .assertTrue ('multiple_urcaps' in result )
137-
138- self .client .sendAndRecieve ("brake release" )
139-
140- # Make sure the robot is running
141- robot_mode = self .client .sendAndRecieve ("robotmode" )
142- t_end = time .time () + 10
143- while robot_mode != "Robotmode: RUNNING" and time .time () < t_end :
144- robot_mode = self .client .sendAndRecieve ("robotmode" )
145- self .assertEqual (robot_mode , "Robotmode: RUNNING" )
146-
147- # Play program
148- self .client .sendAndRecieve ("play" )
149- program_state = self .client .sendAndRecieve ("programState" )
150- t_end = time .time () + 10
151- while "PLAYING" not in program_state and time .time () < t_end :
152- program_state = self .client .sendAndRecieve ("programState" )
153- self .assertTrue ("PLAYING" in program_state )
154-
155- # Wait for program to stop again
156- program_state = self .client .sendAndRecieve ("programState" )
157- t_end = time .time () + 10
158- while "STOPPED" not in program_state and time .time () < t_end :
159- program_state = self .client .sendAndRecieve ("programState" )
160- self .assertTrue ("STOPPED" in program_state )
142+ self .run_program_test ("multiple_urcaps" )
161143
162144
163145if __name__ == '__main__' :
0 commit comments