Skip to content

Commit 250364f

Browse files
committed
PYTHON-2116 Sort servers by address in topology repr
1 parent 4398b4b commit 250364f

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

pymongo/topology_description.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,9 +289,12 @@ def has_writable_server(self):
289289
return self.has_readable_server(ReadPreference.PRIMARY)
290290

291291
def __repr__(self):
292+
# Sort the servers by address.
293+
servers = sorted(self._server_descriptions.values(),
294+
key=lambda sd: sd.address)
292295
return "<%s id: %s, topology_type: %s, servers: %r>" % (
293296
self.__class__.__name__, self._topology_settings._topology_id,
294-
self.topology_type_name, list(self._server_descriptions.values()))
297+
self.topology_type_name, servers)
295298

296299

297300
# If topology type is Unknown and we receive an ismaster response, what should

test/test_topology.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -624,13 +624,15 @@ def test_topology_repr(self):
624624
'ok': 1,
625625
'ismaster': True,
626626
'setName': 'rs',
627-
'hosts': ['a', 'b']})
627+
'hosts': ['a', 'c', 'b']})
628628
self.assertEqual(
629629
repr(t.description),
630630
"<TopologyDescription id: %s, "
631631
"topology_type: ReplicaSetWithPrimary, servers: ["
632632
"<ServerDescription ('a', 27017) server_type: RSPrimary, rtt: 0>, "
633633
"<ServerDescription ('b', 27017) server_type: Unknown,"
634+
" rtt: None>, "
635+
"<ServerDescription ('c', 27017) server_type: Unknown,"
634636
" rtt: None>]>" % (t._topology_id,))
635637

636638

0 commit comments

Comments
 (0)