Skip to content

Commit a1ade45

Browse files
NoahStappblink1073
andauthored
PYTHON-4881 - Use OvertCommandListener wherever sensitive events are not needed (mongodb#1943)
Co-authored-by: Steven Silvester <[email protected]>
1 parent 1ae0c39 commit a1ade45

19 files changed

+61
-47
lines changed

test/asynchronous/test_change_stream.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
from test.utils import (
4040
AllowListEventListener,
4141
EventListener,
42+
OvertCommandListener,
4243
async_wait_until,
4344
)
4445

@@ -179,7 +180,7 @@ async def _wait_until():
179180

180181
@no_type_check
181182
async def test_try_next_runs_one_getmore(self):
182-
listener = EventListener()
183+
listener = OvertCommandListener()
183184
client = await self.async_rs_or_single_client(event_listeners=[listener])
184185
# Connect to the cluster.
185186
await client.admin.command("ping")
@@ -237,7 +238,7 @@ async def _wait_until():
237238

238239
@no_type_check
239240
async def test_batch_size_is_honored(self):
240-
listener = EventListener()
241+
listener = OvertCommandListener()
241242
client = await self.async_rs_or_single_client(event_listeners=[listener])
242243
# Connect to the cluster.
243244
await client.admin.command("ping")

test/asynchronous/test_collation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import functools
1919
import warnings
2020
from test.asynchronous import AsyncIntegrationTest, async_client_context, unittest
21-
from test.utils import EventListener
21+
from test.utils import EventListener, OvertCommandListener
2222
from typing import Any
2323

2424
from pymongo.asynchronous.helpers import anext
@@ -101,7 +101,7 @@ class TestCollation(AsyncIntegrationTest):
101101
@async_client_context.require_connection
102102
async def _setup_class(cls):
103103
await super()._setup_class()
104-
cls.listener = EventListener()
104+
cls.listener = OvertCommandListener()
105105
cls.client = await cls.unmanaged_async_rs_or_single_client(event_listeners=[cls.listener])
106106
cls.db = cls.client.pymongo_test
107107
cls.collation = Collation("en_US")

test/asynchronous/test_collection.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from test.utils import (
3737
IMPOSSIBLE_WRITE_CONCERN,
3838
EventListener,
39+
OvertCommandListener,
3940
async_get_pool,
4041
async_is_mongos,
4142
async_wait_until,
@@ -2116,7 +2117,7 @@ async def test_find_one_and(self):
21162117
self.assertEqual(4, (await c.find_one_and_update({}, {"$inc": {"i": 1}}, sort=sort))["j"])
21172118

21182119
async def test_find_one_and_write_concern(self):
2119-
listener = EventListener()
2120+
listener = OvertCommandListener()
21202121
db = (await self.async_single_client(event_listeners=[listener]))[self.db.name]
21212122
# non-default WriteConcern.
21222123
c_w0 = db.get_collection("test", write_concern=WriteConcern(w=0))

test/asynchronous/test_cursor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1601,7 +1601,7 @@ async def test_read_concern(self):
16011601
await anext(c.find_raw_batches())
16021602

16031603
async def test_monitoring(self):
1604-
listener = EventListener()
1604+
listener = OvertCommandListener()
16051605
client = await self.async_rs_or_single_client(event_listeners=[listener])
16061606
c = client.pymongo_test.test
16071607
await c.drop()
@@ -1768,7 +1768,7 @@ async def test_collation(self):
17681768
await anext(await self.db.test.aggregate_raw_batches([], collation=Collation("en_US")))
17691769

17701770
async def test_monitoring(self):
1771-
listener = EventListener()
1771+
listener = OvertCommandListener()
17721772
client = await self.async_rs_or_single_client(event_listeners=[listener])
17731773
c = client.pymongo_test.test
17741774
await c.drop()

test/asynchronous/test_grid_file.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
sys.path[0:0] = [""]
3535

36-
from test.utils import EventListener
36+
from test.utils import OvertCommandListener
3737

3838
from bson.objectid import ObjectId
3939
from gridfs.asynchronous.grid_file import (
@@ -810,7 +810,7 @@ async def test_survive_cursor_not_found(self):
810810
# Use 102 batches to cause a single getMore.
811811
chunk_size = 1024
812812
data = b"d" * (102 * chunk_size)
813-
listener = EventListener()
813+
listener = OvertCommandListener()
814814
client = await self.async_rs_or_single_client(event_listeners=[listener])
815815
db = client.pymongo_test
816816
async with AsyncGridIn(db.fs, chunk_size=chunk_size) as infile:

test/asynchronous/test_monitoring.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
)
3232
from test.utils import (
3333
EventListener,
34+
OvertCommandListener,
3435
async_wait_until,
3536
)
3637

@@ -54,7 +55,7 @@ class AsyncTestCommandMonitoring(AsyncIntegrationTest):
5455
@async_client_context.require_connection
5556
async def _setup_class(cls):
5657
await super()._setup_class()
57-
cls.listener = EventListener()
58+
cls.listener = OvertCommandListener()
5859
cls.client = await cls.unmanaged_async_rs_or_single_client(
5960
event_listeners=[cls.listener], retryWrites=False
6061
)
@@ -1100,11 +1101,13 @@ async def test_first_batch_helper(self):
11001101

11011102
@async_client_context.require_version_max(6, 1, 99)
11021103
async def test_sensitive_commands(self):
1103-
listeners = self.client._event_listeners
1104+
listener = EventListener()
1105+
client = await self.async_rs_or_single_client(event_listeners=[listener])
1106+
listeners = client._event_listeners
11041107

1105-
self.listener.reset()
1108+
listener.reset()
11061109
cmd = SON([("getnonce", 1)])
1107-
listeners.publish_command_start(cmd, "pymongo_test", 12345, await self.client.address, None) # type: ignore[arg-type]
1110+
listeners.publish_command_start(cmd, "pymongo_test", 12345, await client.address, None) # type: ignore[arg-type]
11081111
delta = datetime.timedelta(milliseconds=100)
11091112
listeners.publish_command_success(
11101113
delta,
@@ -1115,15 +1118,15 @@ async def test_sensitive_commands(self):
11151118
None,
11161119
database_name="pymongo_test",
11171120
)
1118-
started = self.listener.started_events[0]
1119-
succeeded = self.listener.succeeded_events[0]
1120-
self.assertEqual(0, len(self.listener.failed_events))
1121+
started = listener.started_events[0]
1122+
succeeded = listener.succeeded_events[0]
1123+
self.assertEqual(0, len(listener.failed_events))
11211124
self.assertIsInstance(started, monitoring.CommandStartedEvent)
11221125
self.assertEqual({}, started.command)
11231126
self.assertEqual("pymongo_test", started.database_name)
11241127
self.assertEqual("getnonce", started.command_name)
11251128
self.assertIsInstance(started.request_id, int)
1126-
self.assertEqual(await self.client.address, started.connection_id)
1129+
self.assertEqual(await client.address, started.connection_id)
11271130
self.assertIsInstance(succeeded, monitoring.CommandSucceededEvent)
11281131
self.assertEqual(succeeded.duration_micros, 100000)
11291132
self.assertEqual(started.command_name, succeeded.command_name)
@@ -1140,7 +1143,7 @@ class AsyncTestGlobalListener(AsyncIntegrationTest):
11401143
@async_client_context.require_connection
11411144
async def _setup_class(cls):
11421145
await super()._setup_class()
1143-
cls.listener = EventListener()
1146+
cls.listener = OvertCommandListener()
11441147
# We plan to call register(), which internally modifies _LISTENERS.
11451148
cls.saved_listeners = copy.deepcopy(monitoring._LISTENERS)
11461149
monitoring.register(cls.listener)

test/asynchronous/test_session.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from test.utils import (
3737
EventListener,
3838
ExceptionCatchingThread,
39+
OvertCommandListener,
3940
async_wait_until,
4041
wait_until,
4142
)
@@ -199,7 +200,7 @@ def test_implicit_sessions_checkout(self):
199200
lsid_set = set()
200201
failures = 0
201202
for _ in range(5):
202-
listener = EventListener()
203+
listener = OvertCommandListener()
203204
client = self.async_rs_or_single_client(event_listeners=[listener], maxPoolSize=1)
204205
cursor = client.db.test.find({})
205206
ops: List[Tuple[Callable, List[Any]]] = [

test/auth_oidc/test_auth_oidc.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
sys.path[0:0] = [""]
3232

3333
from test.unified_format import generate_test_classes
34-
from test.utils import EventListener
34+
from test.utils import EventListener, OvertCommandListener
3535

3636
from bson import SON
3737
from pymongo import MongoClient
@@ -348,7 +348,7 @@ def test_4_1_reauthenticate_succeeds(self):
348348
# Create a default OIDC client and add an event listener.
349349
# The following assumes that the driver does not emit saslStart or saslContinue events.
350350
# If the driver does emit those events, ignore/filter them for the purposes of this test.
351-
listener = EventListener()
351+
listener = OvertCommandListener()
352352
client = self.create_client(event_listeners=[listener])
353353

354354
# Perform a find operation that succeeds.
@@ -1021,7 +1021,7 @@ def fetch(self, _):
10211021

10221022
def test_4_4_speculative_authentication_should_be_ignored_on_reauthentication(self):
10231023
# Create an OIDC configured client that can listen for `SaslStart` commands.
1024-
listener = EventListener()
1024+
listener = OvertCommandListener()
10251025
client = self.create_client(event_listeners=[listener])
10261026

10271027
# Preload the *Client Cache* with a valid access token to enforce Speculative Authentication.

test/test_change_stream.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
from test.utils import (
4040
AllowListEventListener,
4141
EventListener,
42+
OvertCommandListener,
4243
wait_until,
4344
)
4445

@@ -177,7 +178,7 @@ def _wait_until():
177178

178179
@no_type_check
179180
def test_try_next_runs_one_getmore(self):
180-
listener = EventListener()
181+
listener = OvertCommandListener()
181182
client = self.rs_or_single_client(event_listeners=[listener])
182183
# Connect to the cluster.
183184
client.admin.command("ping")
@@ -235,7 +236,7 @@ def _wait_until():
235236

236237
@no_type_check
237238
def test_batch_size_is_honored(self):
238-
listener = EventListener()
239+
listener = OvertCommandListener()
239240
client = self.rs_or_single_client(event_listeners=[listener])
240241
# Connect to the cluster.
241242
client.admin.command("ping")

test/test_collation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import functools
1919
import warnings
2020
from test import IntegrationTest, client_context, unittest
21-
from test.utils import EventListener
21+
from test.utils import EventListener, OvertCommandListener
2222
from typing import Any
2323

2424
from pymongo.collation import (
@@ -101,7 +101,7 @@ class TestCollation(IntegrationTest):
101101
@client_context.require_connection
102102
def _setup_class(cls):
103103
super()._setup_class()
104-
cls.listener = EventListener()
104+
cls.listener = OvertCommandListener()
105105
cls.client = cls.unmanaged_rs_or_single_client(event_listeners=[cls.listener])
106106
cls.db = cls.client.pymongo_test
107107
cls.collation = Collation("en_US")

0 commit comments

Comments
 (0)