def test_discover_primary(self): # Disable background refresh. with client_knobs(heartbeat_frequency=999999): c = MockClient( standalones=[], members=['a:1', 'b:2', 'c:3'], mongoses=[], host='b:2', # Pass a secondary. replicaSet='rs') wait_until(lambda: len(c.nodes) == 3, 'connect') self.assertEqual(c.address, ('a', 1)) # Fail over. c.kill_host('a:1') c.mock_primary = 'b:2' c.close() self.assertEqual(0, len(c.nodes)) t = c._get_topology() t.select_servers(writable_server_selector) # Reconnect. self.assertEqual(c.address, ('b', 2)) # a:1 not longer in nodes. self.assertLess(len(c.nodes), 3) # c:3 is rediscovered. t.select_server_by_address(('c', 3))
def test_discover_primary(self): # Disable background refresh. with client_knobs(heartbeat_frequency=999999): c = MockClient( standalones=[], members=["a:1", "b:2", "c:3"], mongoses=[], host="b:2", # Pass a secondary. replicaSet="rs", ) wait_until(lambda: len(c.nodes) == 3, "connect") self.assertEqual(c.address, ("a", 1)) # Fail over. c.kill_host("a:1") c.mock_primary = "b:2" c.close() self.assertEqual(0, len(c.nodes)) t = c._get_topology() t.select_servers(writable_server_selector) # Reconnect. self.assertEqual(c.address, ("b", 2)) # a:1 not longer in nodes. self.assertLess(len(c.nodes), 3) # c:3 is rediscovered. t.select_server_by_address(("c", 3))
def test_max_write_batch_size(self): c = MockClient(standalones=[], members=['a:1', 'b:2'], mongoses=[], host='a:1', replicaSet='rs', connect=False) c.set_max_write_batch_size('a:1', 1) c.set_max_write_batch_size('b:2', 2) # Uses primary's max batch size. self.assertEqual(c.max_write_batch_size, 1) # b becomes primary. c.mock_primary = 'b:2' wait_until(lambda: c.max_write_batch_size == 2, 'update max_write_batch_size')
def test_max_write_batch_size(self): c = MockClient( standalones=[], members=['a:1', 'b:2'], mongoses=[], host='a:1', replicaSet='rs', connect=False) c.set_max_write_batch_size('a:1', 1) c.set_max_write_batch_size('b:2', 2) # Uses primary's max batch size. self.assertEqual(c.max_write_batch_size, 1) # b becomes primary. c.mock_primary = 'b:2' wait_until(lambda: c.max_write_batch_size == 2, 'update max_write_batch_size')
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', 1), c.address) self.assertEqual(3, len(c.nodes)) # Fail over. c.kill_host('a:1') c.mock_primary = 'b:2' # Force reconnect. c.close() c.db.collection.find_one() self.assertEqual(('b', 2), c.address) # a:1 is still in nodes. self.assertEqual(3, len(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.close() self.assertEqual(1000, c.max_write_batch_size) c.db.collection.find_one() # Connect. self.assertEqual(c.max_write_batch_size, 2)
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)