PYTHON-2116 Sort servers by address in topology repr

This commit is contained in:
Shane Harvey 2020-04-23 16:11:28 -07:00
parent 4398b4b7da
commit 250364f608
2 changed files with 7 additions and 2 deletions

View File

@ -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

View File

@ -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),
"<TopologyDescription id: %s, "
"topology_type: ReplicaSetWithPrimary, servers: ["
"<ServerDescription ('a', 27017) server_type: RSPrimary, rtt: 0>, "
"<ServerDescription ('b', 27017) server_type: Unknown,"
" rtt: None>, "
"<ServerDescription ('c', 27017) server_type: Unknown,"
" rtt: None>]>" % (t._topology_id,))