00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 PKG = 'test_rospy'
00040 NAME = 'empty_service'
00041 import roslib; roslib.load_manifest(PKG)
00042
00043 import sys, time
00044 import unittest
00045
00046 import rospy, rostest
00047 from test_rospy.srv import *
00048
00049 EMPTY_SERVICE = 'empty_service'
00050 EMPTY_RETURN_SERVICE = 'empty_return_service'
00051 EMPTY_REQ_SERVICE = 'empty_req_service'
00052 EMPTY_RESP_SERVICE = 'empty_resp_service'
00053
00054 FAKE_SECRET = 123456
00055
00056 WAIT_TIMEOUT = 10.0
00057
00058 def handle_empty(req):
00059 print "Returning empty"
00060 return EmptySrvResponse()
00061
00062 def handle_return_empty(req):
00063 "print returning empty list"
00064 return []
00065
00066
00067 def handle_empty_req(req):
00068 print "Returning fake_secret"
00069 return EmptyReqSrvResponse(FAKE_SECRET)
00070
00071 def handle_empty_resp(req):
00072 if req.fake_secret == FAKE_SECRET:
00073 print "Request validated, returning empty"
00074 return EmptyRespSrvResponse()
00075 else:
00076 print "Request did not validate, returning None"
00077
00078 def empty_service():
00079 rospy.init_node(NAME)
00080 s1 = rospy.Service(EMPTY_SERVICE, EmptySrv, handle_empty)
00081 s2 = rospy.Service(EMPTY_REQ_SERVICE, EmptyReqSrv, handle_empty_req)
00082 s3 = rospy.Service(EMPTY_RESP_SERVICE, EmptyRespSrv, handle_empty_resp)
00083 s4 = rospy.Service(EMPTY_RETURN_SERVICE, EmptySrv, handle_return_empty)
00084 rospy.spin()
00085
00086 class TestEmptyServiceClient(unittest.TestCase):
00087
00088 def _test(self, name, srv, req):
00089 rospy.wait_for_service(name, WAIT_TIMEOUT)
00090 s = rospy.ServiceProxy(name, srv)
00091 resp = s.call(req)
00092 self.assert_(resp is not None)
00093 return resp
00094
00095
00096 def test_call_empty(self):
00097 rospy.wait_for_service(EMPTY_REQ_SERVICE, WAIT_TIMEOUT)
00098 s = rospy.ServiceProxy(EMPTY_REQ_SERVICE, EmptyReqSrv)
00099 resp = s()
00100 self.assertEquals(FAKE_SECRET, resp.fake_secret,
00101 "fake_secret fields is not set as expected")
00102 resp = s.call()
00103 self.assertEquals(FAKE_SECRET, resp.fake_secret,
00104 "fake_secret fields is not set as expected")
00105
00106 def test_empty(self):
00107 self._test(EMPTY_SERVICE, EmptySrv, EmptySrvRequest())
00108
00109 def test_return_empty(self):
00110 self._test(EMPTY_RETURN_SERVICE, EmptySrv, EmptySrvRequest())
00111 def test_empty_req(self):
00112 resp = self._test(EMPTY_REQ_SERVICE, EmptyReqSrv,
00113 EmptyReqSrvRequest())
00114 self.assertEquals(FAKE_SECRET, resp.fake_secret,
00115 "fake_secret fields is not set as expected")
00116 def test_empty_resp(self):
00117 self._test(EMPTY_RESP_SERVICE, EmptyRespSrv,
00118 EmptyRespSrvRequest(FAKE_SECRET))
00119
00120 if __name__ == '__main__':
00121 if '--service' in sys.argv:
00122 empty_service()
00123 else:
00124 rostest.run(PKG, 'rospy_empty_service', TestEmptyServiceClient, sys.argv)