test_call_service.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
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         # First, call the service the 'proper' way
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)


rosbridge_test
Author(s): Jonathan Mace
autogenerated on Thu Jan 2 2014 11:54:04