Merge pull request #1261 from kk7ds/graphite-gaierror

Some graphite error handling improvements
This commit is contained in:
Paulus Schoutsen 2016-02-14 17:40:40 -08:00
commit 23b116803b
2 changed files with 15 additions and 2 deletions

View file

@ -98,6 +98,8 @@ class GraphiteFeeder(threading.Thread):
_LOGGER.debug('Sending to graphite: %s', lines)
try:
self._send_to_graphite('\n'.join(lines))
except socket.gaierror:
_LOGGER.error('Unable to connect to host %s', self._host)
except socket.error:
_LOGGER.exception('Failed to send data to graphite')
@ -108,7 +110,7 @@ class GraphiteFeeder(threading.Thread):
self._queue.task_done()
return
elif (event.event_type == EVENT_STATE_CHANGED and
'new_state' in event.data):
event.data.get('new_state')):
self._report_attributes(event.data['entity_id'],
event.data['new_state'])
self._queue.task_done()

View file

@ -134,6 +134,16 @@ class TestGraphite(unittest.TestCase):
actual = mock_send.call_args_list[0][0][0].split('\n')
self.assertEqual(sorted(expected), sorted(actual))
@mock.patch('time.time')
def test_send_to_graphite_errors(self, mock_time):
mock_time.return_value = 12345
state = ha.State('domain.entity', STATE_ON, {'foo': 1.0})
with mock.patch.object(self.gf, '_send_to_graphite') as mock_send:
mock_send.side_effect = socket.error
self.gf._report_attributes('entity', state)
mock_send.side_effect = socket.gaierror
self.gf._report_attributes('entity', state)
@mock.patch('socket.socket')
def test_send_to_graphite(self, mock_socket):
self.gf._send_to_graphite('foo')
@ -163,7 +173,8 @@ class TestGraphite(unittest.TestCase):
return self.gf._quit_object
elif runs:
runs.append(1)
return mock.MagicMock(event_type='somethingelse')
return mock.MagicMock(event_type='somethingelse',
data={'new_event': None})
else:
runs.append(1)
return event