def test_acquire_retry(self): pool = Pool(Mock(), max_connections=1) conn1 = pool.acquire() # make the pool reach the max connection gevent.spawn_later(0, pool.release, conn1) conn = pool.acquire(retry=1) eq_(conn, conn1)
def test_acquire_and_release(self): mock_factory = Mock() mock_conn1 = Mock() mock_conn2 = Mock() mock_factory.side_effect = [mock_conn1, mock_conn2] pool = Pool(mock_factory, initial_connections=0) eq_(0, pool.size) # acquire conn1 conn1 = pool.acquire() eq_(mock_conn1, conn1) eq_(1, pool.size) ok_(conn1 not in pool._pool) ok_(conn1 in pool._using) # acquire conn2 conn2 = pool.acquire() eq_(mock_conn2, conn2) eq_(2, pool.size) ok_(conn2 in pool._using) # release conn1 pool.release(conn1) ok_(conn1 in pool._pool) ok_(conn1 not in pool._using) # acquire conn1 again conn1_2 = pool.acquire() eq_(mock_conn1, conn1_2) eq_(2, pool.size) ok_(conn1_2 not in pool._pool) ok_(conn1_2 in pool._using) # release conn2 pool.release(conn2) ok_(conn2 in pool._pool) ok_(conn2 not in pool._using) # release conn1 pool.release(conn1_2) ok_(conn1_2 in pool._pool) ok_(conn1_2 not in pool._using)
def test_drop(self): pool = Pool(Mock()) conn1 = pool.acquire() pool.release(conn1) ok_(conn1 in pool._pool) pool.drop(conn1) ok_(conn1 not in pool._pool) conn1.close.assert_called_once_with()
def test_drop_closed_connection(self): pool = Pool(Mock()) conn1 = pool.acquire() conn1.is_connected = Mock() conn1.is_connected.return_value = False pool.release(conn1) ok_(conn1 in pool._pool) pool.drop(conn1) ok_(conn1 not in pool._pool) ok_(not conn1.close.called)
def test_drop_using_connection(self): pool = Pool(Mock()) conn1 = pool.acquire() pool.drop(conn1)
def test_max_connections(self): pool = Pool(Mock(), max_connections=1) for _ in range(2): pool.acquire()
def test_release_already_released_connection(self): pool = Pool(Mock()) conn1 = pool.acquire() pool.release(conn1) pool.release(conn1)