From b273d94358d414a4ed0578469ecd68f966b3aedc Mon Sep 17 00:00:00 2001 From: "A. Jesse Jiryu Davis" Date: Wed, 23 Aug 2017 22:29:40 -0400 Subject: [PATCH] PYTHON-1299 - Use new wire version in tests --- test/pymongo_mocks.py | 8 +++++--- test/test_client.py | 8 ++++---- test/test_replica_set_client.py | 8 +++----- test/test_topology.py | 28 +++++++++++++++++++--------- test/utils_selection_tests.py | 2 ++ 5 files changed, 33 insertions(+), 21 deletions(-) diff --git a/test/pymongo_mocks.py b/test/pymongo_mocks.py index e5b4af1e4..b01afcdb5 100644 --- a/test/pymongo_mocks.py +++ b/test/pymongo_mocks.py @@ -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) diff --git a/test/test_client.py b/test/test_client.py index 87232bd91..966437ecd 100644 --- a/test/test_client.py +++ b/test/test_client.py @@ -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() diff --git a/test/test_replica_set_client.py b/test/test_replica_set_client.py index bff779870..ce2b92d52 100644 --- a/test/test_replica_set_client.py +++ b/test/test_replica_set_client.py @@ -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, diff --git a/test/test_topology.py b/test/test_topology.py index 70bb0bf26..f9328dfa4 100644 --- a/test/test_topology.py +++ b/test/test_topology.py @@ -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') diff --git a/test/utils_selection_tests.py b/test/utils_selection_tests.py index 72903f0cc..687ce87ca 100644 --- a/test/utils_selection_tests.py +++ b/test/utils_selection_tests.py @@ -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),