From f46b2a18614681b609193d7d4126f5300f4c9275 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 14:30:40 +1100 Subject: [PATCH 01/43] wip: proof of concept cloud-sql mysql --- .github/config/nodejs-dev.jsonc | 1 + .github/config/nodejs-prod.jsonc | 1 - cloud-sql/mysql/mysql/ci-setup.json | 10 ++++++++++ cloud-sql/mysql/mysql/package.json | 2 +- cloud-sql/mysql/mysql/test/proxy-setup.sh | 19 +++++++++++++++++++ 5 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 cloud-sql/mysql/mysql/ci-setup.json create mode 100644 cloud-sql/mysql/mysql/test/proxy-setup.sh diff --git a/.github/config/nodejs-dev.jsonc b/.github/config/nodejs-dev.jsonc index 4dbb31c0f5..14075e4acc 100644 --- a/.github/config/nodejs-dev.jsonc +++ b/.github/config/nodejs-dev.jsonc @@ -100,6 +100,7 @@ "auth", "batch", "cloud-language", + "cloud-sql/mysql/mysql", "cloud-tasks/snippets", "cloud-tasks/tutorial-gcf/app", "cloud-tasks/tutorial-gcf/function", diff --git a/.github/config/nodejs-prod.jsonc b/.github/config/nodejs-prod.jsonc index b2a2a4cdf1..59ed60ebdb 100644 --- a/.github/config/nodejs-prod.jsonc +++ b/.github/config/nodejs-prod.jsonc @@ -77,7 +77,6 @@ // TODO: fix these "ai-platform/snippets", // PERMISSION_DENIED: Permission denied: Consumer 'projects/undefined' has been suspended. "automl", // (untested) FAILED_PRECONDITION: Google Cloud AutoML Natural Language was retired on March 15, 2024. Please migrate to Vertex AI instead - "cloud-sql/mysql/mysql", // (untested) Error: expected 200 "OK", got 500 "Internal Server Error" "cloud-sql/mysql/mysql2", // (untested) Error: Cannot find module './connect-connector-with-iam-authn.js' "cloud-sql/postgres/knex", // (untested) CloudSQLConnectorError: Malformed instance connection name provided: expected format of "PROJECT:REGION:INSTANCE", got undefined "cloud-sql/sqlserver/mssql", // (untested) TypeError: The "config.server" property is required and must be of type string. diff --git a/cloud-sql/mysql/mysql/ci-setup.json b/cloud-sql/mysql/mysql/ci-setup.json new file mode 100644 index 0000000000..e55c9f5e32 --- /dev/null +++ b/cloud-sql/mysql/mysql/ci-setup.json @@ -0,0 +1,10 @@ +{ + "env": { + "INSTANCE_HOST": "127.0.0.1", + "CLOUD_SQL_CONNECTION_NAME": "nodejs-docs-samples-tests:us-central1:mysql-ci", + "DB_NAME": "kokoro_ci", + "DB_USER": "kokoro_ci" + }, + "secrets": { + "DB_PASSWORD": "nodejs-docs-samples-tests/nodejs-docs-samples-sql-password" } + } diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index a9ee12aa61..923ee2e15e 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,7 +13,7 @@ }, "scripts": { "start": "node server/server.js", - "system-test": "c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", + "system-test": "test/proxy-setup.sh && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", "system-test-unix": "c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" }, diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh new file mode 100644 index 0000000000..3b59575f77 --- /dev/null +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -0,0 +1,19 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Proof of concept: setting up proxy + +curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.15.1/cloud-sql-proxy.linux.amd64 +chmod +x cloud-sql-proxy +./cloud-sql-proxy $CLOUD_SQL_CONNECTION_NAME & From c54abd23b596537b8d0681452df9d4ffd8dcad6f Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 15:04:22 +1100 Subject: [PATCH 02/43] chmod --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 cloud-sql/mysql/mysql/test/proxy-setup.sh diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh old mode 100644 new mode 100755 From e1d0de85a25329c2e42700a6f8740ffc306192e4 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 15:09:28 +1100 Subject: [PATCH 03/43] add sleep to ensure proxy starts before use --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index 3b59575f77..e0523a4bb3 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -17,3 +17,4 @@ curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.15.1/cloud-sql-proxy.linux.amd64 chmod +x cloud-sql-proxy ./cloud-sql-proxy $CLOUD_SQL_CONNECTION_NAME & +sleep 10 From 3507ff75e6b7f77c268099358289da2833205e47 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 15:16:09 +1100 Subject: [PATCH 04/43] use correct envvar --- cloud-sql/mysql/mysql/ci-setup.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/ci-setup.json b/cloud-sql/mysql/mysql/ci-setup.json index e55c9f5e32..b2de73f5c5 100644 --- a/cloud-sql/mysql/mysql/ci-setup.json +++ b/cloud-sql/mysql/mysql/ci-setup.json @@ -6,5 +6,5 @@ "DB_USER": "kokoro_ci" }, "secrets": { - "DB_PASSWORD": "nodejs-docs-samples-tests/nodejs-docs-samples-sql-password" } + "DB_PASS": "nodejs-docs-samples-tests/nodejs-docs-samples-sql-password" } } From 41ad376cb1afa3407ed3ea0f7286029b482ac9c8 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 15:25:49 +1100 Subject: [PATCH 05/43] extra bit --- cloud-sql/mysql/mysql/ci-setup.json | 1 + 1 file changed, 1 insertion(+) diff --git a/cloud-sql/mysql/mysql/ci-setup.json b/cloud-sql/mysql/mysql/ci-setup.json index b2de73f5c5..3ba61c5806 100644 --- a/cloud-sql/mysql/mysql/ci-setup.json +++ b/cloud-sql/mysql/mysql/ci-setup.json @@ -1,6 +1,7 @@ { "env": { "INSTANCE_HOST": "127.0.0.1", + "INSTANCE_CONNECTION_NAME": "nodejs-docs-samples-tests:us-central1:mysql-ci", "CLOUD_SQL_CONNECTION_NAME": "nodejs-docs-samples-tests:us-central1:mysql-ci", "DB_NAME": "kokoro_ci", "DB_USER": "kokoro_ci" From ae36e2840103d22779089836eb56541b39d5b0d0 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 15:46:00 +1100 Subject: [PATCH 06/43] debugging --- cloud-sql/mysql/mysql/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/cloud-sql/mysql/mysql/index.js b/cloud-sql/mysql/mysql/index.js index 018779dcca..5a73503f49 100644 --- a/cloud-sql/mysql/mysql/index.js +++ b/cloud-sql/mysql/mysql/index.js @@ -93,6 +93,7 @@ const createPool = async () => { throw err; } } + console.log("Instance vars: ", process.env.INSTANCE_HOST, " -- ", process.env.INSTANCE_UNIX_SOCKET) if (process.env.INSTANCE_HOST) { // Use a TCP socket when INSTANCE_HOST (e.g., 127.0.0.1) is defined From 5ecb710f57983228c462d5d88c44409b6e9e12d2 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 16:11:24 +1100 Subject: [PATCH 07/43] instance_host is deleted by the server-unix test --- cloud-sql/mysql/mysql/ci-setup.json | 20 +++++++++++--------- cloud-sql/mysql/mysql/index.js | 1 - 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/cloud-sql/mysql/mysql/ci-setup.json b/cloud-sql/mysql/mysql/ci-setup.json index 3ba61c5806..b6c273f2de 100644 --- a/cloud-sql/mysql/mysql/ci-setup.json +++ b/cloud-sql/mysql/mysql/ci-setup.json @@ -1,11 +1,13 @@ { - "env": { - "INSTANCE_HOST": "127.0.0.1", - "INSTANCE_CONNECTION_NAME": "nodejs-docs-samples-tests:us-central1:mysql-ci", - "CLOUD_SQL_CONNECTION_NAME": "nodejs-docs-samples-tests:us-central1:mysql-ci", - "DB_NAME": "kokoro_ci", - "DB_USER": "kokoro_ci" - }, - "secrets": { - "DB_PASS": "nodejs-docs-samples-tests/nodejs-docs-samples-sql-password" } + "env": { + "INSTANCE_HOST": "127.0.0.1", + "INSTANCE_CONNECTION_NAME": "nodejs-docs-samples-tests:us-central1:mysql-ci", + "CLOUD_SQL_CONNECTION_NAME": "$INSTANCE_CONNECTION_NAME", + "INSTANCE_UNIX_SOCKET": "$INSTANCE_CONNECTION_NAME", + "DB_NAME": "kokoro_ci", + "DB_USER": "kokoro_ci" + }, + "secrets": { + "DB_PASS": "nodejs-docs-samples-tests/nodejs-docs-samples-sql-password" } +} diff --git a/cloud-sql/mysql/mysql/index.js b/cloud-sql/mysql/mysql/index.js index 5a73503f49..018779dcca 100644 --- a/cloud-sql/mysql/mysql/index.js +++ b/cloud-sql/mysql/mysql/index.js @@ -93,7 +93,6 @@ const createPool = async () => { throw err; } } - console.log("Instance vars: ", process.env.INSTANCE_HOST, " -- ", process.env.INSTANCE_UNIX_SOCKET) if (process.env.INSTANCE_HOST) { // Use a TCP socket when INSTANCE_HOST (e.g., 127.0.0.1) is defined From 6326bd3073764a838f6f858c2e76fe2bdae31ec9 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 16:33:30 +1100 Subject: [PATCH 08/43] proxy all tests --- cloud-sql/mysql/mysql/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 923ee2e15e..9f60c424bc 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,9 +13,9 @@ }, "scripts": { "start": "node server/server.js", - "system-test": "test/proxy-setup.sh && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", + "system-test": "tc8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", "system-test-unix": "c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", - "test": "npm run system-test && npm run system-test-unix" + "test": "test/proxy-setup.sh && npm run system-test && npm run system-test-unix" }, "dependencies": { "@google-cloud/functions-framework": "^3.0.0", From c004e1a0da5cc615a58c13dda90aecc9efbf6cac Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 16:35:19 +1100 Subject: [PATCH 09/43] accepting gemini-code-assist code Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index e0523a4bb3..c3579c1b8f 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -14,7 +14,13 @@ # Proof of concept: setting up proxy -curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.15.1/cloud-sql-proxy.linux.amd64 +PROXY_VERSION="v2.15.1" + +curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${PROXY_VERSION}/cloud-sql-proxy.linux.amd64 +if [ $? -ne 0 ]; then + echo "Failed to download cloud-sql-proxy" + exit 1 +fi chmod +x cloud-sql-proxy ./cloud-sql-proxy $CLOUD_SQL_CONNECTION_NAME & sleep 10 From 6a98c4d50c954cc94a2bf1e4c9c6230e1a4eaea9 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Tue, 25 Mar 2025 16:55:49 +1100 Subject: [PATCH 10/43] oop --- cloud-sql/mysql/mysql/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 9f60c424bc..6ae1ce8a39 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,7 +13,7 @@ }, "scripts": { "start": "node server/server.js", - "system-test": "tc8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", + "system-test": "c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", "system-test-unix": "c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "test/proxy-setup.sh && npm run system-test && npm run system-test-unix" }, From d82ed40c17e3039041fc60f7b6535dae5b7068ea Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Wed, 26 Mar 2025 16:01:09 +1100 Subject: [PATCH 11/43] wip: tcp or unix --- cloud-sql/mysql/mysql/package.json | 6 +++--- cloud-sql/mysql/mysql/test/proxy-setup.sh | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 6ae1ce8a39..3465b64ae8 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,9 +13,9 @@ }, "scripts": { "start": "node server/server.js", - "system-test": "c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", - "system-test-unix": "c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", - "test": "test/proxy-setup.sh && npm run system-test && npm run system-test-unix" + "system-test": "test/proxy-setup.sh tcp && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", + "system-test-unix": "test/proxy-setup.sh socket && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", + "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { "@google-cloud/functions-framework": "^3.0.0", diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index c3579c1b8f..59ba44d353 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -15,6 +15,12 @@ # Proof of concept: setting up proxy PROXY_VERSION="v2.15.1" +SETUP_STYLE=${1:-tcp} + +if [ $SETUP_STYLE -ne "tcp" ]; then + mkdir cloudsql && chmod 777 cloudsql + socket="--unix-socket /cloudsql" +; fi curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${PROXY_VERSION}/cloud-sql-proxy.linux.amd64 if [ $? -ne 0 ]; then @@ -22,5 +28,5 @@ if [ $? -ne 0 ]; then exit 1 fi chmod +x cloud-sql-proxy -./cloud-sql-proxy $CLOUD_SQL_CONNECTION_NAME & +./cloud-sql-proxy $CLOUD_SQL_CONNECTION_NAME $socket & sleep 10 From 43a8e53614e62375927f8018198c4e0245205305 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Thu, 27 Mar 2025 13:00:36 +1100 Subject: [PATCH 12/43] syntax --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index 59ba44d353..c822c492f0 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -17,13 +17,13 @@ PROXY_VERSION="v2.15.1" SETUP_STYLE=${1:-tcp} -if [ $SETUP_STYLE -ne "tcp" ]; then +if [[ $SETUP_STYLE -ne "tcp" ]]; then mkdir cloudsql && chmod 777 cloudsql socket="--unix-socket /cloudsql" -; fi +fi curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${PROXY_VERSION}/cloud-sql-proxy.linux.amd64 -if [ $? -ne 0 ]; then +if [[ $? -ne 0 ]]; then echo "Failed to download cloud-sql-proxy" exit 1 fi From 81781de525d9fb488e40cc79c922af4286be9b9e Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Thu, 27 Mar 2025 13:58:36 +1100 Subject: [PATCH 13/43] cause she looks like a flower --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index c822c492f0..05fbb34ce5 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -1,3 +1,5 @@ +#!/bin/bash + # Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); From 4ff9afcccc981591246c54fec10c7fce9b7d3576 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 10:00:50 +1100 Subject: [PATCH 14/43] more shell logic --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index 05fbb34ce5..e754970567 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e # Copyright 2025 Google LLC # @@ -24,11 +24,17 @@ if [[ $SETUP_STYLE -ne "tcp" ]]; then socket="--unix-socket /cloudsql" fi -curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${PROXY_VERSION}/cloud-sql-proxy.linux.amd64 -if [[ $? -ne 0 ]]; then - echo "Failed to download cloud-sql-proxy" - exit 1 +if [[ -! f cloud-sql-proxy ]]; then + + curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${PROXY_VERSION}/cloud-sql-proxy.linux.amd64 + if [[ $? -ne 0 ]]; then + echo "Failed to download cloud-sql-proxy" + exit 1 + fi + chmod +x cloud-sql-proxy +else + echo "cloud-sql-proxy already downloaded" fi -chmod +x cloud-sql-proxy + ./cloud-sql-proxy $CLOUD_SQL_CONNECTION_NAME $socket & sleep 10 From a47abdf59849107885defd039407280943e7cd88 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 10:20:00 +1100 Subject: [PATCH 15/43] sh --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index e754970567..bcad5eee3f 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -24,7 +24,7 @@ if [[ $SETUP_STYLE -ne "tcp" ]]; then socket="--unix-socket /cloudsql" fi -if [[ -! f cloud-sql-proxy ]]; then +if [[ ! -f cloud-sql-proxy ]]; then curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${PROXY_VERSION}/cloud-sql-proxy.linux.amd64 if [[ $? -ne 0 ]]; then From b7dcf45cd6616b55793823ed94199720a4c9a982 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 10:27:41 +1100 Subject: [PATCH 16/43] continued proof of concept --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 4 ++++ cloud-sql/mysql/mysql/test/proxy-shutdown.sh | 22 ++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 cloud-sql/mysql/mysql/test/proxy-shutdown.sh diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index bcad5eee3f..14abe1090f 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -24,6 +24,8 @@ if [[ $SETUP_STYLE -ne "tcp" ]]; then socket="--unix-socket /cloudsql" fi +echo "Setting up cloud-sql-proxy for $SETUP_STYLE connections" + if [[ ! -f cloud-sql-proxy ]]; then curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${PROXY_VERSION}/cloud-sql-proxy.linux.amd64 @@ -38,3 +40,5 @@ fi ./cloud-sql-proxy $CLOUD_SQL_CONNECTION_NAME $socket & sleep 10 + +echo "Proxy ready for use" diff --git a/cloud-sql/mysql/mysql/test/proxy-shutdown.sh b/cloud-sql/mysql/mysql/test/proxy-shutdown.sh new file mode 100644 index 0000000000..4197575407 --- /dev/null +++ b/cloud-sql/mysql/mysql/test/proxy-shutdown.sh @@ -0,0 +1,22 @@ +#!/bin/bash -e + +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Proof of concept: shutting down proxy + +echo "Shutting down proxy process" + +pkill -f "cloud-sql-proxy" || echo "cloud-sql-proxy process not found. Was it already stopped?" + From 8699edfc65e56ba8d517f5b70637c25376958717 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 10:41:55 +1100 Subject: [PATCH 17/43] call shutdown --- cloud-sql/mysql/mysql/package.json | 4 ++-- cloud-sql/mysql/mysql/test/proxy-shutdown.sh | 0 2 files changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 cloud-sql/mysql/mysql/test/proxy-shutdown.sh diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 3465b64ae8..eccfd3bca8 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,8 +13,8 @@ }, "scripts": { "start": "node server/server.js", - "system-test": "test/proxy-setup.sh tcp && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", - "system-test-unix": "test/proxy-setup.sh socket && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", + "system-test": "test/proxy-setup.sh tcp && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit && test/proxy-shutdown.sh", + "system-test-unix": "test/proxy-setup.sh socket && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit && test/proxy-shutdown.sh", "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { diff --git a/cloud-sql/mysql/mysql/test/proxy-shutdown.sh b/cloud-sql/mysql/mysql/test/proxy-shutdown.sh old mode 100644 new mode 100755 From 23b9430de90715eb4e5be7117aedb73a432fad82 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 11:32:55 +1100 Subject: [PATCH 18/43] format value --- cloud-sql/mysql/mysql/ci-setup.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/ci-setup.json b/cloud-sql/mysql/mysql/ci-setup.json index b6c273f2de..5bc86e7196 100644 --- a/cloud-sql/mysql/mysql/ci-setup.json +++ b/cloud-sql/mysql/mysql/ci-setup.json @@ -3,7 +3,7 @@ "INSTANCE_HOST": "127.0.0.1", "INSTANCE_CONNECTION_NAME": "nodejs-docs-samples-tests:us-central1:mysql-ci", "CLOUD_SQL_CONNECTION_NAME": "$INSTANCE_CONNECTION_NAME", - "INSTANCE_UNIX_SOCKET": "$INSTANCE_CONNECTION_NAME", + "INSTANCE_UNIX_SOCKET": "/cloudsql/$INSTANCE_CONNECTION_NAME", "DB_NAME": "kokoro_ci", "DB_USER": "kokoro_ci" }, From 23f3a2e7e0dc0e3881f9f6004c41abb7110a6192 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 11:38:00 +1100 Subject: [PATCH 19/43] order? --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index 14abe1090f..3e4a0f1e7f 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -38,7 +38,7 @@ else echo "cloud-sql-proxy already downloaded" fi -./cloud-sql-proxy $CLOUD_SQL_CONNECTION_NAME $socket & +./cloud-sql-proxy $socket $CLOUD_SQL_CONNECTION_NAME & sleep 10 echo "Proxy ready for use" From 0cf5917729e4edad2d140585ae218c402beb5178 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 12:30:20 +1100 Subject: [PATCH 20/43] debug: echo --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index 3e4a0f1e7f..915ccac649 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash -ex # Copyright 2025 Google LLC # From 184e6c4f0420a3f6b78dc2dbcee3e6f3bb30500f Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 12:42:45 +1100 Subject: [PATCH 21/43] hoisted by my own petard. --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index 915ccac649..4b6af13adc 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -19,8 +19,9 @@ PROXY_VERSION="v2.15.1" SETUP_STYLE=${1:-tcp} -if [[ $SETUP_STYLE -ne "tcp" ]]; then - mkdir cloudsql && chmod 777 cloudsql +if [[ ! $SETUP_STYLE == "tcp" ]]; then + echo "setup for sockets" + mkdir /cloudsql && chmod 777 /cloudsql socket="--unix-socket /cloudsql" fi From 5b00c53c9e22af631df8728bc72fab6f49aa03ea Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 12:53:24 +1100 Subject: [PATCH 22/43] tmp file --- cloud-sql/mysql/mysql/ci-setup.json | 3 ++- cloud-sql/mysql/mysql/test/proxy-setup.sh | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cloud-sql/mysql/mysql/ci-setup.json b/cloud-sql/mysql/mysql/ci-setup.json index 5bc86e7196..04119fb72f 100644 --- a/cloud-sql/mysql/mysql/ci-setup.json +++ b/cloud-sql/mysql/mysql/ci-setup.json @@ -3,7 +3,8 @@ "INSTANCE_HOST": "127.0.0.1", "INSTANCE_CONNECTION_NAME": "nodejs-docs-samples-tests:us-central1:mysql-ci", "CLOUD_SQL_CONNECTION_NAME": "$INSTANCE_CONNECTION_NAME", - "INSTANCE_UNIX_SOCKET": "/cloudsql/$INSTANCE_CONNECTION_NAME", + "UNIX_SOCKET_DIR": "tmp/cloudsql", + "INSTANCE_UNIX_SOCKET": "$UNIX_SOCKET_DIR/$INSTANCE_CONNECTION_NAME", "DB_NAME": "kokoro_ci", "DB_USER": "kokoro_ci" }, diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index 4b6af13adc..8260046869 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -21,8 +21,8 @@ SETUP_STYLE=${1:-tcp} if [[ ! $SETUP_STYLE == "tcp" ]]; then echo "setup for sockets" - mkdir /cloudsql && chmod 777 /cloudsql - socket="--unix-socket /cloudsql" + mkdir $UNIX_SOCKET_DIR && chmod 777 $UNIX_SOCKET_DIR + socket="--unix-socket $UNIX_SOCKET_DIR" fi echo "Setting up cloud-sql-proxy for $SETUP_STYLE connections" From 0e60a3dee6305b8410662b5a47c6173dbba775a0 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 12:55:50 +1100 Subject: [PATCH 23/43] -p --- cloud-sql/mysql/mysql/test/proxy-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/cloud-sql/mysql/mysql/test/proxy-setup.sh index 8260046869..3111d13763 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/cloud-sql/mysql/mysql/test/proxy-setup.sh @@ -21,7 +21,7 @@ SETUP_STYLE=${1:-tcp} if [[ ! $SETUP_STYLE == "tcp" ]]; then echo "setup for sockets" - mkdir $UNIX_SOCKET_DIR && chmod 777 $UNIX_SOCKET_DIR + mkdir -p $UNIX_SOCKET_DIR && chmod 777 $UNIX_SOCKET_DIR socket="--unix-socket $UNIX_SOCKET_DIR" fi From d43ccb1829ddd554f7d3862de5236f5adbc112fa Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 13:15:41 +1100 Subject: [PATCH 24/43] WIP: shared proxy setup --- .../workflows/utils/sql-proxy.sh | 7 +++++++ cloud-sql/mysql/mysql/package.json | 4 ++-- .../mysql/test/{proxy-shutdown.sh => run-proxy.sh} | 10 +++------- 3 files changed, 12 insertions(+), 9 deletions(-) rename cloud-sql/mysql/mysql/test/proxy-setup.sh => .github/workflows/utils/sql-proxy.sh (90%) rename cloud-sql/mysql/mysql/test/{proxy-shutdown.sh => run-proxy.sh} (75%) mode change 100755 => 100644 diff --git a/cloud-sql/mysql/mysql/test/proxy-setup.sh b/.github/workflows/utils/sql-proxy.sh similarity index 90% rename from cloud-sql/mysql/mysql/test/proxy-setup.sh rename to .github/workflows/utils/sql-proxy.sh index 3111d13763..941888cb0d 100755 --- a/cloud-sql/mysql/mysql/test/proxy-setup.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -43,3 +43,10 @@ fi sleep 10 echo "Proxy ready for use" + +# Run test +$@ + +echo "Shutting down proxy process" + +pkill -f "cloud-sql-proxy" || echo "cloud-sql-proxy process not found. Was it already stopped?" diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index eccfd3bca8..626105aaa9 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,8 +13,8 @@ }, "scripts": { "start": "node server/server.js", - "system-test": "test/proxy-setup.sh tcp && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit && test/proxy-shutdown.sh", - "system-test-unix": "test/proxy-setup.sh socket && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit && test/proxy-shutdown.sh", + "system-test": "test/run-proxy.sh && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", + "system-test-unix": "test/run-proxy.sh && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { diff --git a/cloud-sql/mysql/mysql/test/proxy-shutdown.sh b/cloud-sql/mysql/mysql/test/run-proxy.sh old mode 100755 new mode 100644 similarity index 75% rename from cloud-sql/mysql/mysql/test/proxy-shutdown.sh rename to cloud-sql/mysql/mysql/test/run-proxy.sh index 4197575407..b969e3eba7 --- a/cloud-sql/mysql/mysql/test/proxy-shutdown.sh +++ b/cloud-sql/mysql/mysql/test/run-proxy.sh @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash -ex # Copyright 2025 Google LLC # @@ -14,9 +14,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Proof of concept: shutting down proxy - -echo "Shutting down proxy process" - -pkill -f "cloud-sql-proxy" || echo "cloud-sql-proxy process not found. Was it already stopped?" - +# Run shared proxy setup +source $GITHUB_WORKSPACE/.github/workflows/util/sql-proxy.sh From a82cdbfa9697694b2991365777d88b18db164eb1 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 13:19:19 +1100 Subject: [PATCH 25/43] chmod --- cloud-sql/mysql/mysql/test/run-proxy.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 cloud-sql/mysql/mysql/test/run-proxy.sh diff --git a/cloud-sql/mysql/mysql/test/run-proxy.sh b/cloud-sql/mysql/mysql/test/run-proxy.sh old mode 100644 new mode 100755 From 2c8a076baade8a56a9676bea87cf466c31d715db Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 13:39:36 +1100 Subject: [PATCH 26/43] maybe? --- cloud-sql/mysql/mysql/test/run-proxy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/test/run-proxy.sh b/cloud-sql/mysql/mysql/test/run-proxy.sh index b969e3eba7..54688660a4 100755 --- a/cloud-sql/mysql/mysql/test/run-proxy.sh +++ b/cloud-sql/mysql/mysql/test/run-proxy.sh @@ -15,4 +15,4 @@ # limitations under the License. # Run shared proxy setup -source $GITHUB_WORKSPACE/.github/workflows/util/sql-proxy.sh +source $GITHUB_WORKSPACE/../.github/workflows/util/sql-proxy.sh From f0fbd65c14cf708338bee50cf2f80e0a755e66ac Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 13:42:19 +1100 Subject: [PATCH 27/43] ?? --- cloud-sql/mysql/mysql/package.json | 5 +++-- cloud-sql/mysql/mysql/test/run-proxy.sh | 18 ------------------ 2 files changed, 3 insertions(+), 20 deletions(-) delete mode 100755 cloud-sql/mysql/mysql/test/run-proxy.sh diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 626105aaa9..91407bb97e 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,8 +13,9 @@ }, "scripts": { "start": "node server/server.js", - "system-test": "test/run-proxy.sh && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", - "system-test-unix": "test/run-proxy.sh && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", + "proxy": "source ../../../.github/workflows/util/sql-proxy.sh", + "system-test": "npm run proxy && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", + "system-test-unix": "npm run proxy && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { diff --git a/cloud-sql/mysql/mysql/test/run-proxy.sh b/cloud-sql/mysql/mysql/test/run-proxy.sh deleted file mode 100755 index 54688660a4..0000000000 --- a/cloud-sql/mysql/mysql/test/run-proxy.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -ex - -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Run shared proxy setup -source $GITHUB_WORKSPACE/../.github/workflows/util/sql-proxy.sh From e8594a692487433b49d9b85366f851b3042eb73f Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 13:47:03 +1100 Subject: [PATCH 28/43] bash --- cloud-sql/mysql/mysql/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 91407bb97e..a84aecd1bb 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,7 +13,7 @@ }, "scripts": { "start": "node server/server.js", - "proxy": "source ../../../.github/workflows/util/sql-proxy.sh", + "proxy": "bash ../../../.github/workflows/util/sql-proxy.sh", "system-test": "npm run proxy && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", "system-test-unix": "npm run proxy && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" From f13d4eb60e8cebd82cc90640ca38f6bdc4d8d838 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 13:49:39 +1100 Subject: [PATCH 29/43] debug --- cloud-sql/mysql/mysql/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index a84aecd1bb..a44fc03889 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,7 +13,7 @@ }, "scripts": { "start": "node server/server.js", - "proxy": "bash ../../../.github/workflows/util/sql-proxy.sh", + "proxy": "ls ../../../ && bash ../../../.github/workflows/util/sql-proxy.sh", "system-test": "npm run proxy && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", "system-test-unix": "npm run proxy && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" From 629fa091a393118c5b61402a07962fc67a6de1ae Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 13:52:43 +1100 Subject: [PATCH 30/43] debug --- cloud-sql/mysql/mysql/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index a44fc03889..a65caff500 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,7 +13,7 @@ }, "scripts": { "start": "node server/server.js", - "proxy": "ls ../../../ && bash ../../../.github/workflows/util/sql-proxy.sh", + "proxy": "echo $GITHUB_WORKSPACE && ls ../../../ && bash ../../../.github/workflows/utils/sql-proxy.sh", "system-test": "npm run proxy && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", "system-test-unix": "npm run proxy && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" From 8bf31b9b256f264b624a2f5129d45b726d0483e6 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 13:56:08 +1100 Subject: [PATCH 31/43] maybe --- cloud-sql/mysql/mysql/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index a65caff500..4781f56080 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,9 +13,9 @@ }, "scripts": { "start": "node server/server.js", - "proxy": "echo $GITHUB_WORKSPACE && ls ../../../ && bash ../../../.github/workflows/utils/sql-proxy.sh", - "system-test": "npm run proxy && c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", - "system-test-unix": "npm run proxy && c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", + "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/sql-proxy.sh", + "system-test": "npm run proxy -- c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", + "system-test-unix": "npm run proxy -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { From a62e1bf78eb6da45cabae2003916ef18f8f8f1a1 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 14:13:10 +1100 Subject: [PATCH 32/43] more bash --- .github/workflows/utils/sql-proxy.sh | 14 ++++++++++++-- cloud-sql/mysql/mysql/package.json | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/utils/sql-proxy.sh b/.github/workflows/utils/sql-proxy.sh index 941888cb0d..bcb41dd7bb 100755 --- a/.github/workflows/utils/sql-proxy.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -17,7 +17,13 @@ # Proof of concept: setting up proxy PROXY_VERSION="v2.15.1" -SETUP_STYLE=${1:-tcp} + +while getopts c: flag +do + case "${flag}" in + c) SETUP_STYLE=${1:-tcp};; + esac +done if [[ ! $SETUP_STYLE == "tcp" ]]; then echo "setup for sockets" @@ -45,8 +51,12 @@ sleep 10 echo "Proxy ready for use" # Run test -$@ +$@ || STATUS=$? + echo "Shutting down proxy process" pkill -f "cloud-sql-proxy" || echo "cloud-sql-proxy process not found. Was it already stopped?" + +# Fail if the tests failed +exit $STATUS diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 4781f56080..8adc2070ba 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -15,7 +15,7 @@ "start": "node server/server.js", "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/sql-proxy.sh", "system-test": "npm run proxy -- c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", - "system-test-unix": "npm run proxy -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", + "system-test-unix": "npm run proxy -c socket -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { From 24bd715721fcd180f5b126e84e96dbab46fa0a88 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 14:26:40 +1100 Subject: [PATCH 33/43] simplify usage --- .github/workflows/utils/sql-proxy.sh | 26 +++++++++++++++++--------- cloud-sql/mysql/mysql/package.json | 2 +- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.github/workflows/utils/sql-proxy.sh b/.github/workflows/utils/sql-proxy.sh index bcb41dd7bb..342e8a6062 100755 --- a/.github/workflows/utils/sql-proxy.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -14,27 +14,35 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Proof of concept: setting up proxy +# Shared Cloud SQL Proxy setup +# Presumes the following variables in ci-setup.json: +# * $CLOUD_SQL_CONNECTION_NAME - the project:region:instance of a Cloud SQL instance. +# +# Usage: +# sql-proxy.sh [..] - sets up a TCP proxy +# sql-proxy.sh -s [..] - sets up a Unix socket proxy +# +# Any [..] commands are run directly (e.g. `c8 mocha ...`) PROXY_VERSION="v2.15.1" -while getopts c: flag +# If no `-s` flag is set, use tcp connection style. +SETUP_STYLE="tcp" +while getopts s: flag do case "${flag}" in - c) SETUP_STYLE=${1:-tcp};; + s) SETUP_STYLE="socket";; esac done if [[ ! $SETUP_STYLE == "tcp" ]]; then - echo "setup for sockets" mkdir -p $UNIX_SOCKET_DIR && chmod 777 $UNIX_SOCKET_DIR socket="--unix-socket $UNIX_SOCKET_DIR" fi - echo "Setting up cloud-sql-proxy for $SETUP_STYLE connections" +# Download the Cloud SQL Auth Proxy (only once) if [[ ! -f cloud-sql-proxy ]]; then - curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${PROXY_VERSION}/cloud-sql-proxy.linux.amd64 if [[ $? -ne 0 ]]; then echo "Failed to download cloud-sql-proxy" @@ -45,17 +53,17 @@ else echo "cloud-sql-proxy already downloaded" fi +# Setup proxy ./cloud-sql-proxy $socket $CLOUD_SQL_CONNECTION_NAME & sleep 10 echo "Proxy ready for use" -# Run test +# Run whatever command was passed to this script $@ || STATUS=$? - +# Cleanup echo "Shutting down proxy process" - pkill -f "cloud-sql-proxy" || echo "cloud-sql-proxy process not found. Was it already stopped?" # Fail if the tests failed diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 8adc2070ba..a255adcffd 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -15,7 +15,7 @@ "start": "node server/server.js", "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/sql-proxy.sh", "system-test": "npm run proxy -- c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", - "system-test-unix": "npm run proxy -c socket -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", + "system-test-unix": "npm run proxy -s -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { From f26c218e5d7789a137d8ebe063daa87f1f3d1875 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 14:50:36 +1100 Subject: [PATCH 34/43] cleanup --- .github/workflows/utils/sql-proxy.sh | 37 ++++++++++++++-------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/.github/workflows/utils/sql-proxy.sh b/.github/workflows/utils/sql-proxy.sh index 342e8a6062..3adc9b0d7b 100755 --- a/.github/workflows/utils/sql-proxy.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -16,30 +16,32 @@ # Shared Cloud SQL Proxy setup # Presumes the following variables in ci-setup.json: -# * $CLOUD_SQL_CONNECTION_NAME - the project:region:instance of a Cloud SQL instance. +# * CLOUD_SQL_CONNECTION_NAME - the project:region:instance of a Cloud SQL instance. +# * UNIX_SOCKET_DIR - a local directory to set the proxy to (default tmp/cloudsql) +# +# Note: in GitHub Actions environments, `/cloudsql` is not valid. +# Ensure any INSTANCE_UNIX_SOCKET value is ~= $UNIX_SOCKET_DIR/$CLOUD_SQL_CONNECTION_NAME # # Usage: -# sql-proxy.sh [..] - sets up a TCP proxy -# sql-proxy.sh -s [..] - sets up a Unix socket proxy +# sql-proxy.sh [..] +# +# Defaults to TCP socket proxy. Set `SOCKET=unix` for Unix sockets. +# +# Usage in package.json: # -# Any [..] commands are run directly (e.g. `c8 mocha ...`) +# "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/debug-sql-proxy.sh", +# "system-test": "npm run proxy -- c8 mocha test/... ", +# "system-test-unix": "SOCKET=unix npm run proxy -- c8 mocha test/... ", PROXY_VERSION="v2.15.1" +SOCKET=${SOCKET:-tcp} -# If no `-s` flag is set, use tcp connection style. -SETUP_STYLE="tcp" -while getopts s: flag -do - case "${flag}" in - s) SETUP_STYLE="socket";; - esac -done - -if [[ ! $SETUP_STYLE == "tcp" ]]; then +if [[ $SOCKET == "unix" ]]; then + UNIX_SOCKET_DIR=${UNIX_SOCKET_DIR:-"tmp/cloudsql"} mkdir -p $UNIX_SOCKET_DIR && chmod 777 $UNIX_SOCKET_DIR socket="--unix-socket $UNIX_SOCKET_DIR" fi -echo "Setting up cloud-sql-proxy for $SETUP_STYLE connections" +echo "Setting up cloud-sql-proxy for $SOCKET socket connections" # Download the Cloud SQL Auth Proxy (only once) if [[ ! -f cloud-sql-proxy ]]; then @@ -55,12 +57,11 @@ fi # Setup proxy ./cloud-sql-proxy $socket $CLOUD_SQL_CONNECTION_NAME & -sleep 10 - +sleep 5 echo "Proxy ready for use" # Run whatever command was passed to this script -$@ || STATUS=$? +$@ || STATUS=$? # Cleanup echo "Shutting down proxy process" From 82ff1dde10aeba87ee64affcaf3961bdb552530c Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 14:52:57 +1100 Subject: [PATCH 35/43] actually use the new setting --- cloud-sql/mysql/mysql/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index a255adcffd..933af726a1 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -15,7 +15,7 @@ "start": "node server/server.js", "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/sql-proxy.sh", "system-test": "npm run proxy -- c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", - "system-test-unix": "npm run proxy -s -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", + "system-test-unix": "SOCKET=unix npm run proxy -s -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { From 8d5befd0e519b9670a73ef8f0959a2f2d3dfd9e2 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 14:53:13 +1100 Subject: [PATCH 36/43] remove old setting --- cloud-sql/mysql/mysql/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 933af726a1..5248ef9914 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -15,7 +15,7 @@ "start": "node server/server.js", "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/sql-proxy.sh", "system-test": "npm run proxy -- c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", - "system-test-unix": "SOCKET=unix npm run proxy -s -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", + "system-test-unix": "SOCKET=unix npm run proxy -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { From b83a1afdf8b2659b5021dc83750c0b58d9524ddb Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 15:02:45 +1100 Subject: [PATCH 37/43] attempt formatting --- .github/workflows/utils/sql-proxy.sh | 11 ++++++++--- cloud-sql/mysql/mysql/ci-setup.json | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/utils/sql-proxy.sh b/.github/workflows/utils/sql-proxy.sh index 3adc9b0d7b..d8ecb52570 100755 --- a/.github/workflows/utils/sql-proxy.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -36,12 +36,17 @@ PROXY_VERSION="v2.15.1" SOCKET=${SOCKET:-tcp} +echop(){ + echo "\033[0;35m $1 \033[0m" +} + + if [[ $SOCKET == "unix" ]]; then UNIX_SOCKET_DIR=${UNIX_SOCKET_DIR:-"tmp/cloudsql"} mkdir -p $UNIX_SOCKET_DIR && chmod 777 $UNIX_SOCKET_DIR socket="--unix-socket $UNIX_SOCKET_DIR" fi -echo "Setting up cloud-sql-proxy for $SOCKET socket connections" +echop "Setting up cloud-sql-proxy for $SOCKET socket connections" # Download the Cloud SQL Auth Proxy (only once) if [[ ! -f cloud-sql-proxy ]]; then @@ -58,13 +63,13 @@ fi # Setup proxy ./cloud-sql-proxy $socket $CLOUD_SQL_CONNECTION_NAME & sleep 5 -echo "Proxy ready for use" +echop "Proxy ready for use" # Run whatever command was passed to this script $@ || STATUS=$? # Cleanup -echo "Shutting down proxy process" +echop "Shutting down proxy process" pkill -f "cloud-sql-proxy" || echo "cloud-sql-proxy process not found. Was it already stopped?" # Fail if the tests failed diff --git a/cloud-sql/mysql/mysql/ci-setup.json b/cloud-sql/mysql/mysql/ci-setup.json index 04119fb72f..4b1ee8cd4c 100644 --- a/cloud-sql/mysql/mysql/ci-setup.json +++ b/cloud-sql/mysql/mysql/ci-setup.json @@ -2,8 +2,8 @@ "env": { "INSTANCE_HOST": "127.0.0.1", "INSTANCE_CONNECTION_NAME": "nodejs-docs-samples-tests:us-central1:mysql-ci", - "CLOUD_SQL_CONNECTION_NAME": "$INSTANCE_CONNECTION_NAME", "UNIX_SOCKET_DIR": "tmp/cloudsql", + "CLOUD_SQL_CONNECTION_NAME": "$INSTANCE_CONNECTION_NAME", "INSTANCE_UNIX_SOCKET": "$UNIX_SOCKET_DIR/$INSTANCE_CONNECTION_NAME", "DB_NAME": "kokoro_ci", "DB_USER": "kokoro_ci" From 1e5b92dffac1f99072c6beac245c87e558d21ec2 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 15:07:37 +1100 Subject: [PATCH 38/43] add mocha colour --- cloud-sql/mysql/mysql/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 5248ef9914..c1c7840fcd 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -14,8 +14,8 @@ "scripts": { "start": "node server/server.js", "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/sql-proxy.sh", - "system-test": "npm run proxy -- c8 mocha -p -j 2 test/server.test.js --timeout=60000 --exit", - "system-test-unix": "SOCKET=unix npm run proxy -- c8 mocha -p -j 2 test/server-unix.test.js --timeout=60000 --exit", + "system-test": "npm run proxy -- c8 mocha -p -j 2 test/server.test.js --colors --timeout=60000 --exit", + "system-test-unix": "SOCKET=unix npm run proxy -- c8 mocha -p -j 2 test/server-unix.test.js --colors --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" }, "dependencies": { From a8f39d51d2eb489b0ffb832f4f797909d4ef39d2 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Fri, 28 Mar 2025 15:10:57 +1100 Subject: [PATCH 39/43] at least use something --- .github/workflows/utils/sql-proxy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/utils/sql-proxy.sh b/.github/workflows/utils/sql-proxy.sh index d8ecb52570..547dcd6898 100755 --- a/.github/workflows/utils/sql-proxy.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -37,7 +37,7 @@ PROXY_VERSION="v2.15.1" SOCKET=${SOCKET:-tcp} echop(){ - echo "\033[0;35m $1 \033[0m" + echo "👾 $1" } From 41bc54a5eeab973ce70d552d5a20b9ca5ef5a0dd Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Mon, 31 Mar 2025 10:18:38 +1100 Subject: [PATCH 40/43] code review comments --- .github/workflows/utils/sql-proxy.sh | 27 +++++++++++++++++++++++---- cloud-sql/mysql/mysql/package.json | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/.github/workflows/utils/sql-proxy.sh b/.github/workflows/utils/sql-proxy.sh index 547dcd6898..f4a0abc374 100755 --- a/.github/workflows/utils/sql-proxy.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -21,28 +21,47 @@ # # Note: in GitHub Actions environments, `/cloudsql` is not valid. # Ensure any INSTANCE_UNIX_SOCKET value is ~= $UNIX_SOCKET_DIR/$CLOUD_SQL_CONNECTION_NAME -# + +usage() { + cat << EOF # Usage: -# sql-proxy.sh [..] +# CLOUD_SQL_CONNECTION_NAME=project:region:instance sql-proxy.sh [..] # # Defaults to TCP socket proxy. Set `SOCKET=unix` for Unix sockets. # # Usage in package.json: # -# "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/debug-sql-proxy.sh", +# "proxy": "$GITHUB_WORKSPACE/.github/workflows/utils/debug-sql-proxy.sh", # "system-test": "npm run proxy -- c8 mocha test/... ", # "system-test-unix": "SOCKET=unix npm run proxy -- c8 mocha test/... ", +EOF +} + PROXY_VERSION="v2.15.1" SOCKET=${SOCKET:-tcp} -echop(){ +echop(){ # Print Echo echo "👾 $1" } +exit_message() { # Error Echo + echo "❌ $1" + usage() + exit 1 +} + +if [[ -z "$CLOUD_SQL_CONNECTION_NAME" ]]; then + exit_message "Must provide CLOUD_SQL_CONNECTION_NAME" +fi if [[ $SOCKET == "unix" ]]; then UNIX_SOCKET_DIR=${UNIX_SOCKET_DIR:-"tmp/cloudsql"} + + if [[ $UNIX_SOCKET_DIR == "/cloudsql "]]; then + exit_message "Cannot use /cloudsql in a GitHub Actions context" + fi + mkdir -p $UNIX_SOCKET_DIR && chmod 777 $UNIX_SOCKET_DIR socket="--unix-socket $UNIX_SOCKET_DIR" fi diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index c1c7840fcd..807370d86b 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,7 +13,7 @@ }, "scripts": { "start": "node server/server.js", - "proxy": "bash $GITHUB_WORKSPACE/.github/workflows/utils/sql-proxy.sh", + "proxy": "$GITHUB_WORKSPACE/.github/workflows/utils/sql-proxy.sh", "system-test": "npm run proxy -- c8 mocha -p -j 2 test/server.test.js --colors --timeout=60000 --exit", "system-test-unix": "SOCKET=unix npm run proxy -- c8 mocha -p -j 2 test/server-unix.test.js --colors --timeout=60000 --exit", "test": "npm run system-test && npm run system-test-unix" From 21ebc78c6901743f82d2152eb4d406ecee53173f Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Mon, 31 Mar 2025 10:24:01 +1100 Subject: [PATCH 41/43] syntax --- .github/workflows/utils/sql-proxy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/utils/sql-proxy.sh b/.github/workflows/utils/sql-proxy.sh index f4a0abc374..52fa2667d7 100755 --- a/.github/workflows/utils/sql-proxy.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -47,7 +47,7 @@ echop(){ # Print Echo exit_message() { # Error Echo echo "❌ $1" - usage() + usage exit 1 } From 919bd8ffd130c018a8611b7a3f8a9b4dda04ac91 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Mon, 31 Mar 2025 10:32:38 +1100 Subject: [PATCH 42/43] syntax --- .github/workflows/utils/sql-proxy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/utils/sql-proxy.sh b/.github/workflows/utils/sql-proxy.sh index 52fa2667d7..9562d2624d 100755 --- a/.github/workflows/utils/sql-proxy.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -58,7 +58,7 @@ fi if [[ $SOCKET == "unix" ]]; then UNIX_SOCKET_DIR=${UNIX_SOCKET_DIR:-"tmp/cloudsql"} - if [[ $UNIX_SOCKET_DIR == "/cloudsql "]]; then + if [[ $UNIX_SOCKET_DIR == "/cloudsql" ]]; then exit_message "Cannot use /cloudsql in a GitHub Actions context" fi From c425a7eaa117669b2efaf26944341d7da5334871 Mon Sep 17 00:00:00 2001 From: Katie McLaughlin Date: Mon, 31 Mar 2025 11:09:16 +1100 Subject: [PATCH 43/43] fix usage --- .github/workflows/utils/sql-proxy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/utils/sql-proxy.sh b/.github/workflows/utils/sql-proxy.sh index 9562d2624d..b27b7d24f8 100755 --- a/.github/workflows/utils/sql-proxy.sh +++ b/.github/workflows/utils/sql-proxy.sh @@ -31,7 +31,7 @@ usage() { # # Usage in package.json: # -# "proxy": "$GITHUB_WORKSPACE/.github/workflows/utils/debug-sql-proxy.sh", +# "proxy": "$GITHUB_WORKSPACE/.github/workflows/utils/sql-proxy.sh", # "system-test": "npm run proxy -- c8 mocha test/... ", # "system-test-unix": "SOCKET=unix npm run proxy -- c8 mocha test/... ", EOF