Esempio n. 1
0
    def test_aggregator_multiple_components(self):
        aggr = Aggregator(_get_metrics_one, _get_metrics_two, name='test')

        self.assertEqual(list(aggr.get_metrics()), [
            ('dummy', 'one', {'name': 'test'}),
            ('dummy', 'two', {'name': 'test'}),
        ])
Esempio n. 2
0
    def test_aggregator_add_multiple_tags(self):
        aggr = Aggregator(_get_metrics_one, name='test')

        aggr.add_tags(origin='localhost', time='now')

        self.assertEqual(list(aggr.get_metrics()), [
            ('dummy', 'one', {'name': 'test', 'origin': 'localhost', 'time': 'now'})
        ])
Esempio n. 3
0
    def __init__(self,
                 rpc=None,
                 registry=None,
                 events=None,
                 log_endpoint=None,
                 service_name=None,
                 debug=False,
                 pool=None,
                 worker=False,
                 metrics=None):
        if pool is None:
            pool = trace.Group()
        if metrics is None:
            metrics = Aggregator()
        super(ServiceContainer, self).__init__(error_hook=Hook('error_hook'),
                                               pool=pool,
                                               metrics=metrics)
        self.log_endpoint = log_endpoint
        self.backdoor_endpoint = None
        self.service_name = service_name
        self.fqdn = socket.getfqdn()
        self.worker = worker

        self.http_request_hook = Hook('http_request_hook')

        self.server = rpc
        self.service_registry = registry
        self.events = events

        self.installed_interfaces = {}
        self.installed_plugins = []

        self.debug = debug

        self.metrics.add_tags(service=self.service_name, host=self.fqdn)
        self.monitor = self.install(MonitorPusher,
                                    aggregator=self.metrics,
                                    endpoint=rpc.ip,
                                    interval=5)

        if self.service_registry:
            self.add_component(self.service_registry)

        if self.events:
            self.add_component(self.events)
            self.events.install(self)

        self.add_component(rpc)
        rpc.request_handler = self.handle_request

        self.install_interface(DefaultInterface,
                               name='lymph',
                               builtin=True,
                               version=get_lymph_version())
Esempio n. 4
0
 def add_service(self, **kwargs):
     port = self.next_port
     self.next_port += 1
     registry = self.discovery_hub.create_registry()
     container = MockServiceContainer(registry=registry,
                                      events=self.events,
                                      rpc=MockRPCServer(ip='127.0.0.1',
                                                        port=port,
                                                        mock_network=self),
                                      metrics=Aggregator(),
                                      **kwargs)
     self.service_containers[container.endpoint] = container
     container._mock_network = self
     return container
Esempio n. 5
0
    def __init__(self,
                 rpc=None,
                 registry=None,
                 events=None,
                 log_endpoint=None,
                 service_name=None,
                 debug=False,
                 monitor_endpoint=None,
                 pool=None):
        if pool is None:
            pool = trace.Group()
        super(ServiceContainer, self).__init__(error_hook=Hook('error_hook'),
                                               pool=pool)
        self.log_endpoint = log_endpoint
        self.backdoor_endpoint = None
        self.service_name = service_name
        self.fqdn = socket.getfqdn()

        self.server = rpc
        self.service_registry = registry
        self.event_system = events

        self.installed_interfaces = {}
        self.installed_plugins = []

        self.debug = debug
        self.monitor_endpoint = monitor_endpoint

        self.metrics_aggregator = Aggregator(self._get_metrics,
                                             service=self.service_name,
                                             host=self.fqdn)

        if self.service_registry:
            self.add_component(self.service_registry)

        if self.event_system:
            self.add_component(self.event_system)
            self.event_system.install(self)

        self.monitor = self.install(MonitorPusher,
                                    aggregator=self.metrics_aggregator,
                                    endpoint=self.monitor_endpoint,
                                    interval=5)

        self.add_component(rpc)
        rpc.request_handler = self.handle_request

        self.install_interface(DefaultInterface, name='lymph')
Esempio n. 6
0
 def create_container(self,
                      interface_cls=None,
                      interface_name=None,
                      events=None,
                      registry=None,
                      **kwargs):
     if not events:
         events = self.create_event_system(**kwargs)
     if not registry:
         registry = self.create_registry(**kwargs)
     container = ServiceContainer(events=events,
                                  registry=registry,
                                  rpc=ZmqRPCServer(),
                                  metrics=Aggregator(),
                                  **kwargs)
     interface = None
     if interface_cls:
         interface = container.install_interface(interface_cls,
                                                 name=interface_name)
     container.start()
     self._containers.append(container)
     return container, interface
Esempio n. 7
0
    def test_aggregator_one_component(self):
        aggr = Aggregator(_get_metrics_one, name='test')

        self.assertIn(('dummy', 'one', {
            'name': 'test'
        }), list(aggr.get_metrics()))