Skip to content

Commit 890b9c9

Browse files
committed
test: Add MCP Postgres tests
1 parent f7198e0 commit 890b9c9

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

.ci/cloudbuild.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ steps:
4040
"POSTGRES_CUSTOMER_CAS_CONNECTION_NAME",
4141
"POSTGRES_CUSTOMER_CAS_PASS",
4242
"POSTGRES_CUSTOMER_CAS_DOMAIN_NAME",
43+
"POSTGRES_MCP_CONNECTION_NAME",
44+
"POSTGRES_MCP_PASS",
4345
"SQLSERVER_CONNECTION_NAME",
4446
"SQLSERVER_USER",
4547
"SQLSERVER_PASS",
@@ -90,6 +92,8 @@ availableSecrets:
9092
env: "POSTGRES_CUSTOMER_CAS_PASS"
9193
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_CUSTOMER_CAS_DOMAIN_NAME/versions/latest"
9294
env: "POSTGRES_CUSTOMER_CAS_DOMAIN_NAME"
95+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_MCP_CONNECTION_NAME/versions/latest"
96+
env: "POSTGRES_MCP_CONNECTION_NAME"
9397
- versionName: "projects/$PROJECT_ID/secrets/SQLSERVER_CONNECTION_NAME/versions/latest"
9498
env: "SQLSERVER_CONNECTION_NAME"
9599
- versionName: "projects/$PROJECT_ID/secrets/SQLSERVER_USER/versions/latest"

.github/workflows/tests.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ jobs:
9999
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_CONNECTION_NAME
100100
POSTGRES_CUSTOMER_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS
101101
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_DOMAIN_NAME
102+
POSTGRES_MCP_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_MCP_CONNECTION_NAME
103+
POSTGRES_MCP_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_MCP_PASS
102104
SQLSERVER_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_CONNECTION_NAME
103105
SQLSERVER_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_USER
104106
SQLSERVER_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_PASS
@@ -129,6 +131,8 @@ jobs:
129131
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_CONNECTION_NAME }}"
130132
POSTGRES_CUSTOMER_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS }}"
131133
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_DOMAIN_NAME }}"
134+
POSTGRES_MCP_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_MCP_CONNECTION_NAME }}"
135+
POSTGRES_MCP_PASS: "${{ steps.secrets.outputs.POSTGRES_MCP_PASS }}"
132136
SQLSERVER_CONNECTION_NAME: "${{ steps.secrets.outputs.SQLSERVER_CONNECTION_NAME }}"
133137
SQLSERVER_USER: "${{ steps.secrets.outputs.SQLSERVER_USER }}"
134138
SQLSERVER_PASS: "${{ steps.secrets.outputs.SQLSERVER_PASS }}"

tests/postgres_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ var (
3232
postgresPass = flag.String("postgres_pass", os.Getenv("POSTGRES_PASS"), "Password for the database user; be careful when entering a password on the command line (it may go into your terminal's history).")
3333
postgresDB = flag.String("postgres_db", os.Getenv("POSTGRES_DB"), "Name of the database to connect to.")
3434
postgresIAMUser = flag.String("postgres_user_iam", os.Getenv("POSTGRES_USER_IAM"), "Name of database user configured with IAM DB Authentication.")
35+
postgresMCPConnName = flag.String("postgres_mcp_conn_name", os.Getenv("POSTGRES_MCP_CONNECTION_NAME"), "Cloud SQL Postgres instance connection name for a managed instance, in the form of 'project:region:instance'.")
36+
postgresMCPPass = flag.String("postgres_mcp_pass", os.Getenv("POSTGRES_MCP_PASS"), "Password for the managed instance database user; be careful when entering a password on the command line (it may go into your terminal's history).")
3537
postgresCustomerCASConnName = flag.String("postgres_customer_cas_conn_name", os.Getenv("POSTGRES_CUSTOMER_CAS_CONNECTION_NAME"), "Cloud SQL Postgres instance connection name for a customer CAS enabled instance, in the form of 'project:region:instance'.")
3638
postgresCustomerCASPass = flag.String("postgres_customer_cas_pass", os.Getenv("POSTGRES_CUSTOMER_CAS_PASS"), "Password for the customer CAS instance database user; be careful when entering a password on the command line (it may go into your terminal's history).")
3739
postgresCustomerCASDomain = flag.String("postgres_customer_cas_domain", os.Getenv("POSTGRES_CUSTOMER_CAS_DOMAIN_NAME"), "Valid DNS domain name for the customer CAS instance.")
@@ -90,6 +92,28 @@ func TestPostgresUnix(t *testing.T) {
9092
proxyConnTest(t, args, "pgx", dsn)
9193
}
9294

95+
func TestPostgresMCPUnix(t *testing.T) {
96+
if testing.Short() {
97+
t.Skip("skipping Postgres integration tests")
98+
}
99+
requirePostgresVars(t)
100+
tmpDir, cleanup := createTempDir(t)
101+
defer cleanup()
102+
103+
dsn := fmt.Sprintf("host=%s user=%s password=%s database=%s sslmode=disable",
104+
// re-use utility function to determine the Unix address in a
105+
// Windows-friendly way.
106+
proxy.UnixAddress(tmpDir, *postgresMCPConnName),
107+
*postgresUser, *postgresMCPPass, *postgresDB)
108+
109+
// Prepare the initial arguments
110+
args := []string{"--unix-socket", tmpDir, *postgresMCPConnName}
111+
// Add the IP type flag using the helper
112+
args = AddIPTypeFlag(args)
113+
// Run the test
114+
proxyConnTest(t, args, "pgx", dsn)
115+
}
116+
93117
func createTempDir(t *testing.T) (string, func()) {
94118
testDir, err := os.MkdirTemp("", "*")
95119
if err != nil {

0 commit comments

Comments
 (0)