PYTHON-2966 Make MongoClient.event_listeners work as expected (#761)

This commit is contained in:
Shane Harvey 2021-10-22 14:43:20 -07:00 committed by GitHub
parent d77cb674b6
commit f4eb8f93fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 8 deletions

View File

@ -895,7 +895,7 @@ class MongoClient(common.BaseObject):
See :mod:`~pymongo.monitoring` for details.
"""
return self._event_listeners.event_listeners
return self._event_listeners.event_listeners()
@property
def topology_description(self):

View File

@ -1318,10 +1318,11 @@ class _EventListeners(object):
def event_listeners(self):
"""List of registered event listeners."""
return (self.__command_listeners[:],
self.__server_heartbeat_listeners[:],
self.__server_listeners[:],
self.__topology_listeners[:])
return (self.__command_listeners[:] +
self.__server_heartbeat_listeners[:] +
self.__server_listeners[:] +
self.__topology_listeners[:] +
self.__cmap_listeners)
def publish_command_start(self, command, database_name,
request_id, connection_id, op_id=None,

View File

@ -35,7 +35,7 @@ from bson.codec_options import CodecOptions, TypeEncoder, TypeRegistry
from bson.son import SON
from bson.tz_util import utc
import pymongo
from pymongo import message, monitoring
from pymongo import event_loggers, message, monitoring
from pymongo.command_cursor import CommandCursor
from pymongo.common import CONNECT_TIMEOUT, _UUID_REPRESENTATIONS
from pymongo.compression_support import _HAVE_SNAPPY, _HAVE_ZSTD
@ -463,6 +463,17 @@ class ClientUnitTest(unittest.TestCase):
with self.assertRaises(InvalidURI):
MongoClient(ssl=True, tls=False)
def test_event_listeners(self):
c = MongoClient(event_listeners=[], connect=False)
self.assertEqual(c.event_listeners, [])
listeners = [event_loggers.CommandLogger(),
event_loggers.HeartbeatLogger(),
event_loggers.ServerLogger(),
event_loggers.TopologyLogger(),
event_loggers.ConnectionPoolLogger()]
c = MongoClient(event_listeners=listeners, connect=False)
self.assertEqual(c.event_listeners, listeners)
class TestClient(IntegrationTest):
def test_multiple_uris(self):

View File

@ -104,7 +104,7 @@ class TestSession(IntegrationTest):
self.assertLessEqual(used_lsids, current_lsids)
def _test_ops(self, client, *ops):
listener = client.event_listeners()[0][0]
listener = client.event_listeners[0]
for f, args, kw in ops:
with client.start_session() as s:
@ -626,7 +626,7 @@ class TestSession(IntegrationTest):
lambda cursor: list(cursor))
def _test_unacknowledged_ops(self, client, *ops):
listener = client.event_listeners()[0][0]
listener = client.event_listeners[0]
for f, args, kw in ops:
with client.start_session() as s: