7 myc1_initialized=
'\'my_controller1\' - \'hardware_interface::EffortJointInterface\' ( initialized )\n' 8 myc1_running=
'\'my_controller1\' - \'hardware_interface::EffortJointInterface\' ( running )\n' 9 myc1_stopped=
'\'my_controller1\' - \'hardware_interface::EffortJointInterface\' ( stopped )\n' 10 myc2_initialized=
'\'my_controller2\' - \'hardware_interface::EffortJointInterface\' ( initialized )\n' 11 myc2_running=
'\'my_controller2\' - \'hardware_interface::EffortJointInterface\' ( running )\n' 12 myc2_stopped=
'\'my_controller2\' - \'hardware_interface::EffortJointInterface\' ( stopped )\n' 16 loaded_fmt =
'Loaded \'%s\'\n' 17 unloaded_fmt =
'Unloaded \'%s\' successfully\n' 18 stopped_fmt =
"Stopped [\'%s\'] successfully\n" 19 started_fmt =
"Started [\'%s\'] successfully\n" 21 no_controllers =
'No controllers are loaded in mechanism control\n' 22 reload_response =
'Restore: False\nSuccessfully reloaded libraries\n' 26 return subprocess.check_output(
'rosrun controller_manager controller_manager ' +
' '.join(args), shell=
True)
30 return subprocess.check_output(
'rosrun controller_manager controller_group ' +
' '.join(args), shell=
True)
34 return run_cm(
'load', name), loaded_fmt % name
37 return run_cm(
'unload', name), unloaded_fmt % name
40 return run_cm(
'stop', name), stopped_fmt % name
43 return run_cm(
'start', name), started_fmt % name
46 return run_cm(
'spawn', name), loaded_fmt % name + started_fmt % name
49 return run_cm(
'kill', name), stopped_fmt % name + unloaded_fmt % name
54 rospy.wait_for_service(
"/controller_manager/list_controllers", 2.0)
57 listed_types =
run_cm(
'list-types').split()
58 self.assertIn(
'controller_manager_tests/EffortTestController', listed_types)
61 self.assertEqual(
run_cm(
'list'), no_controllers)
64 s1 = subprocess.Popen(
'rosrun controller_manager spawner my_controller1 __name:=myspawner', shell=
True)
66 self.assertEqual(
run_cm(
'list'), myc1_running)
69 self.assertEqual(*
load_c(
'my_controller2'))
70 self.assertEqual(
run_cm(
'list'), myc1_running + myc2_initialized)
73 self.assertEqual(*
stop_c(
'my_controller1'))
74 self.assertEqual(
run_cm(
'list'), myc1_stopped + myc2_initialized)
77 self.assertEqual(*
start_c(
'my_controller2'))
78 self.assertEqual(
run_cm(
'list'), myc1_stopped + myc2_running)
81 self.assertEqual(*
stop_c(
'my_controller2'))
82 self.assertEqual(
run_cm(
'list'), myc1_stopped + myc2_stopped)
85 self.assertEqual(*
start_c(
'my_controller1'))
86 self.assertEqual(
run_cm(
'list'), myc1_running + myc2_stopped)
89 u1 = subprocess.Popen(
'rosrun controller_manager unspawner my_controller1 __name:=myunspawner', shell=
True)
91 self.assertEqual(
run_cm(
'list'), myc1_stopped + myc2_stopped)
94 subprocess.check_call(
'rosnode kill /myunspawner', shell=
True)
95 self.assertEqual(u1.wait(), 0)
96 self.assertEqual(
run_cm(
'list'), myc1_running + myc2_stopped)
99 subprocess.check_call(
'rosnode kill /myspawner', shell=
True)
100 self.assertEqual(0, s1.wait())
101 self.assertEqual(
run_cm(
'list'), myc2_stopped)
104 self.assertEqual(*
spawn_c(
'my_controller1'))
105 self.assertEqual(
run_cm(
'list'), myc2_stopped + myc1_running)
108 self.assertEqual(*
kill_c(
'my_controller1'))
109 self.assertEqual(
run_cm(
'list'), myc2_stopped)
112 self.assertEqual(*
unload_c(
'my_controller2'))
113 self.assertEqual(
run_cm(
'list'), no_controllers)
115 self.assertEqual(
run_cm(
'reload-libraries'), reload_response)
121 'Number of groups: 3\n' 122 ' group1\n my_controller1\n my_controller3\n' 123 ' group2\n my_controller2\n my_controller3\n' 124 ' group3\n my_controller1\n my_controller2\n')
129 'Loaded \'my_controller1\'\n' 130 'Loaded \'my_controller3\'\n' 131 'Started [\'my_controller1\'] successfully\n' 132 'Started [\'my_controller3\'] successfully\n')
137 'Loaded \'my_controller2\'\n' 138 'Started [\'my_controller2\'] successfully\n' 139 'Stopped [\'my_controller1\'] successfully\n')
144 'Error when starting [\'my_controller1\'] and stopping [\'my_controller3\']\n')
147 if __name__ ==
'__main__':
149 rostest.rosrun(
'controller_manager_msgs',
150 'controller_manager_scripts_rostest',