Go to the documentation of this file.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 PKG = 'test_rospy'
00038 NAME = 'empty_service'
00039
00040 import sys, time
00041 import unittest
00042
00043 import rospy, rostest
00044 from test_rospy.srv import *
00045
00046 EMPTY_SERVICE = 'empty_service'
00047 EMPTY_RETURN_SERVICE = 'empty_return_service'
00048 EMPTY_REQ_SERVICE = 'empty_req_service'
00049 EMPTY_RESP_SERVICE = 'empty_resp_service'
00050
00051 FAKE_SECRET = 123456
00052
00053 WAIT_TIMEOUT = 10.0
00054
00055 def handle_empty(req):
00056 print "Returning empty"
00057 return EmptySrvResponse()
00058
00059 def handle_return_empty(req):
00060 "print returning empty list"
00061 return []
00062
00063
00064 def handle_empty_req(req):
00065 print "Returning fake_secret"
00066 return EmptyReqSrvResponse(FAKE_SECRET)
00067
00068 def handle_empty_resp(req):
00069 if req.fake_secret == FAKE_SECRET:
00070 print "Request validated, returning empty"
00071 return EmptyRespSrvResponse()
00072 else:
00073 print "Request did not validate, returning None"
00074
00075 def empty_service():
00076 rospy.init_node(NAME)
00077 s1 = rospy.Service(EMPTY_SERVICE, EmptySrv, handle_empty)
00078 s2 = rospy.Service(EMPTY_REQ_SERVICE, EmptyReqSrv, handle_empty_req)
00079 s3 = rospy.Service(EMPTY_RESP_SERVICE, EmptyRespSrv, handle_empty_resp)
00080 s4 = rospy.Service(EMPTY_RETURN_SERVICE, EmptySrv, handle_return_empty)
00081 rospy.spin()
00082
00083 class TestEmptyServiceClient(unittest.TestCase):
00084
00085 def _test(self, name, srv, req):
00086 rospy.wait_for_service(name, WAIT_TIMEOUT)
00087 s = rospy.ServiceProxy(name, srv)
00088 resp = s.call(req)
00089 self.assert_(resp is not None)
00090 return resp
00091
00092
00093 def test_call_empty(self):
00094 rospy.wait_for_service(EMPTY_REQ_SERVICE, WAIT_TIMEOUT)
00095 s = rospy.ServiceProxy(EMPTY_REQ_SERVICE, EmptyReqSrv)
00096 resp = s()
00097 self.assertEquals(FAKE_SECRET, resp.fake_secret,
00098 "fake_secret fields is not set as expected")
00099 resp = s.call()
00100 self.assertEquals(FAKE_SECRET, resp.fake_secret,
00101 "fake_secret fields is not set as expected")
00102
00103 def test_empty(self):
00104 self._test(EMPTY_SERVICE, EmptySrv, EmptySrvRequest())
00105
00106 def test_return_empty(self):
00107 self._test(EMPTY_RETURN_SERVICE, EmptySrv, EmptySrvRequest())
00108 def test_empty_req(self):
00109 resp = self._test(EMPTY_REQ_SERVICE, EmptyReqSrv,
00110 EmptyReqSrvRequest())
00111 self.assertEquals(FAKE_SECRET, resp.fake_secret,
00112 "fake_secret fields is not set as expected")
00113 def test_empty_resp(self):
00114 self._test(EMPTY_RESP_SERVICE, EmptyRespSrv,
00115 EmptyRespSrvRequest(FAKE_SECRET))
00116
00117 if __name__ == '__main__':
00118 if '--service' in sys.argv:
00119 empty_service()
00120 else:
00121 rostest.run(PKG, 'rospy_empty_service', TestEmptyServiceClient, sys.argv)