def test_offline(self): from ros import rosservice orig_uri = os.environ['ROS_MASTER_URI'] os.environ['ROS_MASTER_URI'] = 'http://fake_host:12356' try: c = 'rosservice' try: rosservice.get_service_type('/add_two_ints') self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_list([c, 'list']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_info([c, 'info', '/add_two_ints']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_type([c, 'type', '/add_two_ints']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_uri([c, 'uri', '/add_two_ints']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_find( [c, 'find', 'test_ros/AddTwoInts']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_call( [c, 'call', '/add_two_ints', '1', '2']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass finally: os.environ['ROS_MASTER_URI'] = orig_uri
def test_offline(self): from ros import rosservice orig_uri = os.environ['ROS_MASTER_URI'] os.environ['ROS_MASTER_URI'] = 'http://fake_host:12356' try: c = 'rosservice' try: rosservice.get_service_type('/add_two_ints') self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_list([c, 'list']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_info([c, 'info', '/add_two_ints']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_type([c, 'type', '/add_two_ints']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_uri([c, 'uri', '/add_two_ints']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_find([c, 'find', 'test_ros/AddTwoInts']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass try: rosservice._rosservice_cmd_call([c, 'call', '/add_two_ints', '1', '2']) self.fail("should have raised ROSServiceIOException") except rosservice.ROSServiceIOException: pass finally: os.environ['ROS_MASTER_URI'] = orig_uri
def setUp(self): # wait for all services to come up from ros import rosservice services = ['/add_two_ints', '/foo/add_two_ints', '/bar/add_two_ints', ] import time timeout_t = time.time() + 10. while time.time() < timeout_t: with fakestdout() as b: rosservice._rosservice_cmd_list(['rosservice', 'list']) v = [x.strip() for x in b.getvalue().split('\n') if x.strip()] if not (set(services) - set(v) ): return self.fail("timeout")
def setUp(self): # wait for all services to come up from ros import rosservice services = [ '/add_two_ints', '/foo/add_two_ints', '/bar/add_two_ints', ] import time timeout_t = time.time() + 10. while time.time() < timeout_t: with fakestdout() as b: rosservice._rosservice_cmd_list(['rosservice', 'list']) v = [x.strip() for x in b.getvalue().split('\n') if x.strip()] if not (set(services) - set(v)): return self.fail("timeout")
def test_cmd_list(self): from ros import rosservice cmd = 'rosservice' s = '/add_two_ints' # test main entry rosservice.rosservicemain([cmd, 'list']) # test directly services = [ '/add_two_ints', '/foo/add_two_ints', '/bar/add_two_ints', '/header_echo', ] services_nodes = [ '/add_two_ints /a2iserver', '/foo/add_two_ints /foo/a2iserver', '/bar/add_two_ints /bar/a2iserver', '/header_echo /headerserver', ] with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list']) v = [x.strip() for x in b.getvalue().split('\n') if x.strip()] v = [x for x in v if not x.startswith('/rosout/')] self.assertEquals(set(services), set(v)) with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', '-n']) v = [x.strip() for x in b.getvalue().split('\n') if x.strip()] v = [x for x in v if not x.startswith('/rosout/')] self.assertEquals(set(services_nodes), set(v)) with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', '--nodes']) v = [x.strip() for x in b.getvalue().split('\n') if x.strip()] v = [x for x in v if not x.startswith('/rosout/')] self.assertEquals(set(services_nodes), set(v)) # test with multiple service names try: rosservice._rosservice_cmd_list([cmd, 'list', s, s]) self.fail("should have caused parser error") except SystemExit: pass # test with resolved service names for s in services: with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', s]) self.assertEquals(s, b.getvalue().strip()) # test with relative service names s = 'add_two_ints' with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', s]) self.assertEquals('/add_two_ints', b.getvalue().strip()) with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', s, '-n']) self.assertEquals('/add_two_ints /a2iserver', b.getvalue().strip()) with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', s, '--nodes']) self.assertEquals('/add_two_ints /a2iserver', b.getvalue().strip()) # test with namespaces s = '/foo' rosservice._rosservice_cmd_list([cmd, 'list', s]) rosservice._rosservice_cmd_list([cmd, 'list', s, '-n']) rosservice._rosservice_cmd_list([cmd, 'list', s, '--nodes']) s = 'foo' rosservice._rosservice_cmd_list([cmd, 'list', s]) rosservice._rosservice_cmd_list([cmd, 'list', s, '-n']) rosservice._rosservice_cmd_list([cmd, 'list', s, '--nodes'])
def test_cmd_list(self): from ros import rosservice cmd = 'rosservice' s = '/add_two_ints' # test main entry rosservice.rosservicemain([cmd, 'list']) # test directly services = ['/add_two_ints', '/foo/add_two_ints', '/bar/add_two_ints', '/header_echo', ] services_nodes = ['/add_two_ints /a2iserver', '/foo/add_two_ints /foo/a2iserver', '/bar/add_two_ints /bar/a2iserver', '/header_echo /headerserver', ] with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list']) v = [x.strip() for x in b.getvalue().split('\n') if x.strip()] v = [x for x in v if not x.startswith('/rosout/')] self.assertEquals(set(services), set(v)) with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', '-n']) v = [x.strip() for x in b.getvalue().split('\n') if x.strip()] v = [x for x in v if not x.startswith('/rosout/')] self.assertEquals(set(services_nodes), set(v)) with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', '--nodes']) v = [x.strip() for x in b.getvalue().split('\n') if x.strip()] v = [x for x in v if not x.startswith('/rosout/')] self.assertEquals(set(services_nodes), set(v)) # test with multiple service names try: rosservice._rosservice_cmd_list([cmd, 'list', s, s]) self.fail("should have caused parser error") except SystemExit: pass # test with resolved service names for s in services: with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', s]) self.assertEquals(s, b.getvalue().strip()) # test with relative service names s = 'add_two_ints' with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', s]) self.assertEquals('/add_two_ints', b.getvalue().strip()) with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', s, '-n']) self.assertEquals('/add_two_ints /a2iserver', b.getvalue().strip()) with fakestdout() as b: rosservice._rosservice_cmd_list([cmd, 'list', s, '--nodes']) self.assertEquals('/add_two_ints /a2iserver', b.getvalue().strip()) # test with namespaces s = '/foo' rosservice._rosservice_cmd_list([cmd, 'list', s]) rosservice._rosservice_cmd_list([cmd, 'list', s, '-n']) rosservice._rosservice_cmd_list([cmd, 'list', s, '--nodes']) s = 'foo' rosservice._rosservice_cmd_list([cmd, 'list', s]) rosservice._rosservice_cmd_list([cmd, 'list', s, '-n']) rosservice._rosservice_cmd_list([cmd, 'list', s, '--nodes'])