Skip to content

Commit 0d01388

Browse files
test: add integration test for Connector with domain name
1 parent fb8c21c commit 0d01388

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

.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_PASS_VALID_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS_VALID_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_PASS_VALID_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS_VALID_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: type[DefaultResolver] | type[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]):
71+
Resolver class for resolving instance connection name. Use
72+
google.cloud.sql.connector.DnsResolver when resolving DNS domain
73+
names or google.cloud.sql.connector.DefaultResolver for regular
74+
instance connection names ("my-project:my-region:my-instance").
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_custom_SAN_with_dns_pg8000_connection() -> None:
167+
"""Basic test to get time from database."""
168+
inst_conn_name = os.environ["POSTGRES_CUSTOMER_CAS_PASS_VALID_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+
inst_conn_name, user, password, db, resolver=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)