diff --git a/test/asynchronous/test_discovery_and_monitoring.py b/test/asynchronous/test_discovery_and_monitoring.py index 6867a12060..6fc0e09a19 100644 --- a/test/asynchronous/test_discovery_and_monitoring.py +++ b/test/asynchronous/test_discovery_and_monitoring.py @@ -467,26 +467,41 @@ async def test_connection_pool_is_not_cleared(self): # Create a client that listens to CMAP events, with maxConnecting=100. client = await self.async_rs_or_single_client(maxConnecting=100, event_listeners=[listener]) - # Enable the ingress rate limiter. - await client.admin.command( - "setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=True - ) - await client.admin.command("setParameter", 1, ingressConnectionEstablishmentRatePerSec=20) - await client.admin.command( - "setParameter", 1, ingressConnectionEstablishmentBurstCapacitySecs=1 - ) - await client.admin.command("setParameter", 1, ingressConnectionEstablishmentMaxQueueDepth=1) + # setParameter needs to be set on each mongos in a sharded cluster + if async_client_context.mongoses: + admin_clients = [ + await self.async_single_client("{}:{}".format(*address)) + for address in async_client_context.mongoses + ] + else: + admin_clients = [client] # Disable the ingress rate limiter on teardown. # Sleep for 1 second before disabling to avoid the rate limiter. async def teardown(): await asyncio.sleep(1) - await client.admin.command( - "setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=False - ) + for admin_client in admin_clients: + await admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=False + ) self.addAsyncCleanup(teardown) + # Enable the ingress rate limiter. + for admin_client in admin_clients: + await admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=True + ) + await admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentRatePerSec=20 + ) + await admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentBurstCapacitySecs=1 + ) + await admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentMaxQueueDepth=1 + ) + # Make sure the collection has at least one document. await client.test.test.delete_many({}) await client.test.test.insert_one({}) diff --git a/test/test_discovery_and_monitoring.py b/test/test_discovery_and_monitoring.py index 1f2c21f9c1..612d52afbf 100644 --- a/test/test_discovery_and_monitoring.py +++ b/test/test_discovery_and_monitoring.py @@ -465,24 +465,40 @@ def test_connection_pool_is_not_cleared(self): # Create a client that listens to CMAP events, with maxConnecting=100. client = self.rs_or_single_client(maxConnecting=100, event_listeners=[listener]) - # Enable the ingress rate limiter. - client.admin.command( - "setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=True - ) - client.admin.command("setParameter", 1, ingressConnectionEstablishmentRatePerSec=20) - client.admin.command("setParameter", 1, ingressConnectionEstablishmentBurstCapacitySecs=1) - client.admin.command("setParameter", 1, ingressConnectionEstablishmentMaxQueueDepth=1) + # setParameter needs to be set on each mongos in a sharded cluster + if client_context.mongoses: + admin_clients = [ + self.single_client("{}:{}".format(*address)) for address in client_context.mongoses + ] + else: + admin_clients = [client] # Disable the ingress rate limiter on teardown. # Sleep for 1 second before disabling to avoid the rate limiter. def teardown(): time.sleep(1) - client.admin.command( - "setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=False - ) + for admin_client in admin_clients: + admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=False + ) self.addCleanup(teardown) + # Enable the ingress rate limiter. + for admin_client in admin_clients: + admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentRateLimiterEnabled=True + ) + admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentRatePerSec=20 + ) + admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentBurstCapacitySecs=1 + ) + admin_client.admin.command( + "setParameter", 1, ingressConnectionEstablishmentMaxQueueDepth=1 + ) + # Make sure the collection has at least one document. client.test.test.delete_many({}) client.test.test.insert_one({})