PYTHON-1299 - Use new wire version in tests

This commit is contained in:
A. Jesse Jiryu Davis 2017-08-23 22:29:40 -04:00
parent d99b026f8d
commit b273d94358
5 changed files with 33 additions and 21 deletions

View File

@ -144,9 +144,11 @@ class MockClient(MongoClient):
def mock_is_master(self, host):
"""Return mock ismaster response (a dict) and round trip time."""
min_wire_version, max_wire_version = self.mock_wire_versions.get(
host,
(common.MIN_WIRE_VERSION, common.MAX_WIRE_VERSION))
if host in self.mock_wire_versions:
min_wire_version, max_wire_version = self.mock_wire_versions[host]
else:
min_wire_version = common.MIN_SUPPORTED_WIRE_VERSION
max_wire_version = common.MAX_SUPPORTED_WIRE_VERSION
max_write_batch_size = self.mock_max_write_batch_sizes.get(
host, common.MAX_WRITE_BATCH_SIZE)

View File

@ -1364,8 +1364,8 @@ class TestMongoClientFailover(MockClientTest):
connect=False)
# Set host-specific information so we can test whether it is reset.
c.set_wire_version_range('a:1', 0, 1)
c.set_wire_version_range('b:2', 0, 2)
c.set_wire_version_range('a:1', 2, 6)
c.set_wire_version_range('b:2', 2, 7)
c._get_topology().select_servers(writable_server_selector)
wait_until(lambda: len(c.nodes) == 2, 'connect')
@ -1385,8 +1385,8 @@ class TestMongoClientFailover(MockClientTest):
server_b = c._get_topology().get_server_by_address(('b', 2))
sd_b = server_b.description
self.assertEqual(SERVER_TYPE.RSSecondary, sd_b.server_type)
self.assertEqual(0, sd_b.min_wire_version)
self.assertEqual(2, sd_b.max_wire_version)
self.assertEqual(2, sd_b.min_wire_version)
self.assertEqual(7, sd_b.max_wire_version)
def test_network_error_on_query(self):
callback = lambda client: client.db.collection.find_one()

View File

@ -331,13 +331,11 @@ class TestReplicaSetWireVersion(MockClientTest):
replicaSet='rs',
connect=False)
c.set_wire_version_range('a:1', 1, 5)
c.set_wire_version_range('b:2', 0, 1)
c.set_wire_version_range('c:3', 1, 2)
c.set_wire_version_range('a:1', 3, 7)
c.set_wire_version_range('b:2', 2, 3)
c.set_wire_version_range('c:3', 3, 4)
c.db.command('ismaster') # Connect.
c.set_wire_version_range('a:1', 2, 2)
# A secondary doesn't overlap with us.
c.set_wire_version_range('b:2',
MAX_SUPPORTED_WIRE_VERSION + 1,

View File

@ -174,35 +174,41 @@ class TestSingleServerTopology(TopologyTest):
'ok': 1,
'ismaster': True,
'hosts': ['a'],
'setName': 'rs'}),
'setName': 'rs',
'maxWireVersion': 6}),
(SERVER_TYPE.RSSecondary, {
'ok': 1,
'ismaster': False,
'secondary': True,
'hosts': ['a'],
'setName': 'rs'}),
'setName': 'rs',
'maxWireVersion': 6}),
(SERVER_TYPE.Mongos, {
'ok': 1,
'ismaster': True,
'msg': 'isdbgrid'}),
'msg': 'isdbgrid',
'maxWireVersion': 6}),
(SERVER_TYPE.RSArbiter, {
'ok': 1,
'ismaster': False,
'arbiterOnly': True,
'hosts': ['a'],
'setName': 'rs'}),
'setName': 'rs',
'maxWireVersion': 6}),
(SERVER_TYPE.Standalone, {
'ok': 1,
'ismaster': True}),
'ismaster': True,
'maxWireVersion': 6}),
# Slave.
(SERVER_TYPE.Standalone, {
'ok': 1,
'ismaster': False}),
'ismaster': False,
'maxWireVersion': 6}),
]:
t = create_mock_topology()
@ -250,7 +256,8 @@ class TestSingleServerTopology(TopologyTest):
class TestMonitor(Monitor):
def _check_with_socket(self, sock_info, metadata=None):
if available:
return IsMaster({'ok': 1}), round_trip_time
return (IsMaster({'ok': 1, 'maxWireVersion': 6}),
round_trip_time)
else:
raise AutoReconnect('mock monitor error')
@ -577,6 +584,7 @@ class TestMultiServerTopology(TopologyTest):
'ismaster': True,
'setName': 'rs',
'hosts': ['a', 'b'],
'maxWireVersion': 6,
'maxWriteBatchSize': 1})
got_ismaster(t, ('b', 27017), {
@ -585,6 +593,7 @@ class TestMultiServerTopology(TopologyTest):
'secondary': True,
'setName': 'rs',
'hosts': ['a', 'b'],
'maxWireVersion': 6,
'maxWriteBatchSize': 2})
# Uses primary's max batch size.
@ -596,6 +605,7 @@ class TestMultiServerTopology(TopologyTest):
'ismaster': True,
'setName': 'rs',
'hosts': ['a', 'b'],
'maxWireVersion': 6,
'maxWriteBatchSize': 2})
self.assertEqual(2, write_batch_size())
@ -629,7 +639,7 @@ class TestTopologyErrors(TopologyTest):
def _check_with_socket(self, sock_info, metadata=None):
ismaster_count[0] += 1
if ismaster_count[0] == 1:
return IsMaster({'ok': 1}), 0
return IsMaster({'ok': 1, 'maxWireVersion': 6}), 0
else:
raise AutoReconnect('mock monitor error')
@ -650,7 +660,7 @@ class TestTopologyErrors(TopologyTest):
def _check_with_socket(self, sock_info, metadata=None):
ismaster_count[0] += 1
if ismaster_count[0] in (1, 3):
return IsMaster({'ok': 1}), 0
return IsMaster({'ok': 1, 'maxWireVersion': 6}), 0
else:
raise AutoReconnect('mock monitor error')

View File

@ -116,6 +116,8 @@ def make_server_description(server, hosts):
if field in server:
ismaster_response[field] = server[field]
ismaster_response.setdefault('maxWireVersion', 6)
# Sets _last_update_time to now.
sd = ServerDescription(clean_node(server['address']),
IsMaster(ismaster_response),