示例#1
0
    def test_combine_metric(self, _statsd):
        collector = metrics.Collector(prefix='test1')
        with self.assertRaises(ValueError):
            collector._combine_metric(None),

        collector = metrics.Collector(namespace='namespace', prefix='test1')
        self.assertEqual(
            collector._combine_metric('test2'),
            'namespace.test1.test2',
        )
        with self.assertRaises(ValueError):
            collector._combine_metric(None),

        collector = metrics.Collector(namespace='namespace')
        self.assertEqual(
            collector._combine_metric('test2'),
            'namespace.test2',
        )

        with mock.patch('mbq.metrics._service', 'default_namespace'):
            collector = metrics.Collector(namespace='namespace',
                                          prefix='test1')
            self.assertEqual(
                collector._combine_metric('test2'),
                'namespace.test1.test2',
            )
            collector = metrics.Collector(prefix='test1')
            self.assertEqual(
                collector._combine_metric('test2'),
                'default_namespace.test1.test2',
            )
示例#2
0
    def ready(self):
        from django.conf import settings
        from django.core.exceptions import ImproperlyConfigured
        from mbq import metrics
        from . import producers

        service = settings.ATOMIQ.get('service')
        env = settings.ATOMIQ.get('env')

        if not service:
            raise ImproperlyConfigured(
                'mbq.atomiq must be initialized with a service name.\n'
                'Please make sure you have an ATOMIQ constant with a "service" field '
                'in your Django settings.')
        if not env:
            raise ImproperlyConfigured(
                'mbq.atomiq must be initialized with an environment.\n'
                'Please make sure you have an ATOMIQ constant with a "env" field '
                'in your Django settings.')

        self.module._collector = metrics.Collector(
            namespace='mbq.atomiq',
            tags={
                'env': env,
                'service': service,
                'atomiq_service_name': service
            },
        )

        sns_producer = producers.SNSProducer()
        self.module.sns_publish = sns_producer.publish
        celery_producer = producers.CeleryProducer()
        self.module.celery_publish = celery_producer.publish
示例#3
0
    def test_combine_tags(self, _statsd):
        # start with constant tags
        self.assertEqual(
            metrics.Collector()._combine_tags(None),
            ['a:1', 'b:1'],
        )

        # layer on collector tags
        collector = metrics.Collector(tags={'a': '2', 'c': 1})
        self.assertEqual(
            collector._combine_tags(None),
            ['a:1', 'b:1', 'a:2', 'c:1'],
        )

        # layer on event tags
        self.assertEqual(
            collector._combine_tags({
                'a': '3',
                'd': 1
            }),
            ['a:1', 'b:1', 'a:2', 'c:1', 'a:3', 'd:1'],
        )
示例#4
0
    def test_event_title_and_tags(self, _statsd):
        collector = metrics.Collector(
            namespace='app_namespace',
            prefix='prefix',
            tags={'tag': 'collector_tag'},
        )
        collector.event('event', 'hi!', tags={'tag': 'event_tag'})

        _statsd.event.assert_called_with(
            'app_namespace.prefix.event',
            'hi!',
            alert_type=None,
            source_type_name='my apps',
            tags=['env:local', 'tag:collector_tag', 'tag:event_tag'])
示例#5
0
    def ready(self):
        env = settings.RANCH.get("env")
        service = settings.RANCH.get("service")

        if not all([env, service]):
            raise ImproperlyConfigured(
                "mbq.ranch must be configured with env and service parameters."
            )

        self.module._collector = metrics.Collector(
            namespace="mbq.ranch",
            tags={"env": env, "service": service, "mbq-service-name": service},
        )

        from . import signal_handlers  # noqa
示例#6
0
    def test_service_check_name_and_tags(self, _statsd):
        collector = metrics.Collector(
            prefix='prefix',
            namespace='namespace',
            tags={
                'constant': 1,
                't': 1
            },
        )
        collector.service_check('service_name', 1, tags={'t': 2})

        _statsd.service_check.assert_called_with(
            'namespace.prefix.service_name',
            1,
            tags=['env:local', 'constant:1', 't:1', 't:2'],
            message=None,
        )
示例#7
0
 def test_using_tuples_for_tags(self, _statsd):
     collector = metrics.Collector(tags={'a': 1})
     self.assertEqual(
         collector._combine_tags(('b:2', )),
         ['env:local', 'a:1', 'b:2'],
     )
示例#8
0
 def test_using_dictionaries_for_tags(self, _statsd):
     collector = metrics.Collector(tags={'a': 1})
     self.assertEqual(
         collector._combine_tags({'b': 2}),
         ['env:local', 'a:1', 'b:2'],
     )