def test_call_service_works(self): # First, call the service the 'proper' way p = rospy.ServiceProxy("/rosout/get_loggers", GetLoggers) ret = p() proto = Protocol("test_call_service_works") s = CallService(proto) msg = loads( dumps({ "op": "call_service", "service": "/rosout/get_loggers" })) received = {"msg": None} def cb(msg, cid=None): received["msg"] = msg proto.send = cb s.call_service(msg) time.sleep(0.5) for x, y in zip(ret.loggers, received["msg"]["values"]["loggers"]): self.assertEqual(x.name, y["name"]) self.assertEqual(x.level, y["level"])
def test_call_service_works(self): # First, call the service the 'proper' way p = rospy.ServiceProxy("/rosout/get_loggers", GetLoggers) ret = p() proto = Protocol("test_call_service_works") s = CallService(proto) msg = loads(dumps({"op": "call_service", "service": "/rosout/get_loggers"})) received = {"msg": None} def cb(msg, cid=None): received["msg"] = msg proto.send = cb s.call_service(msg) time.sleep(0.5) self.assertTrue(received["msg"]["result"]) for x, y in zip(ret.loggers, received["msg"]["values"]["loggers"]): self.assertEqual(x.name, y["name"]) self.assertEqual(x.level, y["level"])
def test_call_service_fail(self): # Dummy service that instantly fails service_server = rospy.Service("set_bool_fail", SetBool, lambda req: None) proto = Protocol("test_call_service_fail") s = CallService(proto) send_msg = loads( dumps({ "op": "call_service", "service": rospy.get_name() + "/set_bool_fail", "args": '[ true ]' })) received = {"msg": None, "arrived": False} def cb(msg, cid=None): received["msg"] = msg received["arrived"] = True proto.send = cb s.call_service(send_msg) timeout = 5.0 start = rospy.Time.now() while rospy.Time.now() - start < rospy.Duration(timeout): if received["arrived"]: break time.sleep(0.1) self.assertFalse(received["msg"]["result"])
def test_subscribe_works(self): proto = Protocol("test_subscribe_works") sub = subscribe.Subscribe(proto) topic = "/test_subscribe_works" msg = String() msg.data = "test test_subscribe_works works" msg_type = "std_msgs/String" received = {"msg": None} def send(outgoing): received["msg"] = outgoing proto.send = send sub.subscribe( loads(dumps({ "op": "subscribe", "topic": topic, "type": msg_type }))) p = rospy.Publisher(topic, String) time.sleep(0.25) p.publish(msg) time.sleep(0.25) self.assertEqual(received["msg"]["msg"]["data"], msg.data)
def test_call_service_fail(self): proto = Protocol("test_call_service_fail") s = CallService(proto) send_msg = loads( dumps({ "op": "call_service", "service": "/rosout/set_logger_level", "args": '["ros", "invalid"]' })) received = {"msg": None, "arrived": False} def cb(msg, cid=None): received["msg"] = msg received["arrived"] = True proto.send = cb s.call_service(send_msg) timeout = 5.0 start = rospy.Time.now() while rospy.Time.now() - start < rospy.Duration(timeout): if received["arrived"]: break time.sleep(0.1) self.assertFalse(received["msg"]["result"])
def test_call_service_fail(self): proto = Protocol("test_call_service_fail") s = CallService(proto) send_msg = loads(dumps({"op": "call_service", "service": "/rosout/set_logger_level", "args": '["ros", "invalid"]'})) received = {"msg": None} def cb(msg, cid=None): received["msg"] = msg proto.send = cb s.call_service(send_msg) time.sleep(0.5) self.assertFalse(received["msg"]["result"])
def test_call_service_fail(self): proto = Protocol("test_call_service_fail") s = CallService(proto) send_msg = loads(dumps({"op": "call_service", "service": "/rosout/set_logger_level", "args": '["ros", "invalid"]'})) received = {"msg": None} def cb(msg, cid=None): received["msg"] = msg proto.send = cb s.call_service(send_msg) time.sleep(0.5) self.assertFalse(received["msg"]["result"])
def test_call_service_works(self): # Prepare to call the service the 'proper' way p = rospy.ServiceProxy(rospy.get_name() + "/get_loggers", GetLoggers) p.wait_for_service() time.sleep(1.0) proto = Protocol("test_call_service_works") s = CallService(proto) msg = loads( dumps({ "op": "call_service", "service": rospy.get_name() + "/get_loggers" })) received = {"msg": None, "arrived": False} def cb(msg, cid=None): received["msg"] = msg received["arrived"] = True proto.send = cb s.call_service(msg) timeout = 5.0 start = rospy.Time.now() while rospy.Time.now() - start < rospy.Duration(timeout): if received["arrived"]: break time.sleep(0.1) # The rosbridge service call actually causes another logger to appear, # so do the "regular" service call after that. ret = p() self.assertTrue(received["msg"]["result"]) for x, y in zip(ret.loggers, received["msg"]["values"]["loggers"]): self.assertEqual(x.name, y["name"]) self.assertEqual(x.level, y["level"])
def test_subscribe_works(self): proto = Protocol("test_subscribe_works") sub = subscribe.Subscribe(proto) topic = "/test_subscribe_works" msg = String() msg.data = "test test_subscribe_works works" msg_type = "std_msgs/String" received = {"msg": None} def send(outgoing): received["msg"] = outgoing proto.send = send sub.subscribe(loads(dumps({"op": "subscribe", "topic": topic, "type": msg_type}))) p = rospy.Publisher(topic, String) time.sleep(0.25) p.publish(msg) time.sleep(0.25) self.assertEqual(received["msg"]["msg"]["data"], msg.data)
def test_call_service_works(self): # First, call the service the 'proper' way p = rospy.ServiceProxy("/rosout/get_loggers", GetLoggers) p.wait_for_service() time.sleep(1.0) ret = p() proto = Protocol("test_call_service_works") s = CallService(proto) msg = loads( dumps({ "op": "call_service", "service": "/rosout/get_loggers" })) received = {"msg": None, "arrived": False} def cb(msg, cid=None): received["msg"] = msg received["arrived"] = True proto.send = cb s.call_service(msg) timeout = 5.0 start = rospy.Time.now() while rospy.Time.now() - start < rospy.Duration(timeout): if received["arrived"]: break time.sleep(0.1) self.assertTrue(received["msg"]["result"]) for x, y in zip(ret.loggers, received["msg"]["values"]["loggers"]): self.assertEqual(x.name, y["name"]) self.assertEqual(x.level, y["level"])