InfluxDB cleanups (#12903)
* Close influxdb on shutdown * Ignore inf as an influxdb value * Remove deprecated CONF_RETRY_QUEUE
This commit is contained in:
parent
81ba666db7
commit
d418355d4d
2 changed files with 37 additions and 3 deletions
|
@ -35,7 +35,6 @@ CONF_COMPONENT_CONFIG = 'component_config'
|
||||||
CONF_COMPONENT_CONFIG_GLOB = 'component_config_glob'
|
CONF_COMPONENT_CONFIG_GLOB = 'component_config_glob'
|
||||||
CONF_COMPONENT_CONFIG_DOMAIN = 'component_config_domain'
|
CONF_COMPONENT_CONFIG_DOMAIN = 'component_config_domain'
|
||||||
CONF_RETRY_COUNT = 'max_retries'
|
CONF_RETRY_COUNT = 'max_retries'
|
||||||
CONF_RETRY_QUEUE = 'retry_queue_limit'
|
|
||||||
|
|
||||||
DEFAULT_DATABASE = 'home_assistant'
|
DEFAULT_DATABASE = 'home_assistant'
|
||||||
DEFAULT_VERIFY_SSL = True
|
DEFAULT_VERIFY_SSL = True
|
||||||
|
@ -53,7 +52,7 @@ COMPONENT_CONFIG_SCHEMA_ENTRY = vol.Schema({
|
||||||
})
|
})
|
||||||
|
|
||||||
CONFIG_SCHEMA = vol.Schema({
|
CONFIG_SCHEMA = vol.Schema({
|
||||||
DOMAIN: vol.All(cv.deprecated(CONF_RETRY_QUEUE), vol.Schema({
|
DOMAIN: vol.All(vol.Schema({
|
||||||
vol.Optional(CONF_HOST): cv.string,
|
vol.Optional(CONF_HOST): cv.string,
|
||||||
vol.Inclusive(CONF_USERNAME, 'authentication'): cv.string,
|
vol.Inclusive(CONF_USERNAME, 'authentication'): cv.string,
|
||||||
vol.Inclusive(CONF_PASSWORD, 'authentication'): cv.string,
|
vol.Inclusive(CONF_PASSWORD, 'authentication'): cv.string,
|
||||||
|
@ -71,7 +70,6 @@ CONFIG_SCHEMA = vol.Schema({
|
||||||
vol.Optional(CONF_PORT): cv.port,
|
vol.Optional(CONF_PORT): cv.port,
|
||||||
vol.Optional(CONF_SSL): cv.boolean,
|
vol.Optional(CONF_SSL): cv.boolean,
|
||||||
vol.Optional(CONF_RETRY_COUNT, default=0): cv.positive_int,
|
vol.Optional(CONF_RETRY_COUNT, default=0): cv.positive_int,
|
||||||
vol.Optional(CONF_RETRY_QUEUE, default=20): cv.positive_int,
|
|
||||||
vol.Optional(CONF_DEFAULT_MEASUREMENT): cv.string,
|
vol.Optional(CONF_DEFAULT_MEASUREMENT): cv.string,
|
||||||
vol.Optional(CONF_OVERRIDE_MEASUREMENT): cv.string,
|
vol.Optional(CONF_OVERRIDE_MEASUREMENT): cv.string,
|
||||||
vol.Optional(CONF_TAGS, default={}):
|
vol.Optional(CONF_TAGS, default={}):
|
||||||
|
@ -222,6 +220,10 @@ def setup(hass, config):
|
||||||
json['fields'][key] = float(
|
json['fields'][key] = float(
|
||||||
RE_DECIMAL.sub('', new_value))
|
RE_DECIMAL.sub('', new_value))
|
||||||
|
|
||||||
|
# Infinity is not a valid float in InfluxDB
|
||||||
|
if (key, float("inf")) in json['fields'].items():
|
||||||
|
del json['fields'][key]
|
||||||
|
|
||||||
json['tags'].update(tags)
|
json['tags'].update(tags)
|
||||||
|
|
||||||
return json
|
return json
|
||||||
|
@ -234,6 +236,7 @@ def setup(hass, config):
|
||||||
"""Shut down the thread."""
|
"""Shut down the thread."""
|
||||||
instance.queue.put(None)
|
instance.queue.put(None)
|
||||||
instance.join()
|
instance.join()
|
||||||
|
influx.close()
|
||||||
|
|
||||||
hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, shutdown)
|
hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, shutdown)
|
||||||
|
|
||||||
|
|
|
@ -213,6 +213,37 @@ class TestInfluxDB(unittest.TestCase):
|
||||||
)
|
)
|
||||||
mock_client.return_value.write_points.reset_mock()
|
mock_client.return_value.write_points.reset_mock()
|
||||||
|
|
||||||
|
def test_event_listener_inf(self, mock_client):
|
||||||
|
"""Test the event listener for missing units."""
|
||||||
|
self._setup()
|
||||||
|
|
||||||
|
attrs = {'bignumstring': "9" * 999}
|
||||||
|
state = mock.MagicMock(
|
||||||
|
state=8, domain='fake', entity_id='fake.entity-id',
|
||||||
|
object_id='entity', attributes=attrs)
|
||||||
|
event = mock.MagicMock(data={'new_state': state}, time_fired=12345)
|
||||||
|
body = [{
|
||||||
|
'measurement': 'fake.entity-id',
|
||||||
|
'tags': {
|
||||||
|
'domain': 'fake',
|
||||||
|
'entity_id': 'entity',
|
||||||
|
},
|
||||||
|
'time': 12345,
|
||||||
|
'fields': {
|
||||||
|
'value': 8,
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
self.handler_method(event)
|
||||||
|
self.hass.data[influxdb.DOMAIN].block_till_done()
|
||||||
|
self.assertEqual(
|
||||||
|
mock_client.return_value.write_points.call_count, 1
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
mock_client.return_value.write_points.call_args,
|
||||||
|
mock.call(body)
|
||||||
|
)
|
||||||
|
mock_client.return_value.write_points.reset_mock()
|
||||||
|
|
||||||
def test_event_listener_states(self, mock_client):
|
def test_event_listener_states(self, mock_client):
|
||||||
"""Test the event listener against ignored states."""
|
"""Test the event listener against ignored states."""
|
||||||
self._setup()
|
self._setup()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue