3232
3333from pymongo .pool import Pool , PoolOptions , _closed
3434from test import host , port , SkipTest , unittest , client_context
35- from test .utils import get_pool , one , rs_or_single_client , connected , joinall
35+ from test .utils import (get_pool ,
36+ joinall ,
37+ delay ,
38+ one ,
39+ rs_or_single_client )
3640
3741
3842@client_context .require_connection
@@ -341,20 +345,25 @@ def test_no_wait_queue_multiple(self):
341345class TestPoolMaxSize (_TestPoolingBase ):
342346 def test_max_pool_size (self ):
343347 max_pool_size = 4
344- c = connected (rs_or_single_client (max_pool_size = max_pool_size ))
345- cx_pool = get_pool (c )
348+ c = rs_or_single_client (max_pool_size = max_pool_size )
349+ collection = c [DB ].test
350+
351+ # Need one document.
352+ collection .remove ()
353+ collection .insert ({})
346354
347355 # nthreads had better be much larger than max_pool_size to ensure that
348356 # max_pool_size sockets are actually required at some point in this
349357 # test's execution.
358+ cx_pool = get_pool (c )
350359 nthreads = 10
351360 threads = []
352361 lock = threading .Lock ()
353362 self .n_passed = 0
354363
355364 def f ():
356- for _ in range (N ):
357- c [ DB ]. test . find_one ()
365+ for _ in range (5 ):
366+ collection . find_one ({ '$where' : delay ( 0.1 )} )
358367 assert len (cx_pool .sockets ) <= max_pool_size
359368
360369 with lock :
@@ -371,17 +380,22 @@ def f():
371380 self .assertEqual (max_pool_size , cx_pool ._socket_semaphore .counter )
372381
373382 def test_max_pool_size_none (self ):
374- c = connected ( rs_or_single_client (max_pool_size = None ) )
375- cx_pool = get_pool ( c )
383+ c = rs_or_single_client (max_pool_size = None )
384+ collection = c [ DB ]. test
376385
386+ # Need one document.
387+ collection .remove ()
388+ collection .insert ({})
389+
390+ cx_pool = get_pool (c )
377391 nthreads = 10
378392 threads = []
379393 lock = threading .Lock ()
380394 self .n_passed = 0
381395
382396 def f ():
383- for _ in range (N ):
384- c [ DB ]. test . find_one ()
397+ for _ in range (5 ):
398+ collection . find_one ({ '$where' : delay ( 0.1 )} )
385399
386400 with lock :
387401 self .n_passed += 1
@@ -393,7 +407,7 @@ def f():
393407
394408 joinall (threads )
395409 self .assertEqual (nthreads , self .n_passed )
396- self .assertTrue (len (cx_pool .sockets ) >= 1 )
410+ self .assertTrue (len (cx_pool .sockets ) > 1 )
397411
398412 def test_max_pool_size_with_connection_failure (self ):
399413 # The pool acquires its semaphore before attempting to connect; ensure
0 commit comments