def test_set_pool(mocker): pool = mocker.Mock() connector = aiopg_connector.AiopgConnector() connector.set_pool(pool) assert connector._pool is pool
def test_set_pool_already_set(mocker): pool = mocker.Mock() connector = aiopg_connector.AiopgConnector() connector.set_pool(pool) with pytest.raises(exceptions.PoolAlreadySet): connector.set_pool(pool)
async def test_open_async_no_pool_specified(mock_async_create_pool): connector = aiopg_connector.AiopgConnector() await connector.open_async() assert connector._pool_externally_set is False mock_async_create_pool.assert_called_once_with(connector._pool_args)
async def test_open_async_pool_argument_specified(pool, mock_async_create_pool): connector = aiopg_connector.AiopgConnector() await connector.open_async(pool) assert connector._pool_externally_set is True mock_async_create_pool.assert_not_called() assert connector._pool == pool
async def test_listen_notify_pool_one_connection(mocker, caplog): pool = mocker.Mock(maxsize=1) connector = aiopg_connector.AiopgConnector() connector.set_pool(pool) caplog.clear() await connector.listen_notify(None, None) assert {e.action for e in caplog.records} == {"listen_notify_disabled"}
def _(**kwargs): json_dumps = kwargs.pop("json_dumps", None) json_loads = kwargs.pop("json_loads", None) connection_params.update(kwargs) connector = aiopg_connector.AiopgConnector( json_dumps=json_dumps, json_loads=json_loads, **connection_params ) connectors.append(connector) return connector
def schema_database(db_factory): dbname = "procrastinate_schema" db_factory(dbname=dbname) # apply the current procrastinate schema to the "procrastinate_schema" database connector = aiopg_connector.AiopgConnector(dbname=dbname) connector.open() schema_manager = schema.SchemaManager(connector=connector) schema_manager.apply_schema() connector.close() return dbname
async def test_destructor(connection_params, capsys): connector = aiopg_connector.AiopgConnector(**connection_params) await connector.execute_query_async("SELECT 1") assert len(connector._pool._free) == 1 # "del connector" causes a ResourceWarning from aiopg.Pool if the # AiopgConnector destructor doesn't close the connections managed # by the pool. Unfortunately there's no way to catch that warning, # even by using filterwarnings to turn it into an exception, as # Python ignores exceptions that occur in destructors del connector
def setup_db(): dbname = "procrastinate_test_template" db_create(dbname=dbname) connector = aiopg_connector.AiopgConnector(dbname=dbname) schema_manager = schema.SchemaManager(connector=connector) schema_manager.apply_schema() # We need to close the psycopg2 underlying connection synchronously connector.close() yield dbname db_drop(dbname=dbname)
def schema_database(db_factory, pum): dbname = "procrastinate_schema" db_factory(dbname=dbname) # apply the current procrastinate schema to procrastinate_schema connector = aiopg_connector.AiopgConnector(dbname=dbname) schema_manager = schema.SchemaManager(connector=connector) schema_manager.apply_schema() connector.close() # set the baseline version in procrastinate_schema # This db is as far as can be. pum("baseline", f"--pg_service {dbname} --baseline 999.999.999") return dbname
def test_wrap_exceptions_applied(method_name): connector = aiopg_connector.AiopgConnector() assert getattr(connector, method_name)._exceptions_wrapped is True
async def not_opened_aiopg_connector(connection_params): yield aiopg_connector_module.AiopgConnector(**connection_params)
def connector(): return aiopg_connector.AiopgConnector()
async def pg_connector(connection_params): connector = aiopg_connector.AiopgConnector(**connection_params) yield connector await connector.close_async()
def test_get_pool(): connector = aiopg_connector.AiopgConnector() with pytest.raises(exceptions.AppNotOpen): _ = connector.pool