Skip to content

Commit 93b91e4

Browse files
committed
fixing indentation, adding tests to confirm connection behavior
1 parent 194ef13 commit 93b91e4

File tree

3 files changed

+61
-2
lines changed

3 files changed

+61
-2
lines changed

influxdb/client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,9 @@ def request(self, url, method='GET', params=None, data=None,
252252
if self._retries != 0:
253253
retry = _try < self._retries
254254

255+
else:
256+
raise requests.exceptions.ConnectionError
257+
255258
if 500 <= response.status_code < 600:
256259
raise InfluxDBServerError(response.content)
257260
elif response.status_code == expected_response_code:

influxdb/influxdb08/client.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,11 +248,13 @@ def request(self, url, method='GET', params=None, data=None,
248248
timeout=self._timeout
249249
)
250250
break
251-
except (requests.exceptions.ConnectionError,
252-
requests.exceptions.Timeout) as e:
251+
except (requests.exceptions.ConnectionError,
252+
requests.exceptions.Timeout) as e:
253253
_try += 1
254254
if self._retries != 0:
255255
retry = _try < self._retries
256+
else:
257+
raise requests.exceptions.ConnectionError
256258

257259
if response.status_code == expected_response_code:
258260
return response

influxdb/tests/client_test.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,60 @@ def connection_error(self, *args, **kwargs):
645645
with self.assertRaises(requests.exceptions.ConnectionError):
646646
cli.write_points(self.dummy_points)
647647

648+
@mock.patch('requests.Session.request')
649+
def test_random_request_retry(self, mock_request):
650+
"""Tests that a random number of connection errors will be handled"""
651+
652+
class CustomMock(object):
653+
def __init__(self, retries):
654+
self.i = 0
655+
self.retries = retries
656+
657+
def connection_error(self, *args, **kwargs):
658+
self.i += 1
659+
660+
if self.i < self.retries:
661+
raise requests.exceptions.ConnectionError
662+
else:
663+
r = requests.Response()
664+
r.status_code = 204
665+
return r
666+
667+
retries = random.randint(1, 100)
668+
mock_request.side_effect = CustomMock(retries).connection_error
669+
670+
cli = InfluxDBClient(database='db', retries=retries)
671+
cli.write_points(
672+
self.dummy_points
673+
)
674+
675+
@mock.patch('requests.Session.request')
676+
def test_random_request_retry_raises(self, mock_request):
677+
"""Tests that a random number of connection errors plus one will be not handled"""
678+
679+
class CustomMock(object):
680+
def __init__(self, retries):
681+
self.i = 0
682+
self.retries = retries
683+
684+
def connection_error(self, *args, **kwargs):
685+
self.i += 1
686+
687+
if self.i < self.retries + 1:
688+
raise requests.exceptions.ConnectionError
689+
else:
690+
r = requests.Response()
691+
r.status_code = 200
692+
return r
693+
694+
retries = random.randint(1, 100)
695+
mock_request.side_effect = CustomMock(retries).connection_error
696+
697+
cli = InfluxDBClient(database='db', retries=retries)
698+
699+
with self.assertRaises(requests.exceptions.ConnectionError):
700+
cli.write_points(self.dummy_points)
701+
648702
def test_get_list_users(self):
649703
example_response = (
650704
'{"results":[{"series":[{"columns":["user","admin"],'

0 commit comments

Comments
 (0)