def __init__(self):

        self.services = {}

        self.service_manager = ServiceManager(
            registration_listeners=RegistrationListeners())
        self.topic_manager = rospy.topics._TopicManager()

        self.subs_internal = {}

        self.external_node = None
        self.external_tcpros = None
Beispiel #2
0
    def test_ServiceManager(self):
        class MockService(rospy.service._Service):
            def __init__(self, name, service_class, uri):
                rospy.service._Service.__init__(self, name, service_class)
                self.uri = uri

        from rospy.service import ServiceManager
        sm = ServiceManager()
        self.assertEquals({}, sm.map)
        try:
            sm.lock.acquire()
        finally:
            sm.lock.release()
        self.assertEquals([], sm.get_services())
        sm.unregister_all()
        self.assertEquals([], sm.get_services())

        # test actual registration
        mock = MockService('/serv', MockServiceClass, "rosrpc://uri:1")
        mock2 = MockService('/serv', MockServiceClass, "rosrpc://uri:2")

        sm.register('/serv', mock)
        self.assertEquals(mock, sm.get_service('/serv'))
        self.assertEquals([('/serv', mock.uri)], sm.get_services())
        try:
            sm.register('/serv', mock2)
            self.fail("duplicate reg should fail")
        except rospy.service.ServiceException:
            pass

        sm.unregister_all()
        self.assertEquals([], sm.get_services())

        #  - register two services
        sm.register('/serv', mock)
        sm.unregister('/serv', mock2)
        self.assertEquals(mock, sm.get_service('/serv'))

        sm.register('/serv2', mock2)
        self.assertEquals(mock, sm.get_service('/serv'))
        self.assertEquals(mock2, sm.get_service('/serv2'))
        self.assert_(('/serv', mock.uri) in sm.get_services())
        self.assert_(('/serv2', mock2.uri) in sm.get_services())

        sm.unregister('/serv', mock)
        self.assertEquals([('/serv2', mock2.uri)], sm.get_services())
        sm.unregister('/serv2', mock2)
        self.assertEquals([], sm.get_services())