From a903e1bc9cbced11f1b397ec0f66f258afc6aa5d Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Tue, 4 Oct 2022 14:34:32 +0530 Subject: [PATCH 01/16] chore: auto-release --- .github/release-please.yml | 1 + .github/release-trigger.yml | 1 + 2 files changed, 2 insertions(+) create mode 100644 .github/release-trigger.yml diff --git a/.github/release-please.yml b/.github/release-please.yml index 4507ad05..466597e5 100644 --- a/.github/release-please.yml +++ b/.github/release-please.yml @@ -1 +1,2 @@ releaseType: python +handleGHRelease: true diff --git a/.github/release-trigger.yml b/.github/release-trigger.yml new file mode 100644 index 00000000..d4ca9418 --- /dev/null +++ b/.github/release-trigger.yml @@ -0,0 +1 @@ +enabled: true From 3d1386d359ccceaf57eb7f5d3bcc967dc0f8b77b Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Thu, 2 Mar 2023 22:10:58 +0530 Subject: [PATCH 02/16] lar --- .../sqlalchemy_spanner/sqlalchemy_spanner.py | 9 ++++- test/test_suite_13.py | 13 +++++++ test/test_suite_14.py | 35 ++++++++++++++----- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py index f72d95a1..6b14b59f 100644 --- a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py +++ b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py @@ -582,9 +582,16 @@ def create_connect_args(self, url): url.database, ) dist = pkg_resources.get_distribution("sqlalchemy-spanner") + options = {"user_agent": f"gl-{dist.project_name}/{dist.version}"} + options.update(url.query) + if "route_to_leader_enabled" in options: + if options["route_to_leader_enabled"].lower() == "false": + options["route_to_leader_enabled"] = False + else: + options["route_to_leader_enabled"] = True return ( [match.group("instance"), match.group("database"), match.group("project")], - {"user_agent": f"gl-{dist.project_name}/{dist.version}"}, + options, ) @engine_to_connection diff --git a/test/test_suite_13.py b/test/test_suite_13.py index 879e7964..39a7bc43 100644 --- a/test/test_suite_13.py +++ b/test/test_suite_13.py @@ -1593,6 +1593,19 @@ def test_user_agent(self): ) +class RouteToLeaderEnabledTest(SpannerSpecificTestBase): + """Check that SQLAlchemy dialect passes correct route_to_leader_enabled to Client.""" + + def test_route_to_leader(self): + engine = create_engine( + "spanner:///projects/project-id/instances/instance-id/databases/database-id?route_to_leader_enabled=False" + ) + with engine.connect() as connection: + assert ( + connection.connection.instance._client.route_to_leader_enabled == False + ) + + class ExecutionOptionsReadOnlyTest(fixtures.TestBase): """ Check that `execution_options()` method correctly diff --git a/test/test_suite_14.py b/test/test_suite_14.py index 8965eebc..89ca6567 100644 --- a/test/test_suite_14.py +++ b/test/test_suite_14.py @@ -68,15 +68,15 @@ from google.cloud import spanner_dbapi -from sqlalchemy.testing.suite.test_cte import * # noqa: F401, F403 -from sqlalchemy.testing.suite.test_ddl import * # noqa: F401, F403 -from sqlalchemy.testing.suite.test_dialect import * # noqa: F401, F403 -from sqlalchemy.testing.suite.test_insert import * # noqa: F401, F403 -from sqlalchemy.testing.suite.test_reflection import * # noqa: F401, F403 -from sqlalchemy.testing.suite.test_results import * # noqa: F401, F403 -from sqlalchemy.testing.suite.test_select import * # noqa: F401, F403 -from sqlalchemy.testing.suite.test_sequence import * # noqa: F401, F403 -from sqlalchemy.testing.suite.test_update_delete import * # noqa: F401, F403 +# from sqlalchemy.testing.suite.test_cte import * # noqa: F401, F403 +# from sqlalchemy.testing.suite.test_ddl import * # noqa: F401, F403 +# from sqlalchemy.testing.suite.test_dialect import * # noqa: F401, F403 +# from sqlalchemy.testing.suite.test_insert import * # noqa: F401, F403 +# from sqlalchemy.testing.suite.test_reflection import * # noqa: F401, F403 +# from sqlalchemy.testing.suite.test_results import * # noqa: F401, F403 +# from sqlalchemy.testing.suite.test_select import * # noqa: F401, F403 +# from sqlalchemy.testing.suite.test_sequence import * # noqa: F401, F403 +# from sqlalchemy.testing.suite.test_update_delete import * # noqa: F401, F403 from sqlalchemy.testing.suite.test_cte import CTETest as _CTETest from sqlalchemy.testing.suite.test_ddl import TableDDLTest as _TableDDLTest from sqlalchemy.testing.suite.test_ddl import ( @@ -1767,6 +1767,23 @@ def test_user_agent(self): ) +class RouteToLeaderEnabledTest(fixtures.TestBase): + """Check that SQLAlchemy dialect passes correct route_to_leader_enabled to Client.""" + + def setUp(self): + self._engine = create_engine( + "spanner:///projects/appdev-soda-spanner-staging/instances/?route_to_leader_enabled=False" + "sqlalchemy-dialect-test/databases/compliance-test" + ) + self._metadata = MetaData(bind=self._engine) + + def test_route_to_leader_enabled(self): + with self._engine.connect() as connection: + assert ( + connection.connection.instance._client.route_to_leader_enabled == False + ) + + class SimpleUpdateDeleteTest(_SimpleUpdateDeleteTest): """ SPANNER OVERRIDE: From 01e8ba645b1919f45b3dfbfcdd144fb6cffa0b01 Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Thu, 2 Mar 2023 22:14:17 +0530 Subject: [PATCH 03/16] docs --- google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py index 6b14b59f..d3d495cd 100644 --- a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py +++ b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py @@ -573,6 +573,9 @@ def create_connect_args(self, url): The given URL follows the style: `spanner:///projects/{project-id}/instances/{instance-id}/databases/{database-id}` + + If you want to diable route to leader add the following at the end of the url: + `spanner:///projects/{project-id}/instances/{instance-id}/databases/{database-id}?route_to_leader_enabled=False` """ match = re.match( ( From 0de9463791fb851eac64f042c18ece78db28a8f8 Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Thu, 2 Mar 2023 22:15:49 +0530 Subject: [PATCH 04/16] changes --- test/test_suite_14.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/test/test_suite_14.py b/test/test_suite_14.py index 89ca6567..faa88ee9 100644 --- a/test/test_suite_14.py +++ b/test/test_suite_14.py @@ -68,15 +68,15 @@ from google.cloud import spanner_dbapi -# from sqlalchemy.testing.suite.test_cte import * # noqa: F401, F403 -# from sqlalchemy.testing.suite.test_ddl import * # noqa: F401, F403 -# from sqlalchemy.testing.suite.test_dialect import * # noqa: F401, F403 -# from sqlalchemy.testing.suite.test_insert import * # noqa: F401, F403 -# from sqlalchemy.testing.suite.test_reflection import * # noqa: F401, F403 -# from sqlalchemy.testing.suite.test_results import * # noqa: F401, F403 -# from sqlalchemy.testing.suite.test_select import * # noqa: F401, F403 -# from sqlalchemy.testing.suite.test_sequence import * # noqa: F401, F403 -# from sqlalchemy.testing.suite.test_update_delete import * # noqa: F401, F403 +from sqlalchemy.testing.suite.test_cte import * # noqa: F401, F403 +from sqlalchemy.testing.suite.test_ddl import * # noqa: F401, F403 +from sqlalchemy.testing.suite.test_dialect import * # noqa: F401, F403 +from sqlalchemy.testing.suite.test_insert import * # noqa: F401, F403 +from sqlalchemy.testing.suite.test_reflection import * # noqa: F401, F403 +from sqlalchemy.testing.suite.test_results import * # noqa: F401, F403 +from sqlalchemy.testing.suite.test_select import * # noqa: F401, F403 +from sqlalchemy.testing.suite.test_sequence import * # noqa: F401, F403 +from sqlalchemy.testing.suite.test_update_delete import * # noqa: F401, F403 from sqlalchemy.testing.suite.test_cte import CTETest as _CTETest from sqlalchemy.testing.suite.test_ddl import TableDDLTest as _TableDDLTest from sqlalchemy.testing.suite.test_ddl import ( From 3191555b9330a012ece628e9b849272f868de5b7 Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Thu, 2 Mar 2023 23:13:24 +0530 Subject: [PATCH 05/16] lint --- test/test_suite_13.py | 10 +++++++--- test/test_suite_14.py | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/test/test_suite_13.py b/test/test_suite_13.py index 39a7bc43..31854529 100644 --- a/test/test_suite_13.py +++ b/test/test_suite_13.py @@ -1594,15 +1594,19 @@ def test_user_agent(self): class RouteToLeaderEnabledTest(SpannerSpecificTestBase): - """Check that SQLAlchemy dialect passes correct route_to_leader_enabled to Client.""" + """ + Check that SQLAlchemy dialect passes correct + route_to_leader_enabled to Client. + """ def test_route_to_leader(self): engine = create_engine( - "spanner:///projects/project-id/instances/instance-id/databases/database-id?route_to_leader_enabled=False" + "spanner:///projects/project-id/instances/instance-id/databases/database-id" + "?route_to_leader_enabled=False" ) with engine.connect() as connection: assert ( - connection.connection.instance._client.route_to_leader_enabled == False + connection.connection.instance._client.route_to_leader_enabled is False ) diff --git a/test/test_suite_14.py b/test/test_suite_14.py index faa88ee9..7b0c2fbd 100644 --- a/test/test_suite_14.py +++ b/test/test_suite_14.py @@ -1768,11 +1768,15 @@ def test_user_agent(self): class RouteToLeaderEnabledTest(fixtures.TestBase): - """Check that SQLAlchemy dialect passes correct route_to_leader_enabled to Client.""" + """ + Check that SQLAlchemy dialect passes correct + route_to_leader_enabled to Client. + """ def setUp(self): self._engine = create_engine( - "spanner:///projects/appdev-soda-spanner-staging/instances/?route_to_leader_enabled=False" + "spanner:///projects/appdev-soda-spanner-staging/instances/" + "?route_to_leader_enabled=False" "sqlalchemy-dialect-test/databases/compliance-test" ) self._metadata = MetaData(bind=self._engine) @@ -1780,7 +1784,7 @@ def setUp(self): def test_route_to_leader_enabled(self): with self._engine.connect() as connection: assert ( - connection.connection.instance._client.route_to_leader_enabled == False + connection.connection.instance._client.route_to_leader_enabled is False ) From d21ff6b0608b0acaf60419d4236f0f7552bff3d5 Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Thu, 2 Mar 2023 23:48:58 +0530 Subject: [PATCH 06/16] fix --- test/test_suite_14.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/test_suite_14.py b/test/test_suite_14.py index 7b0c2fbd..9d8110da 100644 --- a/test/test_suite_14.py +++ b/test/test_suite_14.py @@ -53,7 +53,7 @@ from sqlalchemy import LargeBinary from sqlalchemy import String from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.orm import relation +from sqlalchemy.orm import relationship from sqlalchemy.orm import Session from sqlalchemy.types import Integer from sqlalchemy.types import Numeric @@ -1671,7 +1671,7 @@ class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) name = Column(String(50)) - addresses = relation("Address", backref="user") + addresses = relationship("Address", backref="user") class Address(Base): __tablename__ = "addresses" @@ -1776,10 +1776,9 @@ class RouteToLeaderEnabledTest(fixtures.TestBase): def setUp(self): self._engine = create_engine( "spanner:///projects/appdev-soda-spanner-staging/instances/" - "?route_to_leader_enabled=False" "sqlalchemy-dialect-test/databases/compliance-test" + "?route_to_leader_enabled=False" ) - self._metadata = MetaData(bind=self._engine) def test_route_to_leader_enabled(self): with self._engine.connect() as connection: From 994f292daffeb1de9ba6c6320de1b8e52c90ca27 Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Fri, 3 Mar 2023 00:03:13 +0530 Subject: [PATCH 07/16] change --- noxfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index acc9c1ba..400fa0ab 100644 --- a/noxfile.py +++ b/noxfile.py @@ -192,7 +192,7 @@ def compliance_test_14(session): session.install("-e", ".[tracing]") session.run("python", "create_test_database.py") - session.install("sqlalchemy>=1.4") + session.install("sqlalchemy>=1.4,<2.0") session.run( "py.test", From cef0ae90141feeddec71f443c9686d22c5898709 Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Fri, 3 Mar 2023 00:04:09 +0530 Subject: [PATCH 08/16] change --- test/test_suite_14.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_suite_14.py b/test/test_suite_14.py index 9d8110da..cb4dd67d 100644 --- a/test/test_suite_14.py +++ b/test/test_suite_14.py @@ -53,7 +53,7 @@ from sqlalchemy import LargeBinary from sqlalchemy import String from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.orm import relationship +from sqlalchemy.orm import relation from sqlalchemy.orm import Session from sqlalchemy.types import Integer from sqlalchemy.types import Numeric @@ -1671,7 +1671,7 @@ class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) name = Column(String(50)) - addresses = relationship("Address", backref="user") + addresses = relation("Address", backref="user") class Address(Base): __tablename__ = "addresses" From 2809f305eb5bd866ffaf787068437f20a76a58b7 Mon Sep 17 00:00:00 2001 From: Astha Mohta <35952883+asthamohta@users.noreply.github.com> Date: Fri, 3 Mar 2023 02:47:24 +0530 Subject: [PATCH 09/16] Update sqlalchemy_spanner.py --- google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py index d3d495cd..249278a6 100644 --- a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py +++ b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py @@ -574,7 +574,7 @@ def create_connect_args(self, url): The given URL follows the style: `spanner:///projects/{project-id}/instances/{instance-id}/databases/{database-id}` - If you want to diable route to leader add the following at the end of the url: + If you want to disble route to leader add the following at the end of the url: `spanner:///projects/{project-id}/instances/{instance-id}/databases/{database-id}?route_to_leader_enabled=False` """ match = re.match( From d39261eeb9792f332437e48223018f108dcdf908 Mon Sep 17 00:00:00 2001 From: Astha Mohta <35952883+asthamohta@users.noreply.github.com> Date: Fri, 3 Mar 2023 02:48:19 +0530 Subject: [PATCH 10/16] Update sqlalchemy_spanner.py --- google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py index 249278a6..eda1c7a4 100644 --- a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py +++ b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py @@ -574,7 +574,7 @@ def create_connect_args(self, url): The given URL follows the style: `spanner:///projects/{project-id}/instances/{instance-id}/databases/{database-id}` - If you want to disble route to leader add the following at the end of the url: + If you want to disble route to leader add it to the url as following: `spanner:///projects/{project-id}/instances/{instance-id}/databases/{database-id}?route_to_leader_enabled=False` """ match = re.match( From f7c79b3474dead370c6e66958e33a36698f91f51 Mon Sep 17 00:00:00 2001 From: Astha Mohta <35952883+asthamohta@users.noreply.github.com> Date: Tue, 21 Mar 2023 10:48:50 +0530 Subject: [PATCH 11/16] Update noxfile.py --- noxfile.py | 1 + 1 file changed, 1 insertion(+) diff --git a/noxfile.py b/noxfile.py index 597ccb2a..74059744 100644 --- a/noxfile.py +++ b/noxfile.py @@ -193,6 +193,7 @@ def compliance_test_14(session): session.install("-e", ".[tracing]") session.run("pip", "install", "sqlalchemy>=1.4,<2.0", "--force-reinstall") session.run("python", "create_test_database.py") + session.run( "py.test", "--cov=google.cloud.sqlalchemy_spanner", From 7e898005e61736f0fe92e845580e9e4a66ba8b9e Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Wed, 9 Aug 2023 13:18:07 +0530 Subject: [PATCH 12/16] change --- .../sqlalchemy_spanner/sqlalchemy_spanner.py | 20 ++++++------------- test/test_suite_13.py | 5 +++-- test/test_suite_14.py | 16 +++++++-------- test/test_suite_20.py | 20 +++++++++++++++++++ 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py index 813759a1..90431429 100644 --- a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py +++ b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pkg_resources import re from alembic.ddl.base import ( @@ -304,7 +303,7 @@ def render_literal_value(self, value, type_): generate a SQL statement. """ raw = ["\\", "'", '"', "\n", "\t", "\r"] - if type(value) == str and any(single in value for single in raw): + if isinstance(value, str) and any(single in value for single in raw): value = 'r"""{}"""'.format(value) return value else: @@ -646,11 +645,13 @@ def create_connect_args(self, url): The given URL follows the style: `spanner:///projects/{project-id}/instances/{instance-id}/databases/{database-id}` - or `spanner:///projects/{project-id}/instances/{instance-id}`. For the latter, + or `spanner:///projects/{project-id}/instances/{instance-id}`. For the latter, database operations will be not be possible and if required a new engine with database-id set will need to be created. - If you want to disble route to leader add it to the url as following: - `spanner:///projects/{project-id}/instances/{instance-id}/databases/{database-id}?route_to_leader_enabled=False` + If you want to disble route to leader, pass options as following: + engine = create_engine( + "spanner+spanner:///projects/project-id/instances/instance-id/databases/database-id", + connect_args={'route_to_leader_enabled': False}) """ match = re.match( ( @@ -659,17 +660,8 @@ def create_connect_args(self, url): ), url.database, ) - dist = pkg_resources.get_distribution("sqlalchemy-spanner") - options = {"user_agent": f"gl-{dist.project_name}/{dist.version}"} - options.update(url.query) - if "route_to_leader_enabled" in options: - if options["route_to_leader_enabled"].lower() == "false": - options["route_to_leader_enabled"] = False - else: - options["route_to_leader_enabled"] = True return ( [match.group("instance"), match.group("database"), match.group("project")], - options, ) @engine_to_connection diff --git a/test/test_suite_13.py b/test/test_suite_13.py index 4212549a..6c430798 100644 --- a/test/test_suite_13.py +++ b/test/test_suite_13.py @@ -1658,8 +1658,9 @@ class RouteToLeaderEnabledTest(SpannerSpecificTestBase): def test_route_to_leader(self): engine = create_engine( - "spanner:///projects/project-id/instances/instance-id/databases/database-id" - "?route_to_leader_enabled=False" + "spanner:///projects/project-id/instances/instance-id/" + + "databases/database-id", + connect_args={"route_to_leader_enabled": False}, ) with engine.connect() as connection: assert ( diff --git a/test/test_suite_14.py b/test/test_suite_14.py index b74dc0a2..bc239776 100644 --- a/test/test_suite_14.py +++ b/test/test_suite_14.py @@ -1919,19 +1919,19 @@ def test_user_agent(self): class RouteToLeaderEnabledTest(fixtures.TestBase): """ + SPANNER TEST: + Check that SQLAlchemy dialect passes correct route_to_leader_enabled to Client. """ - def setUp(self): - self._engine = create_engine( - "spanner:///projects/appdev-soda-spanner-staging/instances/" - "sqlalchemy-dialect-test/databases/compliance-test" - "?route_to_leader_enabled=False" + def test_route_to_leader(self): + engine = create_engine( + "spanner:///projects/project-id/instances/instance-id/" + + "databases/database-id", + connect_args={"route_to_leader_enabled": False}, ) - - def test_route_to_leader_enabled(self): - with self._engine.connect() as connection: + with engine.connect() as connection: assert ( connection.connection.instance._client.route_to_leader_enabled is False ) diff --git a/test/test_suite_20.py b/test/test_suite_20.py index b4bf26fa..6c5789bd 100644 --- a/test/test_suite_20.py +++ b/test/test_suite_20.py @@ -3041,3 +3041,23 @@ def test_create_engine_wo_database(self): engine = create_engine(get_db_url().split("/database")[0]) with engine.connect() as connection: assert connection.connection.database is None + + +class RouteToLeaderEnabledTest(fixtures.TestBase): + """ + SPANNER TEST: + + Check that SQLAlchemy dialect passes correct + route_to_leader_enabled to Client. + """ + + def test_route_to_leader(self): + engine = create_engine( + "spanner:///projects/project-id/instances/instance-id/" + + "databases/database-id", + connect_args={"route_to_leader_enabled": False}, + ) + with engine.connect() as connection: + assert ( + connection.connection.instance._client.route_to_leader_enabled is False + ) From 17efd051a21c764b3080acee075908a994cb8971 Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Wed, 9 Aug 2023 13:22:31 +0530 Subject: [PATCH 13/16] change --- test/test_suite_13.py | 3 +-- test/test_suite_14.py | 3 +-- test/test_suite_20.py | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/test/test_suite_13.py b/test/test_suite_13.py index 6c430798..444a6106 100644 --- a/test/test_suite_13.py +++ b/test/test_suite_13.py @@ -1658,8 +1658,7 @@ class RouteToLeaderEnabledTest(SpannerSpecificTestBase): def test_route_to_leader(self): engine = create_engine( - "spanner:///projects/project-id/instances/instance-id/" - + "databases/database-id", + "spanner:///projects/project-id/instances/instance-id/databases/database-id", connect_args={"route_to_leader_enabled": False}, ) with engine.connect() as connection: diff --git a/test/test_suite_14.py b/test/test_suite_14.py index bc239776..649a841d 100644 --- a/test/test_suite_14.py +++ b/test/test_suite_14.py @@ -1927,8 +1927,7 @@ class RouteToLeaderEnabledTest(fixtures.TestBase): def test_route_to_leader(self): engine = create_engine( - "spanner:///projects/project-id/instances/instance-id/" - + "databases/database-id", + "spanner:///projects/project-id/instances/instance-id/databases/database-id", connect_args={"route_to_leader_enabled": False}, ) with engine.connect() as connection: diff --git a/test/test_suite_20.py b/test/test_suite_20.py index 6c5789bd..871891e1 100644 --- a/test/test_suite_20.py +++ b/test/test_suite_20.py @@ -3053,8 +3053,7 @@ class RouteToLeaderEnabledTest(fixtures.TestBase): def test_route_to_leader(self): engine = create_engine( - "spanner:///projects/project-id/instances/instance-id/" - + "databases/database-id", + "spanner:///projects/project-id/instances/instance-id/databases/database-id", connect_args={"route_to_leader_enabled": False}, ) with engine.connect() as connection: From c9c7e9091c44a6deee4d66c4521b9fb874822342 Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Wed, 9 Aug 2023 13:23:42 +0530 Subject: [PATCH 14/16] change --- google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py index 90431429..dbccb2ec 100644 --- a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py +++ b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import pkg_resources import re from alembic.ddl.base import ( @@ -660,8 +661,10 @@ def create_connect_args(self, url): ), url.database, ) + dist = pkg_resources.get_distribution("sqlalchemy-spanner") return ( [match.group("instance"), match.group("database"), match.group("project")], + {"user_agent": f"gl-{dist.project_name}/{dist.version}"}, ) @engine_to_connection From 421cec4dd3a0e3dfef9e3f7ffe4275a0f8ab22ec Mon Sep 17 00:00:00 2001 From: Astha Mohta Date: Wed, 9 Aug 2023 14:54:47 +0530 Subject: [PATCH 15/16] change --- test/test_suite_13.py | 3 ++- test/test_suite_14.py | 3 ++- test/test_suite_20.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/test/test_suite_13.py b/test/test_suite_13.py index 444a6106..6c430798 100644 --- a/test/test_suite_13.py +++ b/test/test_suite_13.py @@ -1658,7 +1658,8 @@ class RouteToLeaderEnabledTest(SpannerSpecificTestBase): def test_route_to_leader(self): engine = create_engine( - "spanner:///projects/project-id/instances/instance-id/databases/database-id", + "spanner:///projects/project-id/instances/instance-id/" + + "databases/database-id", connect_args={"route_to_leader_enabled": False}, ) with engine.connect() as connection: diff --git a/test/test_suite_14.py b/test/test_suite_14.py index 649a841d..bc239776 100644 --- a/test/test_suite_14.py +++ b/test/test_suite_14.py @@ -1927,7 +1927,8 @@ class RouteToLeaderEnabledTest(fixtures.TestBase): def test_route_to_leader(self): engine = create_engine( - "spanner:///projects/project-id/instances/instance-id/databases/database-id", + "spanner:///projects/project-id/instances/instance-id/" + + "databases/database-id", connect_args={"route_to_leader_enabled": False}, ) with engine.connect() as connection: diff --git a/test/test_suite_20.py b/test/test_suite_20.py index 871891e1..6c5789bd 100644 --- a/test/test_suite_20.py +++ b/test/test_suite_20.py @@ -3053,7 +3053,8 @@ class RouteToLeaderEnabledTest(fixtures.TestBase): def test_route_to_leader(self): engine = create_engine( - "spanner:///projects/project-id/instances/instance-id/databases/database-id", + "spanner:///projects/project-id/instances/instance-id/" + + "databases/database-id", connect_args={"route_to_leader_enabled": False}, ) with engine.connect() as connection: From d10b5585c372efa3a9d448a12fa71e6d992b498b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Mon, 4 Nov 2024 17:22:38 +0100 Subject: [PATCH 16/16] test: add more tests --- test/test_suite_20.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/test/test_suite_20.py b/test/test_suite_20.py index 607b0866..bcf81c09 100644 --- a/test/test_suite_20.py +++ b/test/test_suite_20.py @@ -3121,7 +3121,7 @@ class RouteToLeaderEnabledTest(fixtures.TestBase): route_to_leader_enabled to Client. """ - def test_route_to_leader(self): + def test_route_to_leader_disabled(self): engine = create_engine( "spanner:///projects/project-id/instances/instance-id/" + "databases/database-id", @@ -3132,6 +3132,28 @@ def test_route_to_leader(self): connection.connection.instance._client.route_to_leader_enabled is False ) + def test_route_to_leader_enabled(self): + engine = create_engine( + "spanner:///projects/project-id/instances/instance-id/" + + "databases/database-id", + connect_args={"route_to_leader_enabled": True}, + ) + with engine.connect() as connection: + assert ( + connection.connection.instance._client.route_to_leader_enabled is True + ) + + def test_route_to_leader_default(self): + engine = create_engine( + "spanner:///projects/project-id/instances/instance-id/" + + "databases/database-id" + ) + with engine.connect() as connection: + assert ( + connection.connection.instance._client.route_to_leader_enabled is True + ) + + class ReturningTest(fixtures.TestBase): def setUp(self): self._engine = create_engine(get_db_url()) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy