diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2023-04-13 21:05:19 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2023-04-13 21:05:19 +0000 |
| commit | 4f104c9cb54e1429947d5bbf9375c86dcd07c0c9 (patch) | |
| tree | be73f959ef908e5374069893bb0e7d9d81517e6c /test | |
| parent | b066c45dc491716a4e34bdeb9a9726bcbc136fb5 (diff) | |
| parent | 541ada1bad609b7f2052d0b02214387e242c6cc5 (diff) | |
| download | sqlalchemy-4f104c9cb54e1429947d5bbf9375c86dcd07c0c9.tar.gz | |
Merge "Add pool creation functions" into main
Diffstat (limited to 'test')
| -rw-r--r-- | test/engine/test_parseconnect.py | 54 | ||||
| -rw-r--r-- | test/ext/asyncio/test_engine_py3k.py | 21 |
2 files changed, 75 insertions, 0 deletions
diff --git a/test/engine/test_parseconnect.py b/test/engine/test_parseconnect.py index f571b4bab..471201666 100644 --- a/test/engine/test_parseconnect.py +++ b/test/engine/test_parseconnect.py @@ -2,9 +2,11 @@ import copy from unittest.mock import call from unittest.mock import MagicMock from unittest.mock import Mock +from unittest.mock import patch import sqlalchemy as tsa from sqlalchemy import create_engine +from sqlalchemy import create_pool_from_url from sqlalchemy import engine_from_config from sqlalchemy import exc from sqlalchemy import pool @@ -13,9 +15,11 @@ from sqlalchemy.dialects import plugins from sqlalchemy.dialects import registry from sqlalchemy.engine.default import DefaultDialect import sqlalchemy.engine.url as url +from sqlalchemy.pool.impl import NullPool from sqlalchemy.testing import assert_raises from sqlalchemy.testing import assert_raises_message from sqlalchemy.testing import eq_ +from sqlalchemy.testing import fixture from sqlalchemy.testing import fixtures from sqlalchemy.testing import is_ from sqlalchemy.testing import is_false @@ -869,6 +873,56 @@ class CreateEngineTest(fixtures.TestBase): ne_(successes, 0, "No default drivers found.") +class CreatePoolTest(fixtures.TestBase): + @fixture + def mock_create(self): + with patch( + "sqlalchemy.engine.create.create_engine", + ) as p: + yield p + + def test_url_only(self, mock_create): + create_pool_from_url("sqlite://") + mock_create.assert_called_once_with("sqlite://", _initialize=False) + + def test_pool_args(self, mock_create): + create_pool_from_url( + "sqlite://", + logging_name="foo", + echo=True, + timeout=42, + recycle=22, + reset_on_return=True, + pre_ping=True, + use_lifo=True, + foo=99, + ) + mock_create.assert_called_once_with( + "sqlite://", + pool_logging_name="foo", + echo_pool=True, + pool_timeout=42, + pool_recycle=22, + pool_reset_on_return=True, + pool_pre_ping=True, + pool_use_lifo=True, + foo=99, + _initialize=False, + ) + + def test_pool_creation(self): + pp = create_pool_from_url("sqlite://") + engine_pool = create_engine("sqlite://").pool + eq_(pp.__class__, engine_pool.__class__) + pp = create_pool_from_url("sqlite://", pre_ping=True) + is_true(pp._pre_ping) + is_false(isinstance(pp, NullPool)) + + def test_pool_creation_custom_class(self): + pp = create_pool_from_url("sqlite://", poolclass=NullPool) + is_true(isinstance(pp, NullPool)) + + class TestRegNewDBAPI(fixtures.TestBase): def test_register_base(self): registry.register("mockdialect", __name__, "MockDialect") diff --git a/test/ext/asyncio/test_engine_py3k.py b/test/ext/asyncio/test_engine_py3k.py index 9511fed74..786f841ee 100644 --- a/test/ext/asyncio/test_engine_py3k.py +++ b/test/ext/asyncio/test_engine_py3k.py @@ -1,5 +1,6 @@ import asyncio import inspect as stdlib_inspect +from unittest.mock import patch from sqlalchemy import Column from sqlalchemy import create_engine @@ -18,6 +19,7 @@ from sqlalchemy import union_all from sqlalchemy.engine import cursor as _cursor from sqlalchemy.ext.asyncio import async_engine_from_config from sqlalchemy.ext.asyncio import create_async_engine +from sqlalchemy.ext.asyncio import create_async_pool_from_url from sqlalchemy.ext.asyncio import engine as _async_engine from sqlalchemy.ext.asyncio import exc as async_exc from sqlalchemy.ext.asyncio import exc as asyncio_exc @@ -707,6 +709,25 @@ class AsyncEngineTest(EngineFixture): assert engine.dialect.is_async is True +class AsyncCreatePoolTest(fixtures.TestBase): + @config.fixture + def mock_create(self): + with patch( + "sqlalchemy.ext.asyncio.engine._create_pool_from_url", + ) as p: + yield p + + def test_url_only(self, mock_create): + create_async_pool_from_url("sqlite://") + mock_create.assert_called_once_with("sqlite://", _is_async=True) + + def test_pool_args(self, mock_create): + create_async_pool_from_url("sqlite://", foo=99, echo=True) + mock_create.assert_called_once_with( + "sqlite://", foo=99, echo=True, _is_async=True + ) + + class AsyncEventTest(EngineFixture): """The engine events all run in their normal synchronous context. |
