diff --git a/homeassistant/components/graphite.py b/homeassistant/components/graphite.py index a84d4bf8847..0b45714074a 100644 --- a/homeassistant/components/graphite.py +++ b/homeassistant/components/graphite.py @@ -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') diff --git a/tests/components/test_graphite.py b/tests/components/test_graphite.py index 34ad93a86c4..746e72f04c6 100644 --- a/tests/components/test_graphite.py +++ b/tests/components/test_graphite.py @@ -132,6 +132,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')