def test_wire_version_mongos_ha(self): c = MockClient(standalones=[], members=[], mongoses=['a:1', 'b:2', 'c:3'], host='a:1,b:2,c:3', _connect=False) c.set_wire_version_range('a:1', 2, 5) c.set_wire_version_range('b:2', 2, 2) c.set_wire_version_range('c:3', 1, 1) c.db.collection.find_one() # Connect. # Which member did we use? used_host = '%s:%s' % (c.host, c.port) expected_min, expected_max = c.mock_wire_versions[used_host] self.assertEqual(expected_min, c.min_wire_version) self.assertEqual(expected_max, c.max_wire_version) c.set_wire_version_range('a:1', 0, 0) c.set_wire_version_range('b:2', 0, 0) c.set_wire_version_range('c:3', 0, 0) c.disconnect() c.db.collection.find_one() used_host = '%s:%s' % (c.host, c.port) expected_min, expected_max = c.mock_wire_versions[used_host] self.assertEqual(expected_min, c.min_wire_version) self.assertEqual(expected_max, c.max_wire_version)
def test_client(self): c = MockClient( standalones=[], members=['a:1', 'b:2', 'c:3'], mongoses=[], host='a:1,b:2,c:3', replicaSet='rs') # MongoClient connects to primary by default. self.assertEqual('a', c.host) self.assertEqual(1, c.port) # C is brought up as a standalone. c.mock_members.remove('c:3') c.mock_standalones.append('c:3') # Fail over. c.kill_host('a:1') c.kill_host('b:2') # Force reconnect. c.disconnect() try: c.db.collection.find_one() except ConfigurationError, e: self.assertTrue('not a member of replica set' in str(e))
def test_wire_version_mongos_ha(self): c = MockClient( standalones=[], members=[], mongoses=['a:1', 'b:2', 'c:3'], host='a:1,b:2,c:3', _connect=False) c.set_wire_version_range('a:1', 2, 5) c.set_wire_version_range('b:2', 2, 2) c.set_wire_version_range('c:3', 1, 1) c.db.collection.find_one() # Connect. # Which member did we use? used_host = '%s:%s' % (c.host, c.port) expected_min, expected_max = c.mock_wire_versions[used_host] self.assertEqual(expected_min, c.min_wire_version) self.assertEqual(expected_max, c.max_wire_version) c.set_wire_version_range('a:1', 0, 0) c.set_wire_version_range('b:2', 0, 0) c.set_wire_version_range('c:3', 0, 0) c.disconnect() c.db.collection.find_one() used_host = '%s:%s' % (c.host, c.port) expected_min, expected_max = c.mock_wire_versions[used_host] self.assertEqual(expected_min, c.min_wire_version) self.assertEqual(expected_max, c.max_wire_version)
def test_wire_version(self): c = MockClient( standalones=[], members=['a:1', 'b:2', 'c:3'], mongoses=[], host='b:2', # Pass a secondary. replicaSet='rs', _connect=False) c.set_wire_version_range('a:1', 1, 5) c.db.collection.find_one() # Connect. self.assertEqual(c.min_wire_version, 1) self.assertEqual(c.max_wire_version, 5) c.set_wire_version_range('a:1', 10, 11) c.disconnect() self.assertRaises(ConfigurationError, c.db.collection.find_one)
def test_client(self): c = MockClient(standalones=[], members=['a:1', 'b:2'], mongoses=[], host='a:1', replicaSet='rs') # MongoClient connects to primary by default. self.assertEqual('a', c.host) self.assertEqual(1, c.port) self.assertEqual(set([('a', 1), ('b', 2)]), c.nodes) # C is added. c.mock_members.append('c:3') c.mock_ismaster_hosts.append('c:3') c.disconnect() c.db.collection.find_one() self.assertEqual('a', c.host) self.assertEqual(1, c.port) self.assertEqual(set([('a', 1), ('b', 2), ('c', 3)]), c.nodes)
def test_client(self): c = MockClient( standalones=[], members=['a:1', 'b:2'], mongoses=[], host='a:1', replicaSet='rs') # MongoClient connects to primary by default. self.assertEqual('a', c.host) self.assertEqual(1, c.port) self.assertEqual(set([('a', 1), ('b', 2)]), c.nodes) # C is added. c.mock_members.append('c:3') c.mock_ismaster_hosts.append('c:3') c.disconnect() c.db.collection.find_one() self.assertEqual('a', c.host) self.assertEqual(1, c.port) self.assertEqual(set([('a', 1), ('b', 2), ('c', 3)]), c.nodes)
def test_discover_primary(self): c = MockClient( standalones=[], members=['a:1', 'b:2', 'c:3'], mongoses=[], host='b:2', # Pass a secondary. replicaSet='rs') self.assertEqual('a', c.host) self.assertEqual(1, c.port) self.assertEqual(3, len(c.nodes)) # Fail over. c.kill_host('a:1') c.mock_primary = 'b:2' # Force reconnect. c.disconnect() c.db.collection.find_one() self.assertEqual('b', c.host) self.assertEqual(2, c.port) # a:1 is still in nodes. self.assertEqual(3, len(c.nodes))
def test_max_wire_version(self): c = MockClient( standalones=[], members=['a:1', 'b:2', 'c:3'], mongoses=[], host='b:2', # Pass a secondary. replicaSet='rs', _connect=False) c.set_max_write_batch_size('a:1', 1) c.set_max_write_batch_size('b:2', 2) # Starts with default max batch size. self.assertEqual(1000, c.max_write_batch_size) c.db.collection.find_one() # Connect. # Uses primary's max batch size. self.assertEqual(c.max_write_batch_size, 1) # b becomes primary. c.mock_primary = 'b:2' c.disconnect() self.assertEqual(1000, c.max_write_batch_size) c.db.collection.find_one() # Connect. self.assertEqual(c.max_write_batch_size, 2)