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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy