summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2023-04-13 21:05:19 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2023-04-13 21:05:19 +0000
commit4f104c9cb54e1429947d5bbf9375c86dcd07c0c9 (patch)
treebe73f959ef908e5374069893bb0e7d9d81517e6c /test
parentb066c45dc491716a4e34bdeb9a9726bcbc136fb5 (diff)
parent541ada1bad609b7f2052d0b02214387e242c6cc5 (diff)
downloadsqlalchemy-4f104c9cb54e1429947d5bbf9375c86dcd07c0c9.tar.gz
Merge "Add pool creation functions" into main
Diffstat (limited to 'test')
-rw-r--r--test/engine/test_parseconnect.py54
-rw-r--r--test/ext/asyncio/test_engine_py3k.py21
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.