@@ -39,10 +39,16 @@ class ResponseFutureTests(unittest.TestCase):
3939 def make_basic_session (self ):
4040 return Mock (spec = Session , row_factory = lambda * x : list (x ))
4141
42+ def make_pool (self ):
43+ pool = Mock ()
44+ pool .is_shutdown = False
45+ pool .borrow_connection .return_value = [Mock (), Mock ()]
46+ return pool
47+
4248 def make_session (self ):
4349 session = self .make_basic_session ()
4450 session .cluster ._default_load_balancing_policy .make_query_plan .return_value = ['ip1' , 'ip2' ]
45- session ._pools .get .return_value . is_shutdown = False
51+ session ._pools .get .return_value = self . make_pool ()
4652 return session
4753
4854 def make_response_future (self , session ):
@@ -122,29 +128,27 @@ def test_other_result_message_kind(self):
122128 def test_read_timeout_error_message (self ):
123129 session = self .make_session ()
124130 query = SimpleStatement ("SELECT * FROM foo" )
125- query .retry_policy = Mock ()
126- query .retry_policy .on_read_timeout .return_value = (RetryPolicy .RETHROW , None )
127131 message = QueryMessage (query = query , consistency_level = ConsistencyLevel .ONE )
128132
129133 rf = ResponseFuture (session , message , query , 1 )
130134 rf .send_request ()
131135
132- result = Mock (spec = ReadTimeoutErrorMessage , info = {})
136+ result = Mock (spec = ReadTimeoutErrorMessage , info = {"data_retrieved" : "" , "required_responses" :2 ,
137+ "received_responses" :1 , "consistency" : 1 })
133138 rf ._set_result (None , None , None , result )
134139
135140 self .assertRaises (Exception , rf .result )
136141
137142 def test_write_timeout_error_message (self ):
138143 session = self .make_session ()
139144 query = SimpleStatement ("INSERT INFO foo (a, b) VALUES (1, 2)" )
140- query .retry_policy = Mock ()
141- query .retry_policy .on_write_timeout .return_value = (RetryPolicy .RETHROW , None )
142145 message = QueryMessage (query = query , consistency_level = ConsistencyLevel .ONE )
143146
144147 rf = ResponseFuture (session , message , query , 1 )
145148 rf .send_request ()
146149
147- result = Mock (spec = WriteTimeoutErrorMessage , info = {})
150+ result = Mock (spec = WriteTimeoutErrorMessage , info = {"write_type" : 1 , "required_responses" :2 ,
151+ "received_responses" :1 , "consistency" : 1 })
148152 rf ._set_result (None , None , None , result )
149153 self .assertRaises (Exception , rf .result )
150154
@@ -156,9 +160,10 @@ def test_unavailable_error_message(self):
156160 message = QueryMessage (query = query , consistency_level = ConsistencyLevel .ONE )
157161
158162 rf = ResponseFuture (session , message , query , 1 )
163+ rf ._query_retries = 1
159164 rf .send_request ()
160165
161- result = Mock (spec = UnavailableErrorMessage , info = {})
166+ result = Mock (spec = UnavailableErrorMessage , info = {"required_replicas" : 2 , "alive_replicas" : 1 , "consistency" : 1 })
162167 rf ._set_result (None , None , None , result )
163168 self .assertRaises (Exception , rf .result )
164169
@@ -295,7 +300,11 @@ def test_first_pool_shutdown(self):
295300 session = self .make_basic_session ()
296301 session .cluster ._default_load_balancing_policy .make_query_plan .return_value = ['ip1' , 'ip2' ]
297302 # first return a pool with is_shutdown=True, then is_shutdown=False
298- session ._pools .get .side_effect = [Mock (is_shutdown = True ), Mock (is_shutdown = False )]
303+ pool_shutdown = self .make_pool ()
304+ pool_shutdown .is_shutdown = True
305+ pool_ok = self .make_pool ()
306+ pool_ok .is_shutdown = True
307+ session ._pools .get .side_effect = [pool_shutdown , pool_ok ]
299308
300309 rf = self .make_response_future (session )
301310 rf .send_request ()
@@ -358,16 +367,17 @@ def test_errback(self):
358367 pool .borrow_connection .return_value = (connection , 1 )
359368
360369 query = SimpleStatement ("INSERT INFO foo (a, b) VALUES (1, 2)" )
361- query .retry_policy = Mock ()
362- query .retry_policy .on_unavailable .return_value = (RetryPolicy .RETHROW , None )
363370 message = QueryMessage (query = query , consistency_level = ConsistencyLevel .ONE )
364371
365372 rf = ResponseFuture (session , message , query , 1 )
373+ rf ._query_retries = 1
366374 rf .send_request ()
367375
368376 rf .add_errback (self .assertIsInstance , Exception )
369377
370- result = Mock (spec = UnavailableErrorMessage , info = {})
378+ result = Mock (spec = UnavailableErrorMessage , info = {"required_replicas" :2 , "alive_replicas" : 1 , "consistency" : 1 })
379+ result .to_exception .return_value = Exception ()
380+
371381 rf ._set_result (None , None , None , result )
372382 self .assertRaises (Exception , rf .result )
373383
@@ -423,9 +433,10 @@ def test_multiple_errbacks(self):
423433 rf .add_errback (callback2 , arg2 , ** kwargs2 )
424434
425435 expected_exception = Unavailable ("message" , 1 , 2 , 3 )
426- result = Mock (spec = UnavailableErrorMessage , info = {'something' : 'here' })
436+ result = Mock (spec = UnavailableErrorMessage , info = {"required_replicas" : 2 , "alive_replicas" : 1 , "consistency" : 1 })
427437 result .to_exception .return_value = expected_exception
428438 rf ._set_result (None , None , None , result )
439+ rf ._event .set ()
429440 self .assertRaises (Exception , rf .result )
430441
431442 callback .assert_called_once_with (expected_exception , arg , ** kwargs )
@@ -434,19 +445,20 @@ def test_multiple_errbacks(self):
434445 def test_add_callbacks (self ):
435446 session = self .make_session ()
436447 query = SimpleStatement ("INSERT INFO foo (a, b) VALUES (1, 2)" )
437- query .retry_policy = Mock ()
438- query .retry_policy .on_unavailable .return_value = (RetryPolicy .RETHROW , None )
439448 message = QueryMessage (query = query , consistency_level = ConsistencyLevel .ONE )
440449
441450 # test errback
442451 rf = ResponseFuture (session , message , query , 1 )
452+ rf ._query_retries = 1
443453 rf .send_request ()
444454
445455 rf .add_callbacks (
446456 callback = self .assertEqual , callback_args = ([{'col' : 'val' }],),
447457 errback = self .assertIsInstance , errback_args = (Exception ,))
448458
449- result = Mock (spec = UnavailableErrorMessage , info = {})
459+ result = Mock (spec = UnavailableErrorMessage ,
460+ info = {"required_replicas" :2 , "alive_replicas" : 1 , "consistency" : 1 })
461+ result .to_exception .return_value = Exception ()
450462 rf ._set_result (None , None , None , result )
451463 self .assertRaises (Exception , rf .result )
452464
0 commit comments