MCPcopy Index your code
hub / github.com/mongodb/mongo-python-driver / test_nearest

Method test_nearest

test/test_read_preferences.py:272–302  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

270 self.assertReadsFrom("secondary", read_preference=ReadPreference.SECONDARY_PREFERRED)
271
272 def test_nearest(self):
273 # With high localThresholdMS, expect to read from any
274 # member
275 c = self.rs_client(
276 read_preference=ReadPreference.NEAREST, localThresholdMS=10000
277 ) # 10 seconds
278
279 data_members = {self.client.primary} | self.client.secondaries
280
281 # This is a probabilistic test; track which members we've read from so
282 # far, and keep reading until we've used all the members or give up.
283 # Chance of using only 2 of 3 members 10k times if there's no bug =
284 # 3 * (2/3)**10000, very low.
285 used: set = set()
286 i = 0
287 while data_members.difference(used) and i < 10000:
288 address = self.read_from_which_host(c)
289 used.add(address)
290 i += 1
291
292 not_used = data_members.difference(used)
293 latencies = ", ".join(
294 "%s: %sms" % (server.description.address, server.description.round_trip_time)
295 for server in (c._get_topology()).select_servers(readable_server_selector, _Op.TEST)
296 )
297
298 self.assertFalse(
299 not_used,
300 "Expected to use primary and all secondaries for mode NEAREST,"
301 f" but didn't use {not_used}\nlatencies: {latencies}",
302 )
303
304
305class ReadPrefTester(MongoClient):

Callers

nothing calls this directly

Calls 6

rs_clientMethod · 0.80
addMethod · 0.80
read_from_which_hostMethod · 0.45
joinMethod · 0.45
select_serversMethod · 0.45
_get_topologyMethod · 0.45

Tested by

no test coverage detected