Skip to content

Commit 93bef6e

Browse files
committed
PYTHON-915 - More robust latency test.
1 parent d8f0e4c commit 93bef6e

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

test/test_replica_set_client.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import copy
2020
import datetime
21+
import random
2122
import signal
2223
import socket
2324
import sys
@@ -36,7 +37,7 @@
3637
from bson.tz_util import utc
3738
from pymongo.mongo_client import MongoClient
3839
from pymongo.read_preferences import ReadPreference
39-
from pymongo.member import SECONDARY
40+
from pymongo.member import SECONDARY, Member
4041
from pymongo.mongo_replica_set_client import MongoReplicaSetClient, Monitor
4142
from pymongo.mongo_replica_set_client import _partition_node, have_gevent
4243
from pymongo.database import Database
@@ -1028,18 +1029,24 @@ def test_schedule_refresh(self):
10281029
def test_zero_latency(self):
10291030
orig_interval = Monitor._refresh_interval
10301031
Monitor._refresh_interval = 1e9
1032+
ping_times = set()
1033+
# Generate unique ping times.
1034+
while len(ping_times) < len(self.hosts):
1035+
ping_times.add(random.random())
1036+
for ping_time, host in zip(ping_times, self.hosts):
1037+
Member._host_to_ping_time[host] = ping_time
10311038
try:
10321039
client = self._get_client()
10331040
host = read_from_which_host(
10341041
client, ReadPreference.NEAREST, None, 0)
1035-
# We'll assume all members have different latency.
10361042
for _ in range(5):
10371043
self.assertEqual(
10381044
host,
10391045
read_from_which_host(
10401046
client, ReadPreference.NEAREST, None, 0))
10411047
finally:
10421048
Monitor._refresh_interval = orig_interval
1049+
Member._host_to_ping_time.clear()
10431050

10441051
def test_pinned_member(self):
10451052
latency = 1000 * 1000

0 commit comments

Comments
 (0)