@@ -645,6 +645,60 @@ def connection_error(self, *args, **kwargs):
645
645
with self .assertRaises (requests .exceptions .ConnectionError ):
646
646
cli .write_points (self .dummy_points )
647
647
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
+
648
702
def test_get_list_users (self ):
649
703
example_response = (
650
704
'{"results":[{"series":[{"columns":["user","admin"],'
0 commit comments