Skip to content

Commit d931f2d

Browse files
committed
Replaced sleep with wait_util in maxIdleTime/minPoolSize tests
1 parent 12bd4ac commit d931f2d

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

test/test_client.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ def test_max_idle_time_reaper(self):
191191
server = client._get_topology().select_server(any_server_selector)
192192
with server._pool.get_socket({}) as sock_info:
193193
pass
194-
time.sleep(1)
195194
self.assertEqual(1, len(server._pool.sockets))
196195
self.assertTrue(sock_info in server._pool.sockets)
197196

@@ -200,56 +199,62 @@ def test_max_idle_time_reaper(self):
200199
server = client._get_topology().select_server(any_server_selector)
201200
with server._pool.get_socket({}) as sock_info:
202201
pass
203-
time.sleep(2)
204202
self.assertEqual(1, len(server._pool.sockets))
205-
self.assertFalse(sock_info in server._pool.sockets)
203+
wait_until(lambda: sock_info not in server._pool.sockets,
204+
"reaper removes stale socket eventually")
205+
wait_until(lambda: 1 == len(server._pool.sockets),
206+
"reaper replaces stale socket with new one")
206207

207208
# Assert reaper has removed idle socket and NOT replaced it
208209
client = MongoClient(host, port, maxIdleTimeMS=.5)
209210
server = client._get_topology().select_server(any_server_selector)
210211
with server._pool.get_socket({}):
211212
pass
212-
time.sleep(1)
213-
self.assertEqual(0, len(server._pool.sockets))
213+
wait_until(
214+
lambda: 0 == len(server._pool.sockets),
215+
"stale socket reaped and new one NOT added to the pool")
214216

215217
def test_min_pool_size(self):
216218
with client_knobs(kill_cursor_frequency=.1):
217219
client = MongoClient(host, port)
218220
server = client._get_topology().select_server(any_server_selector)
219-
time.sleep(1)
220221
self.assertEqual(0, len(server._pool.sockets))
221222

222223
# Assert that pool started up at minPoolSize
223224
client = MongoClient(host, port, minPoolSize=10)
224225
server = client._get_topology().select_server(any_server_selector)
225-
time.sleep(1)
226-
self.assertEqual(10, len(server._pool.sockets))
226+
wait_until(lambda: 10 == len(server._pool.sockets),
227+
"pool initialized with 10 sockets")
227228

228229
# Assert that if a socket is closed, a new one takes its place
229230
with server._pool.get_socket({}) as sock_info:
230231
sock_info.close()
231-
time.sleep(1)
232-
self.assertEqual(10, len(server._pool.sockets))
232+
wait_until(lambda: 10 == len(server._pool.sockets),
233+
"a closed socket gets replaced from the pool")
233234
self.assertFalse(sock_info in server._pool.sockets)
234235

235236
def test_max_idle_time_checkout(self):
237+
# Use high frequency to test _get_socket_no_auth.
236238
with client_knobs(kill_cursor_frequency=99999999):
237239
client = MongoClient(host, port, maxIdleTimeMS=.5)
238-
time.sleep(1)
239240
server = client._get_topology().select_server(any_server_selector)
240241
with server._pool.get_socket({}) as sock_info:
241242
pass
242-
time.sleep(1)
243+
self.assertEqual(1, len(server._pool.sockets))
244+
time.sleep(1) # Sleep so that the socket becomes stale.
245+
243246
with server._pool.get_socket({}) as new_sock_info:
244247
self.assertNotEqual(sock_info, new_sock_info)
245248
self.assertEqual(1, len(server._pool.sockets))
246249
self.assertFalse(sock_info in server._pool.sockets)
247250
self.assertTrue(new_sock_info in server._pool.sockets)
248251

252+
# Test that sockets are reused if maxIdleTimeMS is not set.
249253
client = MongoClient(host, port)
250254
server = client._get_topology().select_server(any_server_selector)
251255
with server._pool.get_socket({}) as sock_info:
252256
pass
257+
self.assertEqual(1, len(server._pool.sockets))
253258
time.sleep(1)
254259
with server._pool.get_socket({}) as new_sock_info:
255260
self.assertEqual(sock_info, new_sock_info)

0 commit comments

Comments
 (0)