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)
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)
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)
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)
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
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
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)
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
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
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()
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()
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()
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)
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)
def test_in_operator(self): mr = shumway.MetricRelay('key') self.assertNotIn('foo', mr) mr.incr('foo') self.assertIn('foo', mr)
def _setup_metrics(): return shumway.MetricRelay( app.config.get("METRICS_KEY"), app.config.get("METRICS_FFWD_HOST") )