From 0899bfdcd32f4bd65acf1d155ca136cde41acb42 Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Fri, 7 Jun 2024 13:31:34 -0400 Subject: [PATCH 1/4] PHPC-2395: Fetch Atlas connectivity URIs from AWS Secrets Manager --- .evergreen/config/functions.yml | 13 ++++++- .evergreen/config/test-tasks.yml | 4 +-- .gitignore | 3 ++ tests/atlas.phpt | 60 ++++++++++++++++++-------------- tests/utils/skipif.php | 7 ---- tests/utils/tools.php | 23 ------------ 6 files changed, 50 insertions(+), 60 deletions(-) diff --git a/.evergreen/config/functions.yml b/.evergreen/config/functions.yml index 538abdea0..f872743a6 100644 --- a/.evergreen/config/functions.yml +++ b/.evergreen/config/functions.yml @@ -210,7 +210,6 @@ functions: params: include_expansions_in_env: - API_VERSION - - ATLAS_CONNECTIVITY_URIS - CRYPT_SHARED_LIB_PATH - MONGODB_URI - APPEND_URI @@ -223,6 +222,18 @@ functions: ${PREPARE_SHELL} bash ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh + "run atlas connectivity tests": + - command: shell.exec + type: test + params: + working_dir: "src" + shell: bash + script: | + ${PREPARE_SHELL} + . ${DRIVERS_TOOLS}/.evergreen/secrets_handling/setup-secrets.sh drivers/atlas_connect + TESTS="tests/atlas.phpt" \ + bash ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh + "cleanup": - command: shell.exec params: diff --git a/.evergreen/config/test-tasks.yml b/.evergreen/config/test-tasks.yml index cf929a671..ec1849519 100644 --- a/.evergreen/config/test-tasks.yml +++ b/.evergreen/config/test-tasks.yml @@ -2,9 +2,7 @@ tasks: - name: "test-atlas-connectivity" tags: ["atlas", "nodb"] commands: - - func: "run tests" - vars: - TESTS: "tests/atlas.phpt" + - func: "run atlas connectivity tests" # Test different storage engines - name: "test-mongodb-4.0-standalone-inmemory" diff --git a/.gitignore b/.gitignore index 3b6198ac2..b3ca647a7 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,6 @@ mongodb-*tgz # Coverage files coverage* + +# drivers-evergreen-tools secrets handling +secrets-export.sh diff --git a/tests/atlas.phpt b/tests/atlas.phpt index c0ef24e8f..00875b0db 100644 --- a/tests/atlas.phpt +++ b/tests/atlas.phpt @@ -2,23 +2,40 @@ Atlas Connectivity Tests --SKIPIF-- - --FILE-- 1]); $query = new \MongoDB\Driver\Query([]); -foreach (getAtlasConnectivityUrls() as $url) { - if (strpos($url, '#') === 0) { - echo trim(substr($url, 1)), "\n"; +foreach ($envs as $env) { + echo $env, ': '; + $uri = getenv($env); + + if (! is_string($uri)) { + echo "FAIL: env var is undefined\n"; continue; } try { - $m = new \MongoDB\Driver\Manager($url); + $m = new \MongoDB\Driver\Manager($uri); $m->executeCommand('admin', $command); iterator_to_array($m->executeQuery('test.test', $query)); echo "PASS\n"; @@ -30,25 +47,16 @@ foreach (getAtlasConnectivityUrls() as $url) { ===DONE=== --EXPECTF-- -Atlas Serverless -PASS -PASS -Atlas replica set (4.0) -PASS -PASS -Atlas sharded cluster (4.0) -PASS -PASS -Atlas free tier replica set -PASS -PASS -Atlas with only TLSv1.1 enabled (4.0) -PASS -PASS -Atlas with only TLSv1.2 enabled (4.0) -PASS -PASS -Atlas with only TLSv1.2 enabled (4.0) and bad credentials -FAIL: %s -FAIL: %s +ATLAS_SERVERLESS: PASS +ATLAS_SRV_SERVERLESS: PASS +ATLAS_FREE: PASS +ATLAS_SRV_FREE: PASS +ATLAS_REPL: PASS +ATLAS_SRV_REPL: PASS +ATLAS_SHRD: PASS +ATLAS_SRV_SHRD: PASS +ATLAS_TLS11: PASS +ATLAS_SRV_TLS11: PASS +ATLAS_TLS12: PASS +ATLAS_SRV_TLS12: PASS ===DONE=== diff --git a/tests/utils/skipif.php b/tests/utils/skipif.php index 2efd31f3d..e7ba4d242 100644 --- a/tests/utils/skipif.php +++ b/tests/utils/skipif.php @@ -494,10 +494,3 @@ function skip_if_no_crypt_shared() exit('skip crypt_shared is not available'); } } - -function skip_if_no_atlas_connectivity_urls() -{ - if (getAtlasConnectivityUrls() === []) { - exit('skip No Atlas URIs found'); - } -} diff --git a/tests/utils/tools.php b/tests/utils/tools.php index d0753b900..48a22c9d4 100644 --- a/tests/utils/tools.php +++ b/tests/utils/tools.php @@ -847,26 +847,3 @@ function failGetMore(Manager $manager) throw new Exception("Trying to configure a getMore fail point for a server version ($version) that doesn't support it"); } - -function getAtlasConnectivityUrls(): array -{ - $atlasUriString = getenv('ATLAS_CONNECTIVITY_URIS') ?: ''; - if (!$atlasUriString) { - return []; - } - - $rawUrls = explode("\n", $atlasUriString); - - $urls = []; - foreach ($rawUrls as $url) { - $url = trim($url); - - if ($url == '') { - continue; - } - - $urls[] = $url; - } - - return $urls; -} From 93ea35476fb35d7fe1f6089e4b5dd39b8d550ae6 Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Fri, 7 Jun 2024 14:56:10 -0400 Subject: [PATCH 2/4] Conditionally source setup-secrets.sh from run-tests.sh --- .evergreen/config/functions.yml | 12 ------------ .evergreen/config/test-tasks.yml | 10 +++++++++- .evergreen/run-tests.sh | 5 +++++ 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.evergreen/config/functions.yml b/.evergreen/config/functions.yml index f872743a6..f7022296a 100644 --- a/.evergreen/config/functions.yml +++ b/.evergreen/config/functions.yml @@ -222,18 +222,6 @@ functions: ${PREPARE_SHELL} bash ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh - "run atlas connectivity tests": - - command: shell.exec - type: test - params: - working_dir: "src" - shell: bash - script: | - ${PREPARE_SHELL} - . ${DRIVERS_TOOLS}/.evergreen/secrets_handling/setup-secrets.sh drivers/atlas_connect - TESTS="tests/atlas.phpt" \ - bash ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh - "cleanup": - command: shell.exec params: diff --git a/.evergreen/config/test-tasks.yml b/.evergreen/config/test-tasks.yml index ec1849519..af650bd41 100644 --- a/.evergreen/config/test-tasks.yml +++ b/.evergreen/config/test-tasks.yml @@ -2,7 +2,15 @@ tasks: - name: "test-atlas-connectivity" tags: ["atlas", "nodb"] commands: - - func: "run atlas connectivity tests" + # This creates secrets-export.sh, which is later sourced by run-tests.sh + - command: shell.exec + params: + working_dir: "src" + script: | + bash ${DRIVERS_TOOLS}/.evergreen/secrets_handling/setup-secrets.sh drivers/atlas_connect + - func: "run tests" + vars: + TESTS: "tests/atlas.phpt" # Test different storage engines - name: "test-mongodb-4.0-standalone-inmemory" diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 8a7524027..05e50000d 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -39,6 +39,11 @@ else echo "crypt_shared library will be loaded from path: $CRYPT_SHARED_LIB_PATH" fi +# Conditionally source setup-secrets.sh created by drivers-evergreen-tools +if [ -f "${PROJECT_DIRECTORY}/secrets-export.sh" ]; then + source ${PROJECT_DIRECTORY}/secrets-export.sh +fi + echo "Running tests with URI: $MONGODB_URI" # Run the tests, and store the results in a junit result file From 71712577320704336f425eb5c0cbfe8a8daed3eb Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Fri, 7 Jun 2024 20:06:16 -0400 Subject: [PATCH 3/4] Use subprocess.exec --- .evergreen/config/test-tasks.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.evergreen/config/test-tasks.yml b/.evergreen/config/test-tasks.yml index af650bd41..50045d6d7 100644 --- a/.evergreen/config/test-tasks.yml +++ b/.evergreen/config/test-tasks.yml @@ -3,11 +3,12 @@ tasks: tags: ["atlas", "nodb"] commands: # This creates secrets-export.sh, which is later sourced by run-tests.sh - - command: shell.exec + - command: subprocess.exec params: working_dir: "src" - script: | - bash ${DRIVERS_TOOLS}/.evergreen/secrets_handling/setup-secrets.sh drivers/atlas_connect + binary: bash + args: + - ${DRIVERS_TOOLS}/.evergreen/secrets_handling/setup-secrets.sh drivers/atlas_connect - func: "run tests" vars: TESTS: "tests/atlas.phpt" From 15b30f9263dcbfe7121e837d3a7b42bddfb3d8c7 Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Mon, 10 Jun 2024 13:15:42 -0400 Subject: [PATCH 4/4] Use bash -c option to invoke command with its own args --- .evergreen/config/test-tasks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.evergreen/config/test-tasks.yml b/.evergreen/config/test-tasks.yml index 50045d6d7..45c000a9b 100644 --- a/.evergreen/config/test-tasks.yml +++ b/.evergreen/config/test-tasks.yml @@ -8,6 +8,7 @@ tasks: working_dir: "src" binary: bash args: + - -c - ${DRIVERS_TOOLS}/.evergreen/secrets_handling/setup-secrets.sh drivers/atlas_connect - func: "run tests" vars: