Skip to content

Commit 4f2fc4c

Browse files
chore: add integration test with domain name
1 parent 555a957 commit 4f2fc4c

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

.github/workflows/tests.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ jobs:
8181
POSTGRES_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CAS_PASS
8282
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_CONNECTION_NAME
8383
POSTGRES_CUSTOMER_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS
84+
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_DOMAIN_NAME
8485
SQLSERVER_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_CONNECTION_NAME
8586
SQLSERVER_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_USER
8687
SQLSERVER_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_PASS
@@ -102,6 +103,7 @@ jobs:
102103
POSTGRES_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CAS_PASS }}"
103104
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_CONNECTION_NAME }}"
104105
POSTGRES_CUSTOMER_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS }}"
106+
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_DOMAIN_NAME }}"
105107
SQLSERVER_CONNECTION_NAME: "${{ steps.secrets.outputs.SQLSERVER_CONNECTION_NAME }}"
106108
SQLSERVER_USER: "${{ steps.secrets.outputs.SQLSERVER_USER }}"
107109
SQLSERVER_PASS: "${{ steps.secrets.outputs.SQLSERVER_PASS }}"

tests/system/test_pg8000_connection.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import sqlalchemy
2323

2424
from google.cloud.sql.connector import Connector
25+
from google.cloud.sql.connector import DefaultResolver
26+
from google.cloud.sql.connector import DnsResolver
2527

2628

2729
def create_sqlalchemy_engine(
@@ -30,6 +32,7 @@ def create_sqlalchemy_engine(
3032
password: str,
3133
db: str,
3234
refresh_strategy: str = "background",
35+
resolver: DefaultResolver | DnsResolver = DefaultResolver,
3336
) -> tuple[sqlalchemy.engine.Engine, Connector]:
3437
"""Creates a connection pool for a Cloud SQL instance and returns the pool
3538
and the connector. Callers are responsible for closing the pool and the
@@ -64,8 +67,13 @@ def create_sqlalchemy_engine(
6467
Refresh strategy for the Cloud SQL Connector. Can be one of "lazy"
6568
or "background". For serverless environments use "lazy" to avoid
6669
errors resulting from CPU being throttled.
70+
resolver (Optional[google.cloud.sql.connector.DefaultResolver | google.cloud.sql.connector.DnsResolver])
71+
Resolver class for the Cloud SQL Connector. Can be one of
72+
DefaultResolver (default) or DnsResolver. The resolver tells the
73+
connector whether to resolve the 'instance_connection_name' as a
74+
Cloud SQL instance connection name or as a domain name.
6775
"""
68-
connector = Connector(refresh_strategy=refresh_strategy)
76+
connector = Connector(refresh_strategy=refresh_strategy, resolver=resolver)
6977

7078
def getconn() -> pg8000.dbapi.Connection:
7179
conn: pg8000.dbapi.Connection = connector.connect(
@@ -153,3 +161,21 @@ def test_customer_managed_CAS_pg8000_connection() -> None:
153161
curr_time = time[0]
154162
assert type(curr_time) is datetime
155163
connector.close()
164+
165+
166+
def test_domain_name_pg8000_connection() -> None:
167+
"""Basic test to get time from database using domain name to connect."""
168+
domain_name = os.environ["POSTGRES_CUSTOMER_CAS_DOMAIN_NAME"]
169+
user = os.environ["POSTGRES_USER"]
170+
password = os.environ["POSTGRES_CUSTOMER_CAS_PASS"]
171+
db = os.environ["POSTGRES_DB"]
172+
173+
engine, connector = create_sqlalchemy_engine(
174+
domain_name, user, password, db, "lazy", DnsResolver
175+
)
176+
with engine.connect() as conn:
177+
time = conn.execute(sqlalchemy.text("SELECT NOW()")).fetchone()
178+
conn.commit()
179+
curr_time = time[0]
180+
assert type(curr_time) is datetime
181+
connector.close()

0 commit comments

Comments
 (0)