Skip to content

Commit a325888

Browse files
committed
test: Add MCP Postgres tests
1 parent ec63ee6 commit a325888

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
@@ -38,6 +38,8 @@ steps:
3838
"POSTGRES_CUSTOMER_CAS_CONNECTION_NAME",
3939
"POSTGRES_CUSTOMER_CAS_PASS",
4040
"POSTGRES_CUSTOMER_CAS_DOMAIN_NAME",
41+
"POSTGRES_MCP_CONNECTION_NAME",
42+
"POSTGRES_MCP_PASS",
4143
"SQLSERVER_CONNECTION_NAME",
4244
"SQLSERVER_USER",
4345
"SQLSERVER_PASS",
@@ -84,6 +86,8 @@ availableSecrets:
8486
env: "POSTGRES_CUSTOMER_CAS_PASS"
8587
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_CUSTOMER_CAS_DOMAIN_NAME/versions/latest"
8688
env: "POSTGRES_CUSTOMER_CAS_DOMAIN_NAME"
89+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_MCP_CONNECTION_NAME/versions/latest"
90+
env: "POSTGRES_MCP_CONNECTION_NAME"
8791
- versionName: "projects/$PROJECT_ID/secrets/SQLSERVER_CONNECTION_NAME/versions/latest"
8892
env: "SQLSERVER_CONNECTION_NAME"
8993
- 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
@@ -97,6 +97,8 @@ jobs:
9797
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_CONNECTION_NAME
9898
POSTGRES_CUSTOMER_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS
9999
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_DOMAIN_NAME
100+
POSTGRES_MCP_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_MCP_CONNECTION_NAME
101+
POSTGRES_MCP_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_MCP_PASS
100102
SQLSERVER_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_CONNECTION_NAME
101103
SQLSERVER_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_USER
102104
SQLSERVER_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_PASS
@@ -125,6 +127,8 @@ jobs:
125127
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_CONNECTION_NAME }}"
126128
POSTGRES_CUSTOMER_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS }}"
127129
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_DOMAIN_NAME }}"
130+
POSTGRES_MCP_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_MCP_CONNECTION_NAME }}"
131+
POSTGRES_MCP_PASS: "${{ steps.secrets.outputs.POSTGRES_MCP_PASS }}"
128132
SQLSERVER_CONNECTION_NAME: "${{ steps.secrets.outputs.SQLSERVER_CONNECTION_NAME }}"
129133
SQLSERVER_USER: "${{ steps.secrets.outputs.SQLSERVER_USER }}"
130134
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)