From 250364f6087654f2987fde18e5a2a770f89c6a4f Mon Sep 17 00:00:00 2001 From: Shane Harvey Date: Thu, 23 Apr 2020 16:11:28 -0700 Subject: [PATCH] PYTHON-2116 Sort servers by address in topology repr --- pymongo/topology_description.py | 5 ++++- test/test_topology.py | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pymongo/topology_description.py b/pymongo/topology_description.py index 036288146..3529cfd09 100644 --- a/pymongo/topology_description.py +++ b/pymongo/topology_description.py @@ -289,9 +289,12 @@ class TopologyDescription(object): return self.has_readable_server(ReadPreference.PRIMARY) def __repr__(self): + # Sort the servers by address. + servers = sorted(self._server_descriptions.values(), + key=lambda sd: sd.address) return "<%s id: %s, topology_type: %s, servers: %r>" % ( self.__class__.__name__, self._topology_settings._topology_id, - self.topology_type_name, list(self._server_descriptions.values())) + self.topology_type_name, servers) # If topology type is Unknown and we receive an ismaster response, what should diff --git a/test/test_topology.py b/test/test_topology.py index f8217be2c..c4a785af6 100644 --- a/test/test_topology.py +++ b/test/test_topology.py @@ -624,13 +624,15 @@ class TestMultiServerTopology(TopologyTest): 'ok': 1, 'ismaster': True, 'setName': 'rs', - 'hosts': ['a', 'b']}) + 'hosts': ['a', 'c', 'b']}) self.assertEqual( repr(t.description), ", " ", " + "]>" % (t._topology_id,))