Skip to content

Commit d70bbb4

Browse files
committed
Reduce code duplication in test
1 parent 471562e commit d70bbb4

File tree

1 file changed

+26
-44
lines changed

1 file changed

+26
-44
lines changed

tests/test_urcap.py

Lines changed: 26 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import time
2525
import 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
2830
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
2931
from examples.simple_external_control_server.simple_external_control_server import ThreadedTCPServer, FileHandler
@@ -68,6 +70,10 @@ def run(self):
6870

6971

7072
class 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

163145
if __name__ == '__main__':

0 commit comments

Comments
 (0)