Skip to content

Commit 23cf2d1

Browse files
committed
test(e2e): add end-to-end test for postgres connection with sqldata iptype
1 parent e1e69ec commit 23cf2d1

4 files changed

Lines changed: 88 additions & 0 deletions

File tree

.github/workflows/tests.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ jobs:
8686
POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME
8787
POSTGRES_MCP_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_MCP_CONNECTION_NAME
8888
POSTGRES_MCP_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_MCP_PASS
89+
POSTGRES_AIDE_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_AIDE_CONNECTION_NAME
90+
POSTGRES_AIDE_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_AIDE_USER
91+
POSTGRES_AIDE_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_AIDE_PASS
92+
POSTGRES_AIDE_DB:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_AIDE_DB
8993
SQLSERVER_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_CONNECTION_NAME
9094
SQLSERVER_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_USER
9195
SQLSERVER_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_PASS
@@ -112,6 +116,10 @@ jobs:
112116
POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME }}"
113117
POSTGRES_MCP_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_MCP_CONNECTION_NAME }}"
114118
POSTGRES_MCP_PASS: "${{ steps.secrets.outputs.POSTGRES_MCP_PASS }}"
119+
POSTGRES_AIDE_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_AIDE_CONNECTION_NAME }}"
120+
POSTGRES_AIDE_USER: "${{ steps.secrets.outputs.POSTGRES_AIDE_USER }}"
121+
POSTGRES_AIDE_PASS: "${{ steps.secrets.outputs.POSTGRES_AIDE_PASS }}"
122+
POSTGRES_AIDE_DB: "${{ steps.secrets.outputs.POSTGRES_AIDE_DB }}"
115123
SQLSERVER_CONNECTION_NAME: "${{ steps.secrets.outputs.SQLSERVER_CONNECTION_NAME }}"
116124
SQLSERVER_USER: "${{ steps.secrets.outputs.SQLSERVER_USER }}"
117125
SQLSERVER_PASS: "${{ steps.secrets.outputs.SQLSERVER_PASS }}"

build.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ function write_e2e_env(){
120120
POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME=POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME
121121
POSTGRES_MCP_CONNECTION_NAME=POSTGRES_MCP_CONNECTION_NAME
122122
POSTGRES_MCP_PASS=POSTGRES_MCP_PASS
123+
POSTGRES_AIDE_CONNECTION_NAME=POSTGRES_AIDE_CONNECTION_NAME
124+
POSTGRES_AIDE_USER=POSTGRES_AIDE_USER
125+
POSTGRES_AIDE_PASS=POSTGRES_AIDE_PASS
126+
POSTGRES_AIDE_DB=POSTGRES_AIDE_DB
123127
SQLSERVER_CONNECTION_NAME=SQLSERVER_CONNECTION_NAME
124128
SQLSERVER_USER=SQLSERVER_USER
125129
SQLSERVER_PASS=SQLSERVER_PASS

tests/system/test_asyncpg_connection.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from typing import Any
2121

2222
import asyncpg
23+
import pytest
2324
import sqlalchemy
2425
import sqlalchemy.ext.asyncio
2526

@@ -283,3 +284,52 @@ async def test_lazy_connection_with_asyncpg() -> None:
283284
assert res[0][0] == 1
284285

285286
await connector.close_async()
287+
288+
289+
async def test_AIDE_sqlalchemy_connection_with_asyncpg() -> None:
290+
"""Basic test to get time from database using AIDE instance."""
291+
if "POSTGRES_AIDE_CONNECTION_NAME" not in os.environ:
292+
pytest.skip("POSTGRES_AIDE_CONNECTION_NAME not set")
293+
inst_conn_name = os.environ["POSTGRES_AIDE_CONNECTION_NAME"]
294+
user = os.environ.get("POSTGRES_AIDE_USER", os.environ.get("POSTGRES_USER", "postgres"))
295+
password = os.environ.get("POSTGRES_AIDE_PASS", os.environ.get("POSTGRES_PASS", ""))
296+
db = os.environ.get("POSTGRES_AIDE_DB", os.environ.get("POSTGRES_DB", "postgres"))
297+
298+
pool, connector = await create_sqlalchemy_engine(
299+
inst_conn_name,
300+
user,
301+
password,
302+
db,
303+
ip_type="sqldata",
304+
)
305+
306+
async with pool.connect() as conn:
307+
res = (await conn.execute(sqlalchemy.text("SELECT 1"))).fetchone()
308+
assert res[0] == 1
309+
310+
await connector.close_async()
311+
312+
313+
async def test_AIDE_connection_with_asyncpg() -> None:
314+
"""Basic test to get time from database using AIDE instance."""
315+
if "POSTGRES_AIDE_CONNECTION_NAME" not in os.environ:
316+
pytest.skip("POSTGRES_AIDE_CONNECTION_NAME not set")
317+
inst_conn_name = os.environ["POSTGRES_AIDE_CONNECTION_NAME"]
318+
user = os.environ.get("POSTGRES_AIDE_USER", os.environ.get("POSTGRES_USER", "postgres"))
319+
password = os.environ.get("POSTGRES_AIDE_PASS", os.environ.get("POSTGRES_PASS", ""))
320+
db = os.environ.get("POSTGRES_AIDE_DB", os.environ.get("POSTGRES_DB", "postgres"))
321+
322+
pool, connector = await create_asyncpg_pool(
323+
inst_conn_name,
324+
user,
325+
password,
326+
db,
327+
ip_type="sqldata",
328+
)
329+
330+
async with pool.acquire() as conn:
331+
res = await conn.fetch("SELECT 1")
332+
assert res[0][0] == 1
333+
334+
await connector.close_async()
335+

tests/system/test_pg8000_connection.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import os
2020

2121
# [START cloud_sql_connector_postgres_pg8000]
22+
import pytest
2223
import sqlalchemy
2324

2425
from google.cloud.sql.connector import Connector
@@ -209,3 +210,28 @@ def test_MCP_pg8000_connection() -> None:
209210
curr_time = time[0]
210211
assert type(curr_time) is datetime
211212
connector.close()
213+
214+
215+
def test_AIDE_pg8000_connection() -> None:
216+
"""Basic test to get time from database using AIDE instance."""
217+
if "POSTGRES_AIDE_CONNECTION_NAME" not in os.environ:
218+
pytest.skip("POSTGRES_AIDE_CONNECTION_NAME not set")
219+
inst_conn_name = os.environ["POSTGRES_AIDE_CONNECTION_NAME"]
220+
user = os.environ.get("POSTGRES_AIDE_USER", os.environ.get("POSTGRES_USER", "postgres"))
221+
password = os.environ.get("POSTGRES_AIDE_PASS", os.environ.get("POSTGRES_PASS", ""))
222+
db = os.environ.get("POSTGRES_AIDE_DB", os.environ.get("POSTGRES_DB", "postgres"))
223+
224+
engine, connector = create_sqlalchemy_engine(
225+
inst_conn_name,
226+
user,
227+
password,
228+
db,
229+
ip_type="sqldata",
230+
)
231+
with engine.connect() as conn:
232+
time = conn.execute(sqlalchemy.text("SELECT NOW()")).fetchone()
233+
conn.commit()
234+
curr_time = time[0]
235+
assert type(curr_time) is datetime
236+
connector.close()
237+

0 commit comments

Comments
 (0)