Skip to content

Commit 1ccf555

Browse files
authored
PYTHON-5875 - Call setParameter on each mongos for test_connection_po… (#2906)
1 parent bde775e commit 1ccf555

2 files changed

Lines changed: 53 additions & 22 deletions

File tree

test/asynchronous/test_discovery_and_monitoring.py

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -467,26 +467,41 @@ async def test_connection_pool_is_not_cleared(self):
467467
# Create a client that listens to CMAP events, with maxConnecting=100.
468468
client = await self.async_rs_or_single_client(maxConnecting=100, event_listeners=[listener])
469469

470-
# Enable the ingress rate limiter.
471-
await client.admin.command(
472-
"setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=True
473-
)
474-
await client.admin.command("setParameter", 1, ingressConnectionEstablishmentRatePerSec=20)
475-
await client.admin.command(
476-
"setParameter", 1, ingressConnectionEstablishmentBurstCapacitySecs=1
477-
)
478-
await client.admin.command("setParameter", 1, ingressConnectionEstablishmentMaxQueueDepth=1)
470+
# setParameter needs to be set on each mongos in a sharded cluster
471+
if async_client_context.mongoses:
472+
admin_clients = [
473+
await self.async_single_client("{}:{}".format(*address))
474+
for address in async_client_context.mongoses
475+
]
476+
else:
477+
admin_clients = [client]
479478

480479
# Disable the ingress rate limiter on teardown.
481480
# Sleep for 1 second before disabling to avoid the rate limiter.
482481
async def teardown():
483482
await asyncio.sleep(1)
484-
await client.admin.command(
485-
"setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=False
486-
)
483+
for admin_client in admin_clients:
484+
await admin_client.admin.command(
485+
"setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=False
486+
)
487487

488488
self.addAsyncCleanup(teardown)
489489

490+
# Enable the ingress rate limiter.
491+
for admin_client in admin_clients:
492+
await admin_client.admin.command(
493+
"setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=True
494+
)
495+
await admin_client.admin.command(
496+
"setParameter", 1, ingressConnectionEstablishmentRatePerSec=20
497+
)
498+
await admin_client.admin.command(
499+
"setParameter", 1, ingressConnectionEstablishmentBurstCapacitySecs=1
500+
)
501+
await admin_client.admin.command(
502+
"setParameter", 1, ingressConnectionEstablishmentMaxQueueDepth=1
503+
)
504+
490505
# Make sure the collection has at least one document.
491506
await client.test.test.delete_many({})
492507
await client.test.test.insert_one({})

test/test_discovery_and_monitoring.py

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -465,24 +465,40 @@ def test_connection_pool_is_not_cleared(self):
465465
# Create a client that listens to CMAP events, with maxConnecting=100.
466466
client = self.rs_or_single_client(maxConnecting=100, event_listeners=[listener])
467467

468-
# Enable the ingress rate limiter.
469-
client.admin.command(
470-
"setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=True
471-
)
472-
client.admin.command("setParameter", 1, ingressConnectionEstablishmentRatePerSec=20)
473-
client.admin.command("setParameter", 1, ingressConnectionEstablishmentBurstCapacitySecs=1)
474-
client.admin.command("setParameter", 1, ingressConnectionEstablishmentMaxQueueDepth=1)
468+
# setParameter needs to be set on each mongos in a sharded cluster
469+
if client_context.mongoses:
470+
admin_clients = [
471+
self.single_client("{}:{}".format(*address)) for address in client_context.mongoses
472+
]
473+
else:
474+
admin_clients = [client]
475475

476476
# Disable the ingress rate limiter on teardown.
477477
# Sleep for 1 second before disabling to avoid the rate limiter.
478478
def teardown():
479479
time.sleep(1)
480-
client.admin.command(
481-
"setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=False
482-
)
480+
for admin_client in admin_clients:
481+
admin_client.admin.command(
482+
"setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=False
483+
)
483484

484485
self.addCleanup(teardown)
485486

487+
# Enable the ingress rate limiter.
488+
for admin_client in admin_clients:
489+
admin_client.admin.command(
490+
"setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=True
491+
)
492+
admin_client.admin.command(
493+
"setParameter", 1, ingressConnectionEstablishmentRatePerSec=20
494+
)
495+
admin_client.admin.command(
496+
"setParameter", 1, ingressConnectionEstablishmentBurstCapacitySecs=1
497+
)
498+
admin_client.admin.command(
499+
"setParameter", 1, ingressConnectionEstablishmentMaxQueueDepth=1
500+
)
501+
486502
# Make sure the collection has at least one document.
487503
client.test.test.delete_many({})
488504
client.test.test.insert_one({})

0 commit comments

Comments
 (0)