Beispiel #1
0
    def test_custom_counter(self):
        sock = self.patched['shumway.socket.socket'].mock_instance

        mr = shumway.MetricRelay('key')
        mr.set_counter(
            'test',
            shumway.Counter('test',
                            'key',
                            attributes={'k': 'v'},
                            tags=['foo::bar']))
        mr.incr('test')

        mr.flush()

        metric = {
            'key': 'key',
            'attributes': {
                'what': 'test',
                'k': 'v'
            },
            'value': 1,
            'type': 'metric',
            'tags': ['foo::bar']
        }
        sock.sendto.assert_called_once_with(
            json.dumps(metric).encode('utf-8'), mr._ffwd_address)
Beispiel #2
0
    def test_send_via_http(self, time):
        time.time.return_value = 1
        requests = self.patched['shumway.requests'].mock_object

        mr = shumway.MetricRelay('key',
                                 ffwd_host="http://metrics.com",
                                 ffwd_port=8080,
                                 ffwd_path="/v1/api",
                                 use_http=True)
        mr.incr('test')
        mr.incr('test')
        mr.flush()

        metric_payload = {
            'points': [{
                'key': 'key',
                'tags': {
                    'what': 'test'
                },
                'resource': {},
                'value': 2,
                'timestamp': 1000
            }]
        }

        requests.post.assert_called_once_with("http://metrics.com:8080/v1/api",
                                              json=metric_payload)
Beispiel #3
0
    def test_emit(self):
        sock = self.patched['shumway.socket.socket'].mock_instance
        mr = shumway.MetricRelay('key')
        attr = {'pod': 'gew1'}
        tags = ['cool-metric']
        res = {'res1': 'value'}

        mr.emit('one_time_metric',
                22,
                attributes=attr,
                resources=res,
                tags=tags)

        metric = {
            'key': 'key',
            'attributes': {
                'what': 'one_time_metric',
                'pod': 'gew1'
            },
            'value': 22,
            'type': 'metric',
            'tags': ['cool-metric'],
            'resources': {
                'res1': 'value'
            }
        }
        sock.sendto.assert_called_once_with(
            json.dumps(metric).encode('utf-8'), mr._sender._ffwd_address)
Beispiel #4
0
    def test_creates_UDP_socket(self):
        sock = self.patched['shumway.socket.socket'].mock_object

        mr = shumway.MetricRelay('key')
        mr.incr('test')
        mr.flush()

        sock.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
Beispiel #5
0
    def test_custom_timer(self):
        timer = mock.Mock(shumway.Timer)

        mr = shumway.MetricRelay('key')
        mr.set_timer('key', timer)
        mr.flush()

        assert timer.flush.called
Beispiel #6
0
    def test_timer(self, timer_init):
        mr = shumway.MetricRelay('key')
        timer = mr.timer('foo-timer')

        mr.flush()

        timer_init.assert_called_once_with('foo-timer', key='key')
        assert timer.flush.called
Beispiel #7
0
    def _setup_client(self):
        key = self.klio_config.job_name
        ffwd_addr = ShumwayMetricsClient.DEFAULT_FFWD_ADDR

        if isinstance(self.shumway_config, dict):
            key = self.shumway_config.get("key", key)
            ffwd_addr = self.shumway_config.get("ffwd_addr", ffwd_addr)

        return shumway.MetricRelay(key, ffwd_addr)
Beispiel #8
0
    def test_getting_timer_twice(self, timer_init):
        mr = shumway.MetricRelay('key')
        timer = mr.timer('foo-timer')
        same_timer = mr.timer('foo-timer')

        mr.flush()

        self.assertEqual(timer, same_timer)
        timer_init.assert_called_once_with('foo-timer', key='key')
        assert timer.flush.called
Beispiel #9
0
    def test_timer_with_default_attributes(self, timer_init):
        attrs = dict(foo='bar')
        mr = shumway.MetricRelay('key', default_attributes=attrs)
        timer = mr.timer('foo-timer')

        mr.flush()

        timer_init.assert_called_once_with('foo-timer',
                                           key='key',
                                           attributes=attrs)
        assert timer.flush.called
Beispiel #10
0
    def test_custom_timer(self):
        sock = self.patched['shumway.socket.socket'].mock_instance

        timer = mock.Mock(shumway.Timer)
        timer.as_dict.return_value = {}

        mr = shumway.MetricRelay('key')
        mr.set_timer('key', timer)
        mr.flush()

        sock.sendto.assert_called_once()
Beispiel #11
0
    def test_timer(self, timer_init):
        timer_init.return_value.as_dict.return_value = {}
        sock = self.patched['shumway.socket.socket'].mock_instance

        mr = shumway.MetricRelay('key')
        mr.timer('foo-timer')
        mr.flush()

        timer_init.assert_called_once_with('foo-timer',
                                           key='key',
                                           attributes=None)
        sock.sendto.assert_called_once()
Beispiel #12
0
    def test_getting_timer_twice(self, timer_init):
        timer_init.return_value.as_dict.return_value = {}
        sock = self.patched['shumway.socket.socket'].mock_instance

        mr = shumway.MetricRelay('key')
        timer = mr.timer('foo-timer')
        same_timer = mr.timer('foo-timer')

        mr.flush()

        self.assertEqual(timer, same_timer)
        timer_init.assert_called_once_with('foo-timer',
                                           key='key',
                                           attributes=None,
                                           resources=None)
        sock.sendto.assert_called_once()
Beispiel #13
0
    def test_incr_and_send(self):
        sock = self.patched['shumway.socket.socket'].mock_instance

        mr = shumway.MetricRelay('key')
        mr.incr('test')
        mr.incr('test')
        mr.flush()

        metric = {
            'key': 'key',
            'attributes': {
                'what': 'test'
            },
            'value': 2,
            'type': 'metric',
            'tags': []
        }
        sock.sendto.assert_called_once_with(
            json.dumps(metric).encode('utf-8'), mr._ffwd_address)
Beispiel #14
0
    def test_incr_and_send_with_default_attributes(self):
        sock = self.patched['shumway.socket.socket'].mock_instance

        mr = shumway.MetricRelay('key', default_attributes=dict(foo='bar'))
        mr.incr('test')
        mr.incr('test')
        mr.flush()

        metric = {
            'key': 'key',
            'attributes': {
                'what': 'test',
                'foo': 'bar'
            },
            'value': 2,
            'type': 'metric',
            'tags': [],
            'resources': {}
        }
        sock.sendto.assert_called_once_with(
            json.dumps(metric).encode('utf-8'), mr._sender._ffwd_address)
Beispiel #15
0
 def test_in_operator(self):
     mr = shumway.MetricRelay('key')
     self.assertNotIn('foo', mr)
     mr.incr('foo')
     self.assertIn('foo', mr)
Beispiel #16
0
def _setup_metrics():
    return shumway.MetricRelay(
        app.config.get("METRICS_KEY"), app.config.get("METRICS_FFWD_HOST")
    )