diff --git a/.evergreen/atlas-uris.txt.enc b/.evergreen/atlas-uris.txt.enc deleted file mode 100644 index 50f6b321f..000000000 Binary files a/.evergreen/atlas-uris.txt.enc and /dev/null differ diff --git a/.evergreen/config/functions.yml b/.evergreen/config/functions.yml index ae9d74e9a..4628d8eaf 100644 --- a/.evergreen/config/functions.yml +++ b/.evergreen/config/functions.yml @@ -167,9 +167,19 @@ functions: "bootstrap mongo-orchestration": - command: shell.exec params: + include_expansions_in_env: + - MONGODB_VERSION + - TOPOLOGY + - AUTH + - SSL + - STORAGE_ENGINE + - LOAD_BALANCER + - REQUIRE_API_VERSION + - ORCHESTRATION_FILE script: | ${PREPARE_SHELL} - SKIP_LEGACY_SHELL=true MONGODB_VERSION=${MONGODB_VERSION} TOPOLOGY=${TOPOLOGY} AUTH=${AUTH} SSL=${SSL} STORAGE_ENGINE=${STORAGE_ENGINE} LOAD_BALANCER=${LOAD_BALANCER} REQUIRE_API_VERSION=${REQUIRE_API_VERSION} ORCHESTRATION_FILE=${ORCHESTRATION_FILE} sh ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh + SKIP_LEGACY_SHELL=true \ + sh ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh # run-orchestration generates expansion file with MONGODB_URI and CRYPT_SHARED_LIB_PATH - command: expansions.update params: @@ -185,28 +195,32 @@ functions: "run OCSP responder": - command: shell.exec params: + include_expansions_in_env: + - TEST_COLUMN + - CERT_TYPE + - USE_DELEGATE shell: bash script: | ${PREPARE_SHELL} - TEST_COLUMN=${TEST_COLUMN} \ - CERT_TYPE=${CERT_TYPE} \ - USE_DELEGATE=${USE_DELEGATE} \ ${PROJECT_DIRECTORY}/.evergreen/run-ocsp-responder.sh "run tests": - command: shell.exec type: test params: + include_expansions_in_env: + - API_VERSION + - ATLAS_CONNECTIVITY_URIS + - CRYPT_SHARED_LIB_PATH + - MONGODB_URI + - APPEND_URI + - SKIP_CRYPT_SHARED + - SSL + - SSL_DIR + - TESTS working_dir: "src" script: | ${PREPARE_SHELL} - API_VERSION=${API_VERSION} \ - CRYPT_SHARED_LIB_PATH=${CRYPT_SHARED_LIB_PATH} \ - MONGODB_URI="${MONGODB_URI}${APPEND_URI}" \ - SKIP_CRYPT_SHARED=${SKIP_CRYPT_SHARED} \ - SSL=${SSL} \ - SSL_DIR=${SSL_DIR} \ - TESTS=${TESTS} \ sh ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh "cleanup": @@ -242,12 +256,6 @@ functions: # Don't use ${file} syntax here because evergreen treats it as an empty expansion. [ -f "$file" ] && sh $file || echo "$file not available, skipping" - "decrypt atlas URI list": - - command: shell.exec - params: - script: | - openssl aes-256-cbc -S "${encrypted_uris_salt}" -K "${encrypted_uris_key}" -iv "${encrypted_uris_iv}" -in ${PROJECT_DIRECTORY}/.evergreen/atlas-uris.txt.enc -out ${PROJECT_DIRECTORY}/.evergreen/atlas-uris.txt -d - "start load balancer": - command: shell.exec params: diff --git a/.evergreen/config/test-tasks.yml b/.evergreen/config/test-tasks.yml index a3963ad2a..cf929a671 100644 --- a/.evergreen/config/test-tasks.yml +++ b/.evergreen/config/test-tasks.yml @@ -2,7 +2,6 @@ tasks: - name: "test-atlas-connectivity" tags: ["atlas", "nodb"] commands: - - func: "decrypt atlas URI list" - func: "run tests" vars: TESTS: "tests/atlas.phpt" diff --git a/.evergreen/config/test-variants.yml b/.evergreen/config/test-variants.yml index 59bf2d254..ce5abffea 100644 --- a/.evergreen/config/test-variants.yml +++ b/.evergreen/config/test-variants.yml @@ -19,7 +19,7 @@ buildvariants: - ".sharded .local !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" - ".loadbalanced .local !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" - "test-atlas-connectivity" - - ".ocsp !.4.4" + - ".ocsp !.4.4 !.5.0" display_tasks: - name: "test-ocsp-latest" execution_tasks: diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 662b974e3..d46cf57ed 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -5,6 +5,7 @@ set -o errexit # Exit the script with error if any of the commands fail API_VERSION=${API_VERSION:-} # Optional API_VERSION environment variable for run-tests.php CRYPT_SHARED_LIB_PATH="${CRYPT_SHARED_LIB_PATH:-}" # Optional path to crypt_shared library MONGODB_URI=${MONGODB_URI:-} # Connection string (including credentials and topology info) +APPEND_URI=${APPEND_URI:-} # Additional URI options to append to the URI. Used in OCSP tests SKIP_CRYPT_SHARED="${SKIP_CRYPT_SHARED:-no}" # Specify "yes" to ignore CRYPT_SHARED_LIB_PATH. Defaults to "no" SSL=${SSL:-no} # Specify "yes" to enable SSL. Defaults to "no" SSL_DIR=${SSL_DIR-} # Optional SSL_DIR environment variable for run-tests.php @@ -15,6 +16,9 @@ OS=$(uname -s | tr '[:upper:]' '[:lower:]') export REPORT_EXIT_STATUS=1 +# Append test-specific URI options +MONGODB_URI=${MONGODB_URI}${APPEND_URI} + # Determine if MONGODB_URI already has a query string SUFFIX=$(echo "$MONGODB_URI" | grep -Eo "\?(.*)" | cat) diff --git a/.gitignore b/.gitignore index 4f8e0bf72..3b6198ac2 100644 --- a/.gitignore +++ b/.gitignore @@ -52,7 +52,6 @@ php.ini !.github/ !tests/utils/*.php !.evergreen -.evergreen/atlas-uris.txt !scripts diff --git a/tests/atlas.phpt b/tests/atlas.phpt index 8869a3146..c0ef24e8f 100644 --- a/tests/atlas.phpt +++ b/tests/atlas.phpt @@ -1,25 +1,17 @@ --TEST-- Atlas Connectivity Tests --SKIPIF-- - + + + --FILE-- 1]); $query = new \MongoDB\Driver\Query([]); -foreach ($urls as $url) { - $url = trim($url); - - if ($url == '') { - continue; - } - +foreach (getAtlasConnectivityUrls() as $url) { if (strpos($url, '#') === 0) { echo trim(substr($url, 1)), "\n"; continue; diff --git a/tests/utils/skipif.php b/tests/utils/skipif.php index e7ba4d242..2efd31f3d 100644 --- a/tests/utils/skipif.php +++ b/tests/utils/skipif.php @@ -494,3 +494,10 @@ 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 d6a7ed13b..6eb897722 100644 --- a/tests/utils/tools.php +++ b/tests/utils/tools.php @@ -853,3 +853,26 @@ 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; +}