def test_as_app(self): """The agent class can be accessed as an application.""" app = BaseAgent().as_app() multi_service = IService(app, None) self.assertTrue(IServiceCollection.providedBy(multi_service)) services = list(multi_service) self.assertEqual(len(services), 1)
def inServiceHierarchy(svc, predicate): """ Find services in the service collection which satisfy the given predicate. """ for subsvc in svc.services: if IServiceCollection.providedBy(subsvc): for value in inServiceHierarchy(subsvc, predicate): yield value if predicate(subsvc): yield subsvc
def _scan_app_services(acc, root, prefix): vc = 0 for s in root: sname = s.name if not sname: vc += 1 sname = "$%d" % vc acc[prefix + sname] = s if IServiceCollection.providedBy(s): _scan_app_services(acc, s, sname + ".") return acc
def _flatten(self, name, service): klass = '%s.%s' % ( service.__module__, service.__class__.__name__) _service = {} _service['services'] = [] _service['multi'] = False if IServiceCollection.providedBy(service): _service['multi'] = True for sub, subservice in service.namedServices.items(): _service['services'].append(self._flatten(sub, subservice)) for k in ['port', 'running']: if hasattr(service, k): _service[k] = str(getattr(service, k)) _service['klass'] = klass _service['name'] = name _service['parent'] = service.parent.name return _service
def _flatten(self, name, agent): klass = '%s.%s' % (agent.__module__, agent.__class__.__name__) _agent = {} _agent['agents'] = [] _agent['multi'] = False if IServiceCollection.providedBy(agent): _agent['multi'] = True for sub, subagent in agent.namedAgents.items(): _agent['agents'].append( self._flatten(sub, subagent)) for k in ['port', 'running']: if hasattr(agent, k): _agent[k] = str(getattr(agent, k)) _agent['klass'] = klass _agent['name'] = name _agent['parent'] = '%s.%s' % ( agent.parent.__module__, agent.parent.__class__.__name__) return _agent