Go to the documentation of this file.00001
00002 PKG = 'rosbridge_library'
00003 import roslib
00004 roslib.load_manifest(PKG)
00005 roslib.load_manifest("std_msgs")
00006 import rospy
00007
00008 import unittest
00009 import time
00010
00011
00012 roslib.load_manifest("roscpp")
00013 from roscpp.srv import GetLoggers
00014
00015 from json import loads, dumps
00016 from std_msgs.msg import String
00017
00018 from rosbridge_library.capabilities.call_service import CallService
00019 from rosbridge_library.protocol import Protocol
00020 from rosbridge_library.protocol import InvalidArgumentException, MissingArgumentException
00021
00022
00023 class TestCallService(unittest.TestCase):
00024
00025 def setUp(self):
00026 rospy.init_node("test_call_service")
00027
00028 def test_missing_arguments(self):
00029 proto = Protocol("test_missing_arguments")
00030 s = CallService(proto)
00031 msg = loads(dumps({"op": "call_service"}))
00032 self.assertRaises(MissingArgumentException, s.call_service, msg)
00033
00034 def test_invalid_arguments(self):
00035 proto = Protocol("test_invalid_arguments")
00036 s = CallService(proto)
00037
00038 msg = loads(dumps({"op": "call_service", "service": 3}))
00039 self.assertRaises(InvalidArgumentException, s.call_service, msg)
00040
00041 def test_call_service_works(self):
00042
00043 p = rospy.ServiceProxy("/rosout/get_loggers", GetLoggers)
00044 ret = p()
00045
00046
00047 proto = Protocol("test_call_service_works")
00048 s = CallService(proto)
00049 msg = loads(dumps({"op": "call_service", "service": "/rosout/get_loggers"}))
00050
00051 received = {"msg": None}
00052
00053 def cb(msg, cid=None):
00054 received["msg"] = msg
00055
00056 proto.send = cb
00057
00058 s.call_service(msg)
00059
00060 time.sleep(0.5)
00061
00062 for x, y in zip(ret.loggers, received["msg"]["values"]["loggers"]):
00063 self.assertEqual(x.name, y["name"])
00064 self.assertEqual(x.level, y["level"])
00065
00066 if __name__ == '__main__':
00067 import rostest
00068 rostest.rosrun(PKG, 'test_call_service', TestCallService)