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,))