@@ -178,33 +178,37 @@ def test_find_and_get_more(self):
178
178
# Next batch. Exhausting the cursor could cause a getMore
179
179
# that returns id of 0 and no results.
180
180
next (cursor )
181
- results = self .listener .results
182
- started = results ['started' ][0 ]
183
- succeeded = results ['succeeded' ][0 ]
184
- self .assertEqual (0 , len (results ['failed' ]))
185
- self .assertTrue (
186
- isinstance (started , monitoring .CommandStartedEvent ))
187
- self .assertEqual (
188
- SON ([('getMore' , cursor_id ),
189
- ('collection' , 'test' ),
190
- ('batchSize' , 4 )]),
191
- started .command )
192
- self .assertEqual ('getMore' , started .command_name )
193
- self .assertEqual (self .client .address , started .connection_id )
194
- self .assertEqual ('pymongo_test' , started .database_name )
195
- self .assertTrue (isinstance (started .request_id , int ))
196
- self .assertTrue (
197
- isinstance (succeeded , monitoring .CommandSucceededEvent ))
198
- self .assertTrue (isinstance (succeeded .duration_micros , int ))
199
- self .assertEqual ('getMore' , succeeded .command_name )
200
- self .assertTrue (isinstance (succeeded .request_id , int ))
201
- self .assertEqual (cursor .address , succeeded .connection_id )
202
- expected_result = {
203
- 'cursor' : {'id' : cursor_id ,
204
- 'ns' : 'pymongo_test.test' ,
205
- 'nextBatch' : [{} for _ in range (4 )]},
206
- 'ok' : 1 }
207
- self .assertEqual (expected_result , succeeded .reply )
181
+ try :
182
+ results = self .listener .results
183
+ started = results ['started' ][0 ]
184
+ succeeded = results ['succeeded' ][0 ]
185
+ self .assertEqual (0 , len (results ['failed' ]))
186
+ self .assertTrue (
187
+ isinstance (started , monitoring .CommandStartedEvent ))
188
+ self .assertEqual (
189
+ SON ([('getMore' , cursor_id ),
190
+ ('collection' , 'test' ),
191
+ ('batchSize' , 4 )]),
192
+ started .command )
193
+ self .assertEqual ('getMore' , started .command_name )
194
+ self .assertEqual (self .client .address , started .connection_id )
195
+ self .assertEqual ('pymongo_test' , started .database_name )
196
+ self .assertTrue (isinstance (started .request_id , int ))
197
+ self .assertTrue (
198
+ isinstance (succeeded , monitoring .CommandSucceededEvent ))
199
+ self .assertTrue (isinstance (succeeded .duration_micros , int ))
200
+ self .assertEqual ('getMore' , succeeded .command_name )
201
+ self .assertTrue (isinstance (succeeded .request_id , int ))
202
+ self .assertEqual (cursor .address , succeeded .connection_id )
203
+ expected_result = {
204
+ 'cursor' : {'id' : cursor_id ,
205
+ 'ns' : 'pymongo_test.test' ,
206
+ 'nextBatch' : [{} for _ in range (4 )]},
207
+ 'ok' : 1 }
208
+ self .assertEqual (expected_result , succeeded .reply )
209
+ finally :
210
+ # Exhaust the cursor to avoid kill cursors.
211
+ tuple (cursor )
208
212
209
213
def test_find_with_explain (self ):
210
214
cmd = SON ([('explain' , SON ([('find' , 'test' ),
@@ -286,7 +290,8 @@ def test_find_options(self):
286
290
self .assertTrue (isinstance (succeeded .request_id , int ))
287
291
self .assertEqual (self .client .address , succeeded .connection_id )
288
292
finally :
289
- cursor .close ()
293
+ # Exhaust the cursor to avoid kill cursors.
294
+ tuple (cursor )
290
295
291
296
@client_context .require_version_min (2 , 6 , 0 )
292
297
def test_command_and_get_more (self ):
@@ -332,33 +337,37 @@ def test_command_and_get_more(self):
332
337
333
338
self .listener .results .clear ()
334
339
next (cursor )
335
- results = self .listener .results
336
- started = results ['started' ][0 ]
337
- succeeded = results ['succeeded' ][0 ]
338
- self .assertEqual (0 , len (results ['failed' ]))
339
- self .assertTrue (
340
- isinstance (started , monitoring .CommandStartedEvent ))
341
- self .assertEqual (
342
- SON ([('getMore' , cursor_id ),
343
- ('collection' , 'test' ),
344
- ('batchSize' , 4 )]),
345
- started .command )
346
- self .assertEqual ('getMore' , started .command_name )
347
- self .assertEqual (self .client .address , started .connection_id )
348
- self .assertEqual ('pymongo_test' , started .database_name )
349
- self .assertTrue (isinstance (started .request_id , int ))
350
- self .assertTrue (
351
- isinstance (succeeded , monitoring .CommandSucceededEvent ))
352
- self .assertTrue (isinstance (succeeded .duration_micros , int ))
353
- self .assertEqual ('getMore' , succeeded .command_name )
354
- self .assertTrue (isinstance (succeeded .request_id , int ))
355
- self .assertEqual (cursor .address , succeeded .connection_id )
356
- expected_result = {
357
- 'cursor' : {'id' : cursor_id ,
358
- 'ns' : 'pymongo_test.test' ,
359
- 'nextBatch' : [{'x' : 1 } for _ in range (4 )]},
360
- 'ok' : 1 }
361
- self .assertEqual (expected_result , succeeded .reply )
340
+ try :
341
+ results = self .listener .results
342
+ started = results ['started' ][0 ]
343
+ succeeded = results ['succeeded' ][0 ]
344
+ self .assertEqual (0 , len (results ['failed' ]))
345
+ self .assertTrue (
346
+ isinstance (started , monitoring .CommandStartedEvent ))
347
+ self .assertEqual (
348
+ SON ([('getMore' , cursor_id ),
349
+ ('collection' , 'test' ),
350
+ ('batchSize' , 4 )]),
351
+ started .command )
352
+ self .assertEqual ('getMore' , started .command_name )
353
+ self .assertEqual (self .client .address , started .connection_id )
354
+ self .assertEqual ('pymongo_test' , started .database_name )
355
+ self .assertTrue (isinstance (started .request_id , int ))
356
+ self .assertTrue (
357
+ isinstance (succeeded , monitoring .CommandSucceededEvent ))
358
+ self .assertTrue (isinstance (succeeded .duration_micros , int ))
359
+ self .assertEqual ('getMore' , succeeded .command_name )
360
+ self .assertTrue (isinstance (succeeded .request_id , int ))
361
+ self .assertEqual (cursor .address , succeeded .connection_id )
362
+ expected_result = {
363
+ 'cursor' : {'id' : cursor_id ,
364
+ 'ns' : 'pymongo_test.test' ,
365
+ 'nextBatch' : [{'x' : 1 } for _ in range (4 )]},
366
+ 'ok' : 1 }
367
+ self .assertEqual (expected_result , succeeded .reply )
368
+ finally :
369
+ # Exhaust the cursor to avoid kill cursors.
370
+ tuple (cursor )
362
371
363
372
def test_get_more_failure (self ):
364
373
address = self .client .address
@@ -459,8 +468,7 @@ def test_exhaust(self):
459
468
self .assertEqual (expected_result , succeeded .reply )
460
469
461
470
self .listener .results .clear ()
462
- for _ in cursor :
463
- pass
471
+ tuple (cursor )
464
472
results = self .listener .results
465
473
started = results ['started' ][0 ]
466
474
succeeded = results ['succeeded' ][0 ]
0 commit comments