mirror of
https://github.com/sprockets/sprockets.mixins.metrics.git
synced 2024-11-21 19:28:34 +00:00
Add StatsDCollector.close method.
This commit is contained in:
parent
d602430138
commit
bc02db0f48
3 changed files with 38 additions and 4 deletions
|
@ -8,6 +8,7 @@ Release History
|
|||
- Add configuration documentation
|
||||
- Exclude Tornado >6 (as-yet-unreleased version)
|
||||
- Add :func:`sprockets.mixins.metrics.statsd.get_client` function
|
||||
- Add :meth:`sprockets.mixins.metrics.statsd.StatsDCollector.close` method
|
||||
|
||||
`4.0.0`_ (06-Feb-2019)
|
||||
----------------------
|
||||
|
|
|
@ -113,6 +113,7 @@ class StatsDCollector:
|
|||
self._namespace = namespace
|
||||
self._prepend_metric_type = prepend_metric_type
|
||||
self._tcp_reconnect_sleep = 5
|
||||
self._closing = False
|
||||
|
||||
if protocol == 'tcp':
|
||||
self._tcp = True
|
||||
|
@ -137,11 +138,20 @@ class StatsDCollector:
|
|||
|
||||
async def _tcp_on_closed(self):
|
||||
"""Invoked when the socket is closed."""
|
||||
if self._closing:
|
||||
LOGGER.info('Statsd socket closed')
|
||||
else:
|
||||
LOGGER.warning('Not connected to statsd, connecting in %s seconds',
|
||||
self._tcp_reconnect_sleep)
|
||||
await asyncio.sleep(self._tcp_reconnect_sleep)
|
||||
self._sock = self._tcp_socket()
|
||||
|
||||
def close(self):
|
||||
"""Gracefully close the socket."""
|
||||
if not self._closing:
|
||||
self._closing = True
|
||||
self._sock.close()
|
||||
|
||||
def send(self, path, value, metric_type):
|
||||
"""Send a metric to Statsd.
|
||||
|
||||
|
|
23
tests.py
23
tests.py
|
@ -169,6 +169,29 @@ class TCPStatsdMetricCollectionTests(testing.AsyncHTTPTestCase):
|
|||
response = self.fetch('/', method='POST', body='')
|
||||
self.assertEqual(response.code, 204)
|
||||
|
||||
def test_that_client_closes_socket(self):
|
||||
response = self.fetch('/status_code')
|
||||
self.assertEqual(response.code, 200)
|
||||
|
||||
self.application.statsd.close()
|
||||
response = self.fetch('/status_code')
|
||||
self.assertEqual(response.code, 200)
|
||||
self.assertTrue(self.application.statsd._sock.closed())
|
||||
|
||||
def test_that_client_can_be_closed_multiple_times(self):
|
||||
response = self.fetch('/status_code')
|
||||
self.assertEqual(response.code, 200)
|
||||
|
||||
self.application.statsd.close()
|
||||
response = self.fetch('/status_code')
|
||||
self.assertEqual(response.code, 200)
|
||||
self.assertTrue(self.application.statsd._sock.closed())
|
||||
|
||||
self.application.statsd.close()
|
||||
response = self.fetch('/status_code')
|
||||
self.assertEqual(response.code, 200)
|
||||
self.assertTrue(self.application.statsd._sock.closed())
|
||||
|
||||
|
||||
class TCPStatsdConfigurationTests(testing.AsyncHTTPTestCase):
|
||||
|
||||
|
|
Loading…
Reference in a new issue