async def test_pool_clear(mcache_params): pool = MemcachedPool(minsize=1, maxsize=5, **mcache_params) conn = await pool.acquire() await pool.release(conn) assert pool.size() == 1 await pool.clear() assert pool.size() == 0
async def test_bad_connection(mcache_params): pool = MemcachedPool(minsize=5, maxsize=1, **mcache_params) pool._host = "INVALID_HOST" assert pool.size() == 0 with pytest.raises(Exception): conn = await pool.acquire() assert isinstance(conn.reader, asyncio.StreamReader) assert isinstance(conn.writer, asyncio.StreamWriter) await pool.release(conn) assert pool.size() == 0
async def test_acquire_dont_create_new_connection_if_have_conn_in_pool( mcache_params, ): pool = MemcachedPool(minsize=1, maxsize=5, **mcache_params) assert pool.size() == 0 # Add a valid connection _conn = await pool._create_new_connection() pool._pool.append(_conn) assert pool.size() == 1 conn = await pool.acquire() assert conn is _conn assert pool.size() == 1
async def test_acquire_limit_maxsize(mcache_params): pool = MemcachedPool(minsize=1, maxsize=1, **mcache_params) assert pool.size() == 0 # Create up to max connections _conn = await pool.acquire() assert pool.size() == 1 await pool.release(_conn) async def acquire_wait_release(): conn = await pool.acquire() assert conn is _conn await asyncio.sleep(0.01) assert pool.size() == 1 await pool.release(conn) await asyncio.gather(*([acquire_wait_release()] * 50)) assert pool.size() == 1 assert pool.size() == 1
class Client: def __init__(self, pool_size=4): self._pool = MemcachedPool(minsize=pool_size, maxsize=pool_size, **mcache_params) @acquire async def acquire_wait_release(self, conn): assert self._pool.size() <= pool_size await asyncio.sleep(random.uniform(0.01, 0.02)) return "foo"
async def test_pool_creation(mcache_params): pool = MemcachedPool(minsize=1, maxsize=5, **mcache_params) assert pool.size() == 0 assert pool._pool_minsize == 1