Skip to content

Commit f4eb8f9

Browse files
authored
PYTHON-2966 Make MongoClient.event_listeners work as expected (mongodb#761)
1 parent d77cb67 commit f4eb8f9

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

pymongo/mongo_client.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,7 @@ def event_listeners(self):
895895
896896
See :mod:`~pymongo.monitoring` for details.
897897
"""
898-
return self._event_listeners.event_listeners
898+
return self._event_listeners.event_listeners()
899899

900900
@property
901901
def topology_description(self):

pymongo/monitoring.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -1318,10 +1318,11 @@ def enabled_for_cmap(self):
13181318

13191319
def event_listeners(self):
13201320
"""List of registered event listeners."""
1321-
return (self.__command_listeners[:],
1322-
self.__server_heartbeat_listeners[:],
1323-
self.__server_listeners[:],
1324-
self.__topology_listeners[:])
1321+
return (self.__command_listeners[:] +
1322+
self.__server_heartbeat_listeners[:] +
1323+
self.__server_listeners[:] +
1324+
self.__topology_listeners[:] +
1325+
self.__cmap_listeners)
13251326

13261327
def publish_command_start(self, command, database_name,
13271328
request_id, connection_id, op_id=None,

test/test_client.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
from bson.son import SON
3636
from bson.tz_util import utc
3737
import pymongo
38-
from pymongo import message, monitoring
38+
from pymongo import event_loggers, message, monitoring
3939
from pymongo.command_cursor import CommandCursor
4040
from pymongo.common import CONNECT_TIMEOUT, _UUID_REPRESENTATIONS
4141
from pymongo.compression_support import _HAVE_SNAPPY, _HAVE_ZSTD
@@ -463,6 +463,17 @@ def test_uri_security_options(self):
463463
with self.assertRaises(InvalidURI):
464464
MongoClient(ssl=True, tls=False)
465465

466+
def test_event_listeners(self):
467+
c = MongoClient(event_listeners=[], connect=False)
468+
self.assertEqual(c.event_listeners, [])
469+
listeners = [event_loggers.CommandLogger(),
470+
event_loggers.HeartbeatLogger(),
471+
event_loggers.ServerLogger(),
472+
event_loggers.TopologyLogger(),
473+
event_loggers.ConnectionPoolLogger()]
474+
c = MongoClient(event_listeners=listeners, connect=False)
475+
self.assertEqual(c.event_listeners, listeners)
476+
466477

467478
class TestClient(IntegrationTest):
468479
def test_multiple_uris(self):

test/test_session.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def tearDown(self):
104104
self.assertLessEqual(used_lsids, current_lsids)
105105

106106
def _test_ops(self, client, *ops):
107-
listener = client.event_listeners()[0][0]
107+
listener = client.event_listeners[0]
108108

109109
for f, args, kw in ops:
110110
with client.start_session() as s:
@@ -626,7 +626,7 @@ def test_command_cursor_limit_reached(self):
626626
lambda cursor: list(cursor))
627627

628628
def _test_unacknowledged_ops(self, client, *ops):
629-
listener = client.event_listeners()[0][0]
629+
listener = client.event_listeners[0]
630630

631631
for f, args, kw in ops:
632632
with client.start_session() as s:

0 commit comments

Comments
 (0)