diff --git a/.evergreen/.evg.yml b/.evergreen/.evg.yml index c20533906ec..00165cd583f 100644 --- a/.evergreen/.evg.yml +++ b/.evergreen/.evg.yml @@ -9,8 +9,8 @@ stepback: true # Mark a failure as a system/bootstrap failure (purple box) rather then a task # failure by default. -# Actual testing tasks are marked with `type: test` -command_type: system +# Actual testing tasks are marked with `type: "test"` +command_type: "system" # Protect ourselves against rogue test case, or curl gone wild, that runs forever exec_timeout_secs: 3600 @@ -23,7 +23,12 @@ timeout: ls -la functions: - "fetch source": + + # + # Start up and teardown functions + # + + "fetch-source": # Executes git clone and applies the submitted patch, if any - command: git.get_project params: @@ -41,59 +46,64 @@ functions: - command: shell.exec params: working_dir: "src" - shell: bash + shell: "bash" script: | - # Get the current unique version of this checkout - if [ "${is_patch}" = "true" ]; then - CURRENT_VERSION=$(git describe)-patch-${version_id} - else - CURRENT_VERSION=latest - fi - - export DRIVERS_TOOLS="$(pwd)/../drivers-tools" - - # Python has cygwin path problems on Windows. Detect prospective mongo-orchestration home directory - if [ "Windows_NT" == "$OS" ]; then # Magic variable in cygwin - export DRIVERS_TOOLS=$(cygpath -m $DRIVERS_TOOLS) - fi - - export MONGO_ORCHESTRATION_HOME="$DRIVERS_TOOLS/.evergreen/orchestration" - export MONGODB_BINARIES="$DRIVERS_TOOLS/mongodb/bin" - export UPLOAD_BUCKET="${project}" - export PROJECT_DIRECTORY="$(pwd)" - - cat < expansion.yml - CURRENT_VERSION: "$CURRENT_VERSION" - DRIVERS_TOOLS: "$DRIVERS_TOOLS" - MONGO_ORCHESTRATION_HOME: "$MONGO_ORCHESTRATION_HOME" - MONGODB_BINARIES: "$MONGODB_BINARIES" - UPLOAD_BUCKET: "$UPLOAD_BUCKET" - PROJECT_DIRECTORY: "$PROJECT_DIRECTORY" - PREPARE_SHELL: | - set -o errexit - set -o xtrace - export DRIVERS_TOOLS="$DRIVERS_TOOLS" - export MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME" - export MONGODB_BINARIES="$MONGODB_BINARIES" - export UPLOAD_BUCKET="$UPLOAD_BUCKET" - export PROJECT_DIRECTORY="$PROJECT_DIRECTORY" - - export TMPDIR="$MONGO_ORCHESTRATION_HOME/db" - export PATH="$MONGODB_BINARIES:$PATH" - export PROJECT="${project}" - EOT - # See what we've done - cat expansion.yml + # Get the current unique version of this checkout + if [ "${is_patch}" = "true" ]; then + CURRENT_VERSION=$(git describe)-patch-${version_id} + else + CURRENT_VERSION=latest + fi + + export DRIVERS_TOOLS="$(pwd)/../drivers-tools" + + # Python has cygwin path problems on Windows. Detect prospective mongo-orchestration home directory + if [ "Windows_NT" == "$OS" ]; then # Magic variable in cygwin + export DRIVERS_TOOLS=$(cygpath -m $DRIVERS_TOOLS) + fi + + export MONGO_ORCHESTRATION_HOME="$DRIVERS_TOOLS/.evergreen/orchestration" + export MONGODB_BINARIES="$DRIVERS_TOOLS/mongodb/bin" + export UPLOAD_BUCKET="${project}" + export PROJECT_DIRECTORY="$(pwd)" + export ARCHIVE_FILE_NAME="mongo-java-driver.tgz" + export ARCHIVE_FILE_PATH="/tmp/$ARCHIVE_FILE_NAME" + + cat < expansion.yml + CURRENT_VERSION: "$CURRENT_VERSION" + DRIVERS_TOOLS: "$DRIVERS_TOOLS" + MONGO_ORCHESTRATION_HOME: "$MONGO_ORCHESTRATION_HOME" + MONGODB_BINARIES: "$MONGODB_BINARIES" + UPLOAD_BUCKET: "$UPLOAD_BUCKET" + PROJECT_DIRECTORY: "$PROJECT_DIRECTORY" + ARCHIVE_FILE_NAME: "$ARCHIVE_FILE_NAME" + ARCHIVE_FILE_PATH: "$ARCHIVE_FILE_PATH" + PREPARE_SHELL: | + set -o errexit + set -o xtrace + export DRIVERS_TOOLS="$DRIVERS_TOOLS" + export MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME" + export MONGODB_BINARIES="$MONGODB_BINARIES" + export UPLOAD_BUCKET="$UPLOAD_BUCKET" + export PROJECT_DIRECTORY="$PROJECT_DIRECTORY" + export TMPDIR="$MONGO_ORCHESTRATION_HOME/db" + export PATH="$MONGODB_BINARIES:$PATH" + export PROJECT="${project}" + export ARCHIVE_FILE_NAME="$ARCHIVE_FILE_NAME" + export ARCHIVE_FILE_PATH="$ARCHIVE_FILE_PATH" + EOT + # See what we've done + cat expansion.yml # Load the expansion file to make an evergreen variable with the current unique version - command: expansions.update params: file: src/expansion.yml - "prepare resources": + "prepare-resources": - command: shell.exec params: - shell: bash + shell: "bash" script: | ${PREPARE_SHELL} rm -rf $DRIVERS_TOOLS @@ -105,23 +115,175 @@ functions: fi echo "{ \"releases\": { \"default\": \"$MONGODB_BINARIES\" }}" > $MONGO_ORCHESTRATION_HOME/orchestration.config - "exec script" : + "fix-absolute-paths": + - command: shell.exec + params: + script: | + ${PREPARE_SHELL} + for filename in $(find ${DRIVERS_TOOLS} -name \*.json); do + perl -p -i -e "s|ABSOLUTE_PATH_REPLACEMENT_TOKEN|${DRIVERS_TOOLS}|g" $filename + done + + "assume-aws-test-secrets-role": + - command: ec2.assume_role + params: + role_arn: ${aws_test_secrets_role} + + "gradle-cache": - command: shell.exec - type: test params: working_dir: "src" - shell: bash + script: | + export GRADLE_RO_DEP_CACHE="$(pwd)/build/gradle-cache" + .evergreen/gradle-cache.sh + + "create-archive-tar-file": + - command: shell.exec + params: + working_dir: "src" + script: | + echo "Creating archive tar file at ${ARCHIVE_FILE_PATH}" + tar --exclude-vcs -czf "${ARCHIVE_FILE_PATH}" . + echo "Created archive tar file at ${ARCHIVE_FILE_PATH}" + + "start-mongo-orchestration": + - command: shell.exec + params: + script: | + ${PREPARE_SHELL} + REQUIRE_API_VERSION=${REQUIRE_API_VERSION} LOAD_BALANCER=${LOAD_BALANCER} MONGODB_VERSION=${VERSION} TOPOLOGY=${TOPOLOGY} \ + AUTH=${AUTH} SSL=${SSL} STORAGE_ENGINE=${STORAGE_ENGINE} ORCHESTRATION_FILE=${ORCHESTRATION_FILE} \ + bash ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh + # run-orchestration generates expansion file with the MONGODB_URI for the cluster + - command: expansions.update + params: + file: mo-expansion.yml + "stop-mongo-orchestration": + - command: shell.exec + params: + shell: "bash" + script: | + ${PREPARE_SHELL} + bash ${DRIVERS_TOOLS}/.evergreen/stop-orchestration.sh || true + + "start-mongohoused": + - command: shell.exec + params: + include_expansions_in_env: [ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN" ] + script: | + DRIVERS_TOOLS="${DRIVERS_TOOLS}" bash ${DRIVERS_TOOLS}/.evergreen/atlas_data_lake/pull-mongohouse-image.sh + - command: shell.exec + params: + script: | + DRIVERS_TOOLS="${DRIVERS_TOOLS}" bash ${DRIVERS_TOOLS}/.evergreen/atlas_data_lake/run-mongohouse-image.sh + + "stop-mongohoused": + - command: shell.exec + params: + include_expansions_in_env: [ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN" ] + script: | + DRIVERS_TOOLS="${DRIVERS_TOOLS}" bash ${DRIVERS_TOOLS}/.evergreen/atlas_data_lake/teardown.sh || true + + + "start-serverless": + - command: shell.exec + params: + shell: "bash" + include_expansions_in_env: [ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN" ] + script: | + ${PREPARE_SHELL} + bash ${DRIVERS_TOOLS}/.evergreen/serverless/setup-secrets.sh ${VAULT_NAME} + bash ${DRIVERS_TOOLS}/.evergreen/serverless/create-instance.sh + - command: expansions.update + params: + file: serverless-expansion.yml + "stop-serverless": + - command: shell.exec + params: + shell: "bash" + include_expansions_in_env: [ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN" ] script: | ${PREPARE_SHELL} - ${PROJECT_DIRECTORY}/${file} + bash ${DRIVERS_TOOLS}/.evergreen/serverless/delete-instance.sh || true - "upload mo artifacts": + "start-load-balancer": + - command: shell.exec + params: + script: | + DRIVERS_TOOLS=${DRIVERS_TOOLS} MONGODB_URI=${MONGODB_URI} bash ${DRIVERS_TOOLS}/.evergreen/run-load-balancer.sh start + - command: expansions.update + params: + file: lb-expansion.yml + "stop-load-balancer": + - command: shell.exec + params: + script: | + cd ${DRIVERS_TOOLS}/.evergreen + DRIVERS_TOOLS=${DRIVERS_TOOLS} bash ${DRIVERS_TOOLS}/.evergreen/run-load-balancer.sh stop || true + + "stop-aws": + - command: shell.exec + params: + shell: "bash" + script: | + ${PREPARE_SHELL} + cd "${DRIVERS_TOOLS}/.evergreen/auth_aws" + if [ -f "./aws_e2e_setup.json" ]; then + . ./activate-authawsvenv.sh + python ./lib/aws_assign_instance_profile.py + fi + + "cleanup": + - command: shell.exec + params: + shell: "bash" + script: | + ${PREPARE_SHELL} + rm -rf $DRIVERS_TOOLS || true + + "add-aws-auth-variables-to-file": + - command: shell.exec + type: "test" + params: + include_expansions_in_env: [ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN" ] + shell: "bash" + working_dir: "src" + script: | + ${PREPARE_SHELL} + cd $DRIVERS_TOOLS/.evergreen/auth_aws + ./setup_secrets.sh drivers/aws_auth + + "start-csfle-servers": + - command: ec2.assume_role + params: + role_arn: ${aws_test_secrets_role} + - command: subprocess.exec + params: + working_dir: "src" + binary: "bash" + include_expansions_in_env: ["AWS_SECRET_ACCESS_KEY", "AWS_ACCESS_KEY_ID", "AWS_SESSION_TOKEN"] + args: + - ${DRIVERS_TOOLS}/.evergreen/csfle/setup.sh + + "stop-csfle-servers": + - command: shell.exec + params: + shell: "bash" + script: | + ${PREPARE_SHELL} + bash ${DRIVERS_TOOLS}/.evergreen/csfle/teardown.sh || true + + # + # Publishing / uploading functions + # + + "upload-mo-artifacts": - command: ec2.assume_role params: role_arn: ${UPLOAD_MO_ARTIFACTS_ROLE_ARN} - command: shell.exec params: - shell: bash + shell: "bash" script: | ${PREPARE_SHELL} find $MONGO_ORCHESTRATION_HOME -name \*.log | xargs tar czf mongodb-logs.tar.gz @@ -134,7 +296,7 @@ functions: remote_file: ${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-mongodb-logs.tar.gz bucket: mciuploads permissions: public-read - content_type: ${content_type|application/x-gzip} + content_type: "${content_type|application/x-gzip}" display_name: "mongodb-logs.tar.gz" - command: s3.put params: @@ -145,10 +307,10 @@ functions: remote_file: ${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-orchestration.log bucket: mciuploads permissions: public-read - content_type: ${content_type|text/plain} + content_type: "${content_type|text/plain}" display_name: "orchestration.log" - "create and upload SSDLC release assets": + "create-and-upload-SSDLC-release-assets": - command: shell.exec params: shell: "bash" @@ -171,8 +333,8 @@ functions: bucket: java-driver-release-assets region: us-west-1 permissions: private - content_type: text/markdown - display_name: ssdlc_compliance_report.md + content_type: "text/markdown" + display_name: "ssdlc_compliance_report.md" - command: s3.put params: aws_key: ${AWS_ACCESS_KEY_ID} @@ -185,123 +347,124 @@ functions: bucket: java-driver-release-assets region: us-west-1 permissions: private - content_type: application/sarif+json + content_type: "application/sarif+json" display_name: - "upload test results": + "upload-test-results": - command: attach.xunit_results params: file: ./src/*/build/test-results/*/TEST-*.xml - "bootstrap mongo-orchestration": + "trace-artifacts": - command: shell.exec params: + working_dir: "src" script: | - ${PREPARE_SHELL} - REQUIRE_API_VERSION=${REQUIRE_API_VERSION} LOAD_BALANCER=${LOAD_BALANCER} MONGODB_VERSION=${VERSION} TOPOLOGY=${TOPOLOGY} \ - AUTH=${AUTH} SSL=${SSL} STORAGE_ENGINE=${STORAGE_ENGINE} ORCHESTRATION_FILE=${ORCHESTRATION_FILE} \ - bash ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh - # run-orchestration generates expansion file with the MONGODB_URI for the cluster + PRODUCT_VERSION="$(echo -n "$(git describe --tags --always --dirty)" | cut -c 2-)" + cat > ssdlc-expansions.yml < ssdlc-expansions.yml < /tmp/testazurekms_publickey @@ -2043,20 +2063,22 @@ task_groups: export AZUREKMS_RESOURCEGROUP=${testazurekms_resourcegroup} $DRIVERS_TOOLS/.evergreen/csfle/azurekms/delete-vm.sh tasks: - - testazurekms-task + - "test-azure-kms-task" - - name: test-oidc-task-group + - name: "test-oidc-task-group" + setup_group_can_fail_task: true + setup_group_timeout_secs: 1800 + teardown_task_can_fail_task: true + teardown_task_timeout_secs: 1800 setup_group: - - func: fetch source - - func: prepare resources - - func: fix absolute paths - - command: ec2.assume_role - params: - role_arn: ${aws_test_secrets_role} + - func: "fetch-source" + - func: "prepare-resources" + - func: "fix-absolute-paths" + - func: "assume-aws-test-secrets-role" - command: subprocess.exec params: binary: bash - include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"] + include_expansions_in_env: [ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN" ] args: - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/setup.sh teardown_task: @@ -2065,19 +2087,25 @@ task_groups: binary: bash args: - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/teardown.sh - setup_group_can_fail_task: true - setup_group_timeout_secs: 1800 tasks: - - oidc-auth-test + - "oidc-auth-test-task" - - name: test-oidc-azure-task-group + - name: "test-oidc-azure-task-group" + setup_group_can_fail_task: true + setup_group_timeout_secs: 1800 + teardown_task_can_fail_task: true + teardown_task_timeout_secs: 1800 setup_group: - - func: fetch source - - func: prepare resources - - func: fix absolute paths + - func: "fetch-source" + - func: "prepare-resources" + - func: "fix-absolute-paths" + - func: "gradle-cache" + - func: "create-archive-tar-file" + - func: "assume-aws-test-secrets-role" - command: subprocess.exec params: binary: bash + include_expansions_in_env: [ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN" ] env: AZUREOIDC_VMNAME_PREFIX: "JAVA_DRIVER" args: @@ -2088,22 +2116,28 @@ task_groups: binary: bash args: - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/azure/delete-vm.sh - setup_group_can_fail_task: true - setup_group_timeout_secs: 1800 tasks: - - oidc-auth-test-azure + - "oidc-auth-test-azure-task" - - name: test-oidc-gcp-task-group + - name: "test-oidc-gcp-task-group" + setup_group_can_fail_task: true + setup_group_timeout_secs: 1800 + teardown_task_can_fail_task: true + teardown_task_timeout_secs: 1800 setup_group: - - func: fetch source - - func: prepare resources - - func: fix absolute paths + - func: "fetch-source" + - func: "prepare-resources" + - func: "fix-absolute-paths" + - func: "gradle-cache" + - func: "create-archive-tar-file" + - func: "assume-aws-test-secrets-role" - command: subprocess.exec params: binary: bash + include_expansions_in_env: [ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN" ] env: GCPOIDC_VMNAME_PREFIX: "JAVA_DRIVER" - GCPKMS_MACHINETYPE: "e2-medium" # comparable elapsed time to Azure; default was starved, caused timeouts + GCPKMS_MACHINEtype: "e2-medium" # comparable elapsed time to Azure; default was starved, caused timeouts" args: - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/gcp/setup.sh teardown_task: @@ -2112,357 +2146,363 @@ task_groups: binary: bash args: - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/gcp/teardown.sh - setup_group_can_fail_task: true - setup_group_timeout_secs: 1800 tasks: - - oidc-auth-test-gcp + - "oidc-auth-test-gcp-task" - - name: test-oidc-k8s-task-group + - name: "test-oidc-k8s-task-group" setup_group_can_fail_task: true setup_group_timeout_secs: 1800 teardown_task_can_fail_task: true - teardown_group_timeout_secs: 180 + teardown_task_timeout_secs: 1800 setup_group: - - func: fetch source - - func: prepare resources - - func: fix absolute paths - - command: ec2.assume_role - params: - role_arn: ${aws_test_secrets_role} + - func: "fetch-source" + - func: "prepare-resources" + - func: "fix-absolute-paths" + - func: "gradle-cache" + - func: "create-archive-tar-file" + - func: "assume-aws-test-secrets-role" - command: subprocess.exec params: binary: bash - include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"] + include_expansions_in_env: [ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN" ] args: - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/k8s/setup.sh - teardown_group: + teardown_task: - command: subprocess.exec params: binary: bash args: - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/k8s/teardown.sh tasks: - - oidc-auth-test-k8s + - "oidc-auth-test-k8s-task" buildvariants: -# Test packaging and other release related routines -- name: static-checks - display_name: "Static Checks" - run_on: rhel80-small - tasks: - - name: "static-analysis" - -- matrix_name: "tests-zlib-compression" - matrix_spec: { compressor : "zlib", auth: "noauth", ssl: "nossl", jdk: "jdk8", version: "*", topology: "standalone", os: "linux" } - display_name: "${version} ${compressor} ${topology} ${auth} ${ssl} ${jdk} ${os} " - tags: ["tests-variant"] - tasks: - - name: "test-sync" - - name: "test-reactive" - - name: "test-core" - - name: "test-legacy" - -- matrix_name: "tests-snappy-compression" - matrix_spec: { compressor : "snappy", auth: "noauth", ssl: "nossl", jdk: "jdk8", version: "*", topology: "standalone", os: "linux" } - display_name: "${version} ${compressor} ${topology} ${auth} ${ssl} ${jdk} ${os} " - tags: ["tests-variant"] - tasks: - - name: "test-sync" - - name: "test-reactive" - - name: "test-core" - - name: "test-legacy" - -- matrix_name: "tests-zstd-compression" - matrix_spec: { compressor : "zstd", auth: "noauth", ssl: "nossl", jdk: "jdk8", - version: ["4.2", "4.4", "5.0", "6.0", "7.0", "8.0", "latest"], - topology: "standalone", os: "linux" } - display_name: "${version} ${compressor} ${topology} ${auth} ${ssl} ${jdk} ${os} " - tags: ["tests-variant"] - tasks: - - name: "test-sync" - - name: "test-reactive" - - name: "test-core" - - name: "test-legacy" - -- matrix_name: "tests-unit" - matrix_spec: { jdk: [ "jdk8", "jdk11", "jdk17", "jdk21"], os: "linux" } - display_name: "${jdk} ${os} Unit" - tags: ["tests-variant"] - tasks: - - name: "test-bson-and-crypt" - -- matrix_name: "tests-jdk8-unsecure" - matrix_spec: { auth: "noauth", ssl: "nossl", jdk: "jdk8", version: ["4.2", "4.4", "5.0", "6.0", "7.0", "8.0", "latest"], - topology: "*", os: "linux" } - display_name: "${version} ${topology} ${auth} ${ssl} ${jdk} ${os} " - tags: ["tests-variant"] - tasks: - - name: "test-sync" - - name: "test-reactive" - - name: "test-core" - - name: "test-legacy" - -- matrix_name: "tests-jdk-secure" - matrix_spec: { auth: "auth", ssl: "ssl", jdk: [ "jdk8", "jdk17", "jdk21"], - version: ["4.2", "4.4", "5.0", "6.0", "7.0", "8.0", "latest" ], - topology: "*", os: "linux" } - display_name: "${version} ${topology} ${auth} ${ssl} ${jdk} ${os} " - tags: ["tests-variant"] - tasks: - - name: "test-sync" - - name: "test-reactive" - - name: "test-core" - - name: "test-legacy" - -- matrix_name: "tests-jdk-secure-jdk11" - matrix_spec: { auth: "auth", ssl: "ssl", jdk: ["jdk11"], version: ["7.0"], topology: ["replicaset"], os: "linux" } - display_name: "${version} ${topology} ${auth} ${ssl} ${jdk} ${os} " - tags: ["tests-variant"] - tasks: - - name: "test-sync" - - name: "test-reactive" - - name: "test-core" - - name: "test-legacy" - -- matrix_name: "tests-require-api-version" - matrix_spec: { api-version: "required", auth: "auth", ssl: "nossl", jdk: ["jdk21"], version: ["5.0", "6.0", "7.0", "8.0", "latest"], - topology: "standalone", os: "linux" } - display_name: "${version} ${topology} ${api-version} " - tags: ["tests-variant"] - tasks: - - name: "test-sync" - - name: "test-reactive" - - name: "test-core" - - name: "test-legacy" - -- matrix_name: "tests-load-balancer-secure" - matrix_spec: { auth: "auth", ssl: "ssl", jdk: ["jdk21"], version: ["5.0", "6.0", "7.0", "8.0", "latest"], topology: "sharded-cluster", - os: "ubuntu" } - display_name: "Load Balancer ${version} ${auth} ${ssl} ${jdk} ${os}" - tasks: - - name: "load-balancer-test" - -- matrix_name: "tests-serverless" - matrix_spec: { serverless: "*", jdk: ["jdk21"], os: "ubuntu" } - display_name: "${serverless} ${jdk} ${os}" - tasks: - - name: "serverless-test" - -- matrix_name: "tests-slow" - matrix_spec: { auth: "noauth", ssl: "nossl", jdk: "jdk21", version: ["7.0"], topology: "standalone", os: "linux" } - display_name: "Slow: ${version} ${topology} ${ssl} ${jdk} ${os} " - tags: ["tests-slow-variant"] - tasks: - - name: "slow-test" - -- matrix_name: "tests-socket" - matrix_spec: { auth: "*", ssl: "nossl", jdk: "jdk8", version: ["4.2"], topology: "standalone", os: "linux" } - display_name: "Socket: ${version} ${topology} ${auth} ${jdk} ${os} " - tags: ["tests-socket-variant"] - tasks: - - name: "socket-test" - -- matrix_name: "tests-netty" - matrix_spec: { auth: "noauth", ssl: "*", jdk: "jdk8", version: ["7.0"], topology: "replicaset", os: "linux" } - display_name: "Netty: ${version} ${topology} ${ssl} ${auth} ${jdk} ${os} " - tags: ["tests-netty-variant"] - tasks: - - name: "netty-test" - -- matrix_name: "tests-netty-ssl-provider" - matrix_spec: { netty-ssl-provider: "*", auth: "auth", ssl: "ssl", jdk: "jdk8", version: ["7.0"], topology: "replicaset", os: "linux" } - display_name: "Netty SSL provider: ${version} ${topology} ${ssl} SslProvider.${netty-ssl-provider} ${auth} ${jdk} ${os} " - tags: ["tests-netty-variant"] - tasks: - - name: "netty-test" - -- matrix_name: "tests-socket-snappy-compression" - matrix_spec: { compressor : "snappy", auth: "noauth", ssl: "nossl", jdk: "jdk8", version: ["4.2"], topology: "standalone", os: "linux" } - display_name: "Socket: ${version} ${compressor} ${topology} ${auth} ${jdk} ${os} " - tags: ["tests-socket-variant"] - tasks: - - name: "socket-test" - -- matrix_name: "tests-socket-zstd-compression" - matrix_spec: { compressor : "zstd", auth: "noauth", ssl: "nossl", jdk: "jdk8", version: ["4.2"], topology: "standalone", os: "linux" } - display_name: "Socket: ${version} ${compressor} ${topology} ${auth} ${jdk} ${os} " - tags: ["tests-socket-variant"] - tasks: - - name: "socket-test" - -- matrix_name: "test-gssapi" - matrix_spec: { jdk: ["jdk8", "jdk17", "jdk21"], os: "linux", gssapi-login-context-name: "*"} - display_name: "GSSAPI (Kerberos) Auth test ${jdk} ${os} ${gssapi-login-context-name}" - tags: ["test-gssapi-variant"] - tasks: - - name: "gssapi-auth-test" - -- name: "perf" - display_name: Performance Tests - tags: ["perf-variant"] - run_on: rhel90-dbx-perf-large - tasks: - - name: "perf" - - name: "perf-netty" - -- name: plain-auth-test - display_name: "PLAIN (LDAP) Auth test" - run_on: rhel80-small - tasks: - - name: "plain-auth-test" - -- name: "oidc-auth-test" - display_name: "OIDC Auth" - run_on: ubuntu2204-small - tasks: - - name: test-oidc-task-group - batchtime: 20160 # 14 days - -- name: test-oidc-azure-variant - display_name: "OIDC Auth Azure" - run_on: ubuntu2204-small - tasks: - - name: test-oidc-azure-task-group - batchtime: 20160 # 14 days - -- name: test-oidc-gcp-variant - display_name: "OIDC Auth GCP" - run_on: ubuntu2204-small - tasks: - - name: test-oidc-gcp-task-group - batchtime: 20160 # 14 days - -- name: test-oidc-k8s-variant - display_name: "OIDC Auth K8S" - run_on: ubuntu2204-small - tasks: - - name: test-oidc-k8s-task-group - batchtime: 20160 # 14 days - -- matrix_name: "aws-auth-test" - matrix_spec: { ssl: "nossl", jdk: ["jdk8", "jdk17", "jdk21"], version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest"], os: "ubuntu", - aws-credential-provider: "*" } - display_name: "MONGODB-AWS Basic Auth test ${version} ${jdk} ${aws-credential-provider}" - run_on: ubuntu2004-small - tasks: - - name: "aws-auth-test-with-regular-aws-credentials" - -- matrix_name: "aws-ec2-auth-test" - matrix_spec: { ssl: "nossl", jdk: ["jdk21"], version: ["7.0"], os: "ubuntu", aws-credential-provider: "*" } - display_name: "MONGODB-AWS Advanced Auth test ${version} ${jdk} ${aws-credential-provider}" - run_on: ubuntu2004-small - tasks: - - name: "aws-auth-test-with-aws-EC2-credentials" - - name: "aws-auth-test-with-assume-role-credentials" - - name: "aws-auth-test-with-aws-credentials-as-environment-variables" - - name: "aws-auth-test-with-aws-credentials-and-session-token-as-environment-variables" - - name: "aws-auth-test-with-web-identity-credentials" - -- matrix_name: "accept-api-version-2-test" - matrix_spec: { ssl: "nossl", auth: "noauth", jdk: "jdk21", version: ["5.0", "6.0", "7.0", "8.0", "latest"], topology: "standalone", - os: "linux" } - display_name: "Accept API Version 2 ${version}" - run_on: ubuntu2004-small - tasks: - - name: "accept-api-version-2-test" - -- matrix_name: "ocsp-test" - matrix_spec: { auth: "noauth", ssl: "ssl", jdk: "jdk21", version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest"], os: "ubuntu" } - display_name: "OCSP test ${version} ${os}" - tasks: - - name: ".ocsp" - -- name: "atlas-search-variant" - display_name: "Atlas Tests" - run_on: rhel80-small - tasks: - - name: "atlas-deployed-task-group" - - name: "atlas-search-task" - - name: "atlas-connectivity-task" - -- name: atlas-data-lake-test - display_name: "Atlas Data Lake test" - run_on: ubuntu2004-small - tasks: - - name: "atlas-data-lake-task" - -- name: "reactive-streams-tck-test" - display_name: "Reactive Streams TCK tests" - run_on: rhel80-small - tasks: - - name: "reactive-streams-tck-test" - -- matrix_name: "scala-tests" - matrix_spec: { auth: "noauth", ssl: "nossl", jdk: ["jdk8", "jdk17", "jdk21"], version: ["7.0"], topology: "replicaset", - scala: "*", os: "ubuntu" } - display_name: "${scala} ${jdk} ${version} ${topology} ${os}" - tags: ["test-scala-variant"] - tasks: - - name: "scala-tests" - -- matrix_name: "kotlin-tests" - matrix_spec: { auth: "noauth", ssl: "nossl", jdk: ["jdk8", "jdk17", "jdk21"], version: ["7.0"], topology: "replicaset", os: "ubuntu" } - display_name: "Kotlin: ${jdk} ${version} ${topology} ${os}" - tags: ["test-kotlin-variant"] - tasks: - - name: "kotlin-tests" - -- name: publish-snapshot - display_name: "Publish Snapshot" - run_on: ubuntu2004-small - tasks: - - name: "publish-snapshot" - -- name: publish-release - display_name: "Publish Release" - run_on: ubuntu2004-small - tasks: - - name: "publish-release" - -- matrix_name: "kms-tls-test" - matrix_spec: { os: "linux", version: [ "5.0" ], topology: ["standalone"] } - display_name: "CSFLE KMS TLS" - tasks: - - name: ".kms-tls" - -- matrix_name: "csfle-aws-from-environment-test" - matrix_spec: { os: "linux", version: [ "5.0" ], topology: ["standalone"] } - display_name: "CSFLE AWS From Environment" - tasks: - - name: ".csfle-aws-from-environment" - -- matrix_name: "csfle-tests-with-mongocryptd" - matrix_spec: { os: "linux", version: [ "4.2", "4.4", "5.0", "6.0", "7.0", "8.0", "latest" ], topology: ["replicaset"] } - display_name: "CSFLE with mongocryptd: ${version}" - tasks: - - name: "csfle-tests-with-mongocryptd" - -- matrix_name: "socks5-tests" - matrix_spec: { os: "linux", ssl: ["nossl", "ssl"], version: [ "latest" ], topology: ["replicaset"], socks_auth: ["auth", "noauth"] } - display_name: "SOCKS5 proxy ${socks_auth} : ${version} ${topology} ${ssl} ${jdk} ${os}" - tasks: - - name: test-socks5 - -- name: testgcpkms-variant - display_name: "GCP KMS" - run_on: - - debian11-small - tasks: - - name: testgcpkms_task_group - batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README - -- name: testazurekms-variant - display_name: "Azure KMS" - run_on: - - debian11-small - tasks: - - name: testazurekms_task_group - batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README - -- matrix_name: "graalvm-native-image-app" - matrix_spec: { version: [ "7.0" ], topology: [ "replicaset" ], auth: [ "noauth" ], ssl: [ "nossl" ], + # + # Name based variants + # + + # Test packaging and other release related routines + - name: "static-checks" + display_name: "Static Checks" + run_on: rhel80-small + tasks: + - name: "static-analysis-task" + + - name: "perf" + display_name: "Performance Tests" + tags: [ "perf-variant" ] + run_on: rhel90-dbx-perf-large + tasks: + - name: "perf-task" + - name: "perf-netty-task" + + - name: plain-auth-test + display_name: "PLAIN (LDAP) Auth test" + run_on: rhel80-small + tasks: + - name: "plain-auth-test-task" + + - name: "oidc-auth-test" + display_name: "OIDC Auth" + run_on: ubuntu2204-small + tasks: + - name: "test-oidc-task-group" + batchtime: 20160 # 14 days + + - name: "test-oidc-azure-variant" + display_name: "OIDC Auth Azure" + run_on: ubuntu2204-large + tasks: + - name: "test-oidc-azure-task-group" + batchtime: 20160 # 14 days + + - name: "test-oidc-gcp-variant" + display_name: "OIDC Auth GCP" + run_on: ubuntu2204-large + tasks: + - name: "test-oidc-gcp-task-group" + batchtime: 20160 # 14 days + + - name: "test-oidc-k8s-variant" + display_name: "OIDC Auth K8S" + run_on: ubuntu2204-small + tasks: + - name: "test-oidc-k8s-task-group" + batchtime: 20160 # 14 days + + - name: "atlas-search-variant" + display_name: "Atlas Tests" + run_on: rhel80-small + tasks: + - name: "atlas-deployed-task-group" + - name: "atlas-search-task" + - name: "atlas-connectivity-task" + + - name: "atlas-data-lake-test" + display_name: "Atlas Data Lake test" + run_on: "ubuntu2004-small" + tasks: + - name: "atlas-data-lake-task" + + - name: "reactive-streams-tck-test" + display_name: "Reactive Streams TCK tests" + run_on: rhel80-small + tasks: + - name: "reactive-streams-tck-test-task" + + - name: "publish-snapshot" + display_name: "Publish Snapshot" + run_on: "ubuntu2004-small" + tasks: + - name: "publish-snapshot-task" + + - name: "publish-release" + display_name: "Publish Release" + run_on: "ubuntu2004-small" + tasks: + - name: "publish-release-task" + + - name: "test-gcp-kms-variant" + display_name: "GCP KMS" + run_on: + - debian11-small + tasks: + - name: "test-gcp-kms-task-group" + batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README + + - name: "test-azure-kms-variant" + display_name: "Azure KMS" + run_on: + - debian11-small + tasks: + - name: "test-azure-kms-task-group" + batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README + + # + # Matrix based variants + # + + - matrix_name: "tests-zlib-compression" + matrix_spec: { compressor: "zlib", auth: "noauth", ssl: "nossl", jdk: "jdk8", version: "*", topology: "standalone", os: "linux" } + display_name: "${version} ${compressor} ${topology} ${auth} ${ssl} ${jdk} ${os} " + tags: [ "tests-variant" ] + tasks: + - name: "test-sync-task" + - name: "test-reactive-task" + - name: "test-core-task" + - name: "test-legacy-task" + + - matrix_name: "tests-snappy-compression" + matrix_spec: { compressor: "snappy", auth: "noauth", ssl: "nossl", jdk: "jdk8", version: "*", topology: "standalone", os: "linux" } + display_name: "${version} ${compressor} ${topology} ${auth} ${ssl} ${jdk} ${os} " + tags: [ "tests-variant" ] + tasks: + - name: "test-sync-task" + - name: "test-reactive-task" + - name: "test-core-task" + - name: "test-legacy-task" + + - matrix_name: "tests-zstd-compression" + matrix_spec: { compressor: "zstd", auth: "noauth", ssl: "nossl", jdk: "jdk8", + version: [ "4.2", "4.4", "5.0", "6.0", "7.0", "8.0", "latest" ], + topology: "standalone", os: "linux" } + display_name: "${version} ${compressor} ${topology} ${auth} ${ssl} ${jdk} ${os} " + tags: [ "tests-variant" ] + tasks: + - name: "test-sync-task" + - name: "test-reactive-task" + - name: "test-core-task" + - name: "test-legacy-task" + + - matrix_name: "tests-unit" + matrix_spec: { jdk: [ "jdk8", "jdk11", "jdk17", "jdk21" ], os: "linux" } + display_name: "${jdk} ${os} Unit" + tags: [ "tests-variant" ] + tasks: + - name: "test-bson-and-crypt-task" + + - matrix_name: "tests-jdk8-unsecure" + matrix_spec: { auth: "noauth", ssl: "nossl", jdk: "jdk8", version: [ "4.2", "4.4", "5.0", "6.0", "7.0", "8.0", "latest" ], + topology: "*", os: "linux" } + display_name: "${version} ${topology} ${auth} ${ssl} ${jdk} ${os} " + tags: [ "tests-variant" ] + tasks: + - name: "test-sync-task" + - name: "test-reactive-task" + - name: "test-core-task" + - name: "test-legacy-task" + + - matrix_name: "tests-jdk-secure" + matrix_spec: { auth: "auth", ssl: "ssl", jdk: [ "jdk8", "jdk17", "jdk21" ], + version: [ "4.2", "4.4", "5.0", "6.0", "7.0", "8.0", "latest" ], + topology: "*", os: "linux" } + display_name: "${version} ${topology} ${auth} ${ssl} ${jdk} ${os} " + tags: [ "tests-variant" ] + tasks: + - name: "test-sync-task" + - name: "test-reactive-task" + - name: "test-core-task" + - name: "test-legacy-task" + + - matrix_name: "tests-jdk-secure-jdk11" + matrix_spec: { auth: "auth", ssl: "ssl", jdk: [ "jdk11" ], version: [ "7.0" ], topology: [ "replicaset" ], os: "linux" } + display_name: "${version} ${topology} ${auth} ${ssl} ${jdk} ${os} " + tags: [ "tests-variant" ] + tasks: + - name: "test-sync-task" + - name: "test-reactive-task" + - name: "test-core-task" + - name: "test-legacy-task" + + - matrix_name: "tests-require-api-version" + matrix_spec: { api-version: "required", auth: "auth", ssl: "nossl", jdk: [ "jdk21" ], version: [ "5.0", "6.0", "7.0", "8.0", "latest" ], + topology: "standalone", os: "linux" } + display_name: "${version} ${topology} ${api-version} " + tags: [ "tests-variant" ] + tasks: + - name: "test-sync-task" + - name: "test-reactive-task" + - name: "test-core-task" + - name: "test-legacy-task" + + - matrix_name: "tests-load-balancer-secure" + matrix_spec: { auth: "auth", ssl: "ssl", jdk: [ "jdk21" ], version: [ "5.0", "6.0", "7.0", "8.0", "latest" ], topology: "sharded-cluster", + os: "ubuntu" } + display_name: "Load Balancer ${version} ${auth} ${ssl} ${jdk} ${os}" + tasks: + - name: "load-balancer-test-task" + + - matrix_name: "tests-serverless" + matrix_spec: { serverless: "*", jdk: [ "jdk21" ], os: "ubuntu" } + display_name: "${serverless} ${jdk} ${os}" + tasks: + - name: "serverless-test-task" + + - matrix_name: "tests-slow-task" + matrix_spec: { auth: "noauth", ssl: "nossl", jdk: "jdk21", version: [ "7.0" ], topology: "standalone", os: "linux" } + display_name: "Slow: ${version} ${topology} ${ssl} ${jdk} ${os} " + tags: [ "tests-slow-variant" ] + tasks: + - name: "slow-test-task" + + - matrix_name: "tests-socket-task" + matrix_spec: { auth: "*", ssl: "nossl", jdk: "jdk8", version: [ "4.2" ], topology: "standalone", os: "linux" } + display_name: "Socket: ${version} ${topology} ${auth} ${jdk} ${os} " + tags: [ "tests-socket-variant" ] + tasks: + - name: "socket-test-task" + + - matrix_name: "tests-netty" + matrix_spec: { auth: "noauth", ssl: "*", jdk: "jdk8", version: [ "7.0" ], topology: "replicaset", os: "linux" } + display_name: "Netty: ${version} ${topology} ${ssl} ${auth} ${jdk} ${os} " + tags: [ "tests-netty-variant" ] + tasks: + - name: "netty-test-task" + + - matrix_name: "tests-netty-ssl-provider" + matrix_spec: { netty-ssl-provider: "*", auth: "auth", ssl: "ssl", jdk: "jdk8", version: [ "7.0" ], topology: "replicaset", os: "linux" } + display_name: "Netty SSL provider: ${version} ${topology} ${ssl} SslProvider.${netty-ssl-provider} ${auth} ${jdk} ${os} " + tags: [ "tests-netty-variant" ] + tasks: + - name: "netty-test-task" + + - matrix_name: "tests-socket-snappy-compression" + matrix_spec: { compressor: "snappy", auth: "noauth", ssl: "nossl", jdk: "jdk8", version: [ "4.2" ], topology: "standalone", os: "linux" } + display_name: "Socket: ${version} ${compressor} ${topology} ${auth} ${jdk} ${os} " + tags: [ "tests-socket-variant" ] + tasks: + - name: "socket-test-task" + + - matrix_name: "tests-socket-zstd-compression" + matrix_spec: { compressor: "zstd", auth: "noauth", ssl: "nossl", jdk: "jdk8", version: [ "4.2" ], topology: "standalone", os: "linux" } + display_name: "Socket: ${version} ${compressor} ${topology} ${auth} ${jdk} ${os} " + tags: [ "tests-socket-variant" ] + tasks: + - name: "socket-test-task" + + - matrix_name: "test-gssapi" + matrix_spec: { jdk: [ "jdk8", "jdk17", "jdk21" ], os: "linux", gssapi-login-context-name: "*" } + display_name: "GSSAPI (Kerberos) Auth test ${jdk} ${os} ${gssapi-login-context-name}" + tags: [ "test-gssapi-variant" ] + tasks: + - name: "gssapi-auth-test-task" + + - matrix_name: "aws-auth-test" + matrix_spec: { ssl: "nossl", jdk: [ "jdk8", "jdk17", "jdk21" ], version: [ "4.4", "5.0", "6.0", "7.0", "8.0", "latest" ], os: "ubuntu", + aws-credential-provider: "*" } + display_name: "MONGODB-AWS Basic Auth test ${version} ${jdk} ${aws-credential-provider}" + run_on: "ubuntu2004-small" + tasks: + - name: "aws-auth-test-with-regular-aws-credentials-task" + + - matrix_name: "aws-ec2-auth-test" + matrix_spec: { ssl: "nossl", jdk: [ "jdk21" ], version: [ "7.0" ], os: "ubuntu", aws-credential-provider: "*" } + display_name: "MONGODB-AWS Advanced Auth test ${version} ${jdk} ${aws-credential-provider}" + run_on: "ubuntu2004-small" + tasks: + - name: "aws-auth-test-with-aws-EC2-credentials-task" + - name: "aws-auth-test-with-assume-role-credentials-task" + - name: "aws-auth-test-with-aws-credentials-as-environment-variables-task" + - name: "aws-auth-test-with-aws-credentials-and-session-token-as-environment-variables-task" + - name: "aws-auth-test-with-web-identity-credentials-task" + + - matrix_name: "accept-api-version-2-test" + matrix_spec: { ssl: "nossl", auth: "noauth", jdk: "jdk21", version: [ "5.0", "6.0", "7.0", "8.0", "latest" ], topology: "standalone", + os: "linux" } + display_name: "Accept API Version 2 ${version}" + run_on: "ubuntu2004-small" + tasks: + - name: "accept-api-version-2-test-task" + + - matrix_name: "ocsp-test" + matrix_spec: { auth: "noauth", ssl: "ssl", jdk: "jdk21", version: [ "4.4", "5.0", "6.0", "7.0", "8.0", "latest" ], os: "ubuntu" } + display_name: "OCSP test ${version} ${os}" + tasks: + - name: ".ocsp" + + - matrix_name: "scala-tests" + matrix_spec: { auth: "noauth", ssl: "nossl", jdk: [ "jdk8", "jdk17", "jdk21" ], version: [ "7.0" ], topology: "replicaset", + scala: "*", os: "ubuntu" } + display_name: "${scala} ${jdk} ${version} ${topology} ${os}" + tags: [ "test-scala-variant" ] + tasks: + - name: "scala-test-task" + + - matrix_name: "kotlin-tests" + matrix_spec: { auth: "noauth", ssl: "nossl", jdk: [ "jdk8", "jdk17", "jdk21" ], version: [ "7.0" ], topology: "replicaset", os: "ubuntu" } + display_name: "Kotlin: ${jdk} ${version} ${topology} ${os}" + tags: [ "test-kotlin-variant" ] + tasks: + - name: "kotlin-test-task" + + - matrix_name: "kms-tls-test" + matrix_spec: { os: "linux", version: [ "5.0" ], topology: [ "standalone" ] } + display_name: "CSFLE KMS TLS" + tasks: + - name: ".kms-tls" + + - matrix_name: "csfle-aws-from-environment-test" + matrix_spec: { os: "linux", version: [ "5.0" ], topology: [ "standalone" ] } + display_name: "CSFLE AWS From Environment" + tasks: + - name: ".csfle-aws-from-environment" + + - matrix_name: "csfle-tests-with-mongocryptd" + matrix_spec: { os: "linux", version: [ "4.2", "4.4", "5.0", "6.0", "7.0", "8.0", "latest" ], topology: [ "replicaset" ] } + display_name: "CSFLE with mongocryptd: ${version}" + tasks: + - name: "csfle-tests-with-mongocryptd-task" + + - matrix_name: "socks5-tests" + matrix_spec: { os: "linux", ssl: [ "nossl", "ssl" ], version: [ "latest" ], topology: [ "replicaset" ], socks-auth: [ "auth", "noauth" ] } + display_name: "SOCKS5 proxy ${socks-auth} : ${version} ${topology} ${ssl} ${jdk} ${os}" + tasks: + - name: "test-socks5-task" + + - matrix_name: "graalvm-native-image-app" + matrix_spec: { version: [ "7.0" ], topology: [ "replicaset" ], auth: [ "noauth" ], ssl: [ "nossl" ], jdk: [ "jdk21" ], os: [ "linux" ] } - display_name: "GraalVM native image app: ${version} ${topology} ${auth} ${ssl} ${jdk} ${os}" - tasks: - - name: "graalvm-native-image-app" + display_name: "GraalVM native image app: ${version} ${topology} ${auth} ${ssl} ${jdk} ${os}" + tasks: + - name: "graalvm-native-image-app-task" diff --git a/.evergreen/git-archive.sh b/.evergreen/git-archive.sh deleted file mode 100755 index 5c22c9170a4..00000000000 --- a/.evergreen/git-archive.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -# Exit the script with error if any of the commands fail -set -o errexit - -# Returns the path to the root archive file which includes all git submodules. - -echo "Creating root archive" -export GIT_ARCHIVE_FILE="/tmp/mongo-java-driver.tar" - -# create root archive -git archive --output $GIT_ARCHIVE_FILE HEAD - -echo "Appending submodule archives" -git submodule status --recursive | awk '{ print $2 }' | xargs tar -rf $GIT_ARCHIVE_FILE - -echo "Appending .git directory to the root archive" -tar -rf $GIT_ARCHIVE_FILE .git - -echo "$GIT_ARCHIVE_FILE" diff --git a/.evergreen/gradle-cache.sh b/.evergreen/gradle-cache.sh new file mode 100755 index 00000000000..2ffa72908fc --- /dev/null +++ b/.evergreen/gradle-cache.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -o xtrace # Write all commands first to stderr +set -o errexit # Exit the script with error if any of the commands fail + +############################################ +# Main Program # +############################################ +RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE[0]:-$0}")" +. "${RELATIVE_DIR_PATH}/setup-env.bash" + +echo "Enable caching" +echo "org.gradle.caching=true" >> gradle.properties +echo "kotlin.caching.enabled=true" >> gradle.properties + +echo "Compiling JVM drivers" +./gradlew -version +./gradlew classes --parallel + +# Copy the Gradle dependency cache to the gradle read only dependency cache directory. +if [ -n "$GRADLE_RO_DEP_CACHE" ];then + echo "Copying Gradle dependency cache to $GRADLE_RO_DEP_CACHE" + mkdir -p $GRADLE_RO_DEP_CACHE + + # https://docs.gradle.org/current/userguide/dependency_caching.html#sec:cache-copy + # Gradle suggests removing the "*.lock" files and the `gc.properties` file for saving/restoring cache + cp -r $HOME/.gradle/caches/modules-2 "$GRADLE_RO_DEP_CACHE" + find "$GRADLE_RO_DEP_CACHE" -name "*.lock" -type f | xargs rm -f + find "$GRADLE_RO_DEP_CACHE" -name "gc.properties" -type f | xargs rm -f + + echo "Copied Gradle dependency cache to $GRADLE_RO_DEP_CACHE" +fi diff --git a/.evergreen/javaConfig.bash b/.evergreen/javaConfig.bash deleted file mode 100644 index 0b0c9125265..00000000000 --- a/.evergreen/javaConfig.bash +++ /dev/null @@ -1,19 +0,0 @@ -# Java configurations for evergreen - -export JDK8="/opt/java/jdk8" -export JDK11="/opt/java/jdk11" -export JDK17="/opt/java/jdk17" -export JDK21="/opt/java/jdk21" -# note that `JDK21_GRAALVM` is used in `run-graalvm-native-image-app.sh` -# by dynamically constructing the variable name -export JDK21_GRAALVM="/opt/java/jdk21-graalce" - -if [ -d "$JDK17" ]; then - export JAVA_HOME=$JDK17 -fi - -export JAVA_VERSION=${JAVA_VERSION:-17} - -echo "Java Configs:" -echo "Java Home: ${JAVA_HOME}" -echo "Java test version: ${JAVA_VERSION}" diff --git a/.evergreen/publish.sh b/.evergreen/publish.sh index 9a3e9eb405f..50b4f83f875 100755 --- a/.evergreen/publish.sh +++ b/.evergreen/publish.sh @@ -8,7 +8,7 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" RELEASE=${RELEASE:false} diff --git a/.evergreen/run-atlas-data-lake-test.sh b/.evergreen/run-atlas-data-lake-test.sh index 07938018d6e..424efa5ba92 100755 --- a/.evergreen/run-atlas-data-lake-test.sh +++ b/.evergreen/run-atlas-data-lake-test.sh @@ -11,7 +11,7 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running Atlas Data Lake driver tests" diff --git a/.evergreen/run-atlas-search-index-management-tests.sh b/.evergreen/run-atlas-search-index-management-tests.sh index 7ead4aa0b12..784a9b45a0d 100755 --- a/.evergreen/run-atlas-search-index-management-tests.sh +++ b/.evergreen/run-atlas-search-index-management-tests.sh @@ -9,7 +9,7 @@ set -o errexit # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE[0]:-$0}")" -source "${RELATIVE_DIR_PATH}/javaConfig.bash" +source "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running Atlas Search tests" ./gradlew -version diff --git a/.evergreen/run-atlas-search-tests.sh b/.evergreen/run-atlas-search-tests.sh index f207647825f..01f6bc78b42 100755 --- a/.evergreen/run-atlas-search-tests.sh +++ b/.evergreen/run-atlas-search-tests.sh @@ -9,7 +9,7 @@ set -o errexit # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE[0]:-$0}")" -source "${RELATIVE_DIR_PATH}/javaConfig.bash" +source "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running Atlas Search tests" ./gradlew -version diff --git a/.evergreen/run-connectivity-tests.sh b/.evergreen/run-connectivity-tests.sh index 405b5864cb4..38ccfaaf763 100755 --- a/.evergreen/run-connectivity-tests.sh +++ b/.evergreen/run-connectivity-tests.sh @@ -13,7 +13,7 @@ set -o errexit # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running connectivity tests with Java ${JAVA_VERSION}" diff --git a/.evergreen/run-csfle-aws-from-environment.sh b/.evergreen/run-csfle-aws-from-environment.sh index a80580d194d..a3c7b8fa106 100755 --- a/.evergreen/run-csfle-aws-from-environment.sh +++ b/.evergreen/run-csfle-aws-from-environment.sh @@ -12,7 +12,8 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" + echo "Running CSFLE AWS from environment tests" ./gradlew -version @@ -21,12 +22,12 @@ export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} ./gradlew --stacktrace --info -Dorg.mongodb.test.uri=${MONGODB_URI} \ - --no-build-cache driver-sync:cleanTest driver-sync:test --tests ClientSideEncryptionAwsCredentialFromEnvironmentTest + driver-sync:cleanTest driver-sync:test --tests ClientSideEncryptionAwsCredentialFromEnvironmentTest first=$? echo $first ./gradlew --stacktrace --info -Dorg.mongodb.test.uri=${MONGODB_URI} \ - --no-build-cache driver-reactive-streams:cleanTest driver-reactive-streams:test --tests ClientSideEncryptionAwsCredentialFromEnvironmentTest + driver-reactive-streams:cleanTest driver-reactive-streams:test --tests ClientSideEncryptionAwsCredentialFromEnvironmentTest second=$? echo $second diff --git a/.evergreen/run-csfle-tests-with-mongocryptd.sh b/.evergreen/run-csfle-tests-with-mongocryptd.sh index c9733e58a8a..5e24eea5ce6 100755 --- a/.evergreen/run-csfle-tests-with-mongocryptd.sh +++ b/.evergreen/run-csfle-tests-with-mongocryptd.sh @@ -24,7 +24,7 @@ set -o errexit # Exit the script with error if any of the commands fail MONGODB_URI=${MONGODB_URI:-} RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" ############################################ # Functions # diff --git a/.evergreen/run-deployed-lambda-aws-tests.sh b/.evergreen/run-deployed-lambda-aws-tests.sh index 42010aad659..57c23aa7f0b 100755 --- a/.evergreen/run-deployed-lambda-aws-tests.sh +++ b/.evergreen/run-deployed-lambda-aws-tests.sh @@ -4,7 +4,7 @@ set -o xtrace # Write all commands first to stderr set -o errexit # Exit the script with error if any of the commands fail RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE[0]:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" # compiled outside of lambda workflow. Note "SkipBuild: True" in template.yaml ./gradlew -version diff --git a/.evergreen/run-graalvm-native-image-app.sh b/.evergreen/run-graalvm-native-image-app.sh index ba24ef764a8..e39b9b3a179 100755 --- a/.evergreen/run-graalvm-native-image-app.sh +++ b/.evergreen/run-graalvm-native-image-app.sh @@ -7,7 +7,7 @@ set -o errexit readonly RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE[0]:-$0}")" -source "${RELATIVE_DIR_PATH}/javaConfig.bash" +source "${RELATIVE_DIR_PATH}/setup-env.bash" echo "MONGODB_URI: ${MONGODB_URI}" echo "JAVA_HOME: ${JAVA_HOME}" diff --git a/.evergreen/run-gssapi-auth-test.sh b/.evergreen/run-gssapi-auth-test.sh index 67bf10b4739..aa131daeee0 100755 --- a/.evergreen/run-gssapi-auth-test.sh +++ b/.evergreen/run-gssapi-auth-test.sh @@ -17,7 +17,7 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running GSSAPI authentication tests with login context name '${LOGIN_CONTEXT_NAME}'" echo ${KEYTAB_BASE64} | base64 -d > ${PROJECT_DIRECTORY}/.evergreen/drivers.keytab diff --git a/.evergreen/run-kms-tls-tests.sh b/.evergreen/run-kms-tls-tests.sh index 95bef4aa72a..df3a38c0eec 100755 --- a/.evergreen/run-kms-tls-tests.sh +++ b/.evergreen/run-kms-tls-tests.sh @@ -11,25 +11,26 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running KMS TLS tests" cp ${JAVA_HOME}/lib/security/cacerts mongo-truststore ${JAVA_HOME}/bin/keytool -importcert -trustcacerts -file ${DRIVERS_TOOLS}/.evergreen/x509gen/ca.pem -keystore mongo-truststore -storepass changeit -storetype JKS -noprompt export GRADLE_EXTRA_VARS="-Pssl.enabled=true -Pssl.trustStoreType=jks -Pssl.trustStore=`pwd`/mongo-truststore -Pssl.trustStorePassword=changeit" +export KMS_TLS_ERROR_TYPE=${KMS_TLS_ERROR_TYPE} ./gradlew -version ./gradlew --stacktrace --info ${GRADLE_EXTRA_VARS} -Dorg.mongodb.test.uri=${MONGODB_URI} \ -Dorg.mongodb.test.kms.tls.error.type=${KMS_TLS_ERROR_TYPE} \ - --no-build-cache driver-sync:cleanTest driver-sync:test --tests ClientSideEncryptionKmsTlsTest + driver-sync:cleanTest driver-sync:test --tests ClientSideEncryptionKmsTlsTest first=$? echo $first ./gradlew --stacktrace --info ${GRADLE_EXTRA_VARS} -Dorg.mongodb.test.uri=${MONGODB_URI} \ -Dorg.mongodb.test.kms.tls.error.type=${KMS_TLS_ERROR_TYPE} \ - --no-build-cache driver-reactive-streams:cleanTest driver-reactive-streams:test --tests ClientSideEncryptionKmsTlsTest + driver-reactive-streams:cleanTest driver-reactive-streams:test --tests ClientSideEncryptionKmsTlsTest second=$? echo $second diff --git a/.evergreen/run-kotlin-tests.sh b/.evergreen/run-kotlin-tests.sh index e240d7bc255..66acf68809a 100755 --- a/.evergreen/run-kotlin-tests.sh +++ b/.evergreen/run-kotlin-tests.sh @@ -13,7 +13,7 @@ TOPOLOGY=${TOPOLOGY:-standalone} # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" if [ "$SSL" != "nossl" ]; then diff --git a/.evergreen/run-load-balancer-tests.sh b/.evergreen/run-load-balancer-tests.sh index 2440cd31ccc..4ee1510a901 100755 --- a/.evergreen/run-load-balancer-tests.sh +++ b/.evergreen/run-load-balancer-tests.sh @@ -18,7 +18,7 @@ MONGODB_URI=${MONGODB_URI:-} # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" if [ "$SSL" != "nossl" ]; then # We generate the keystore and truststore on every run with the certs in the drivers-tools repo diff --git a/.evergreen/run-mongodb-aws-ecs-test.sh b/.evergreen/run-mongodb-aws-ecs-test.sh index 7d10b80f127..63e4232839b 100755 --- a/.evergreen/run-mongodb-aws-ecs-test.sh +++ b/.evergreen/run-mongodb-aws-ecs-test.sh @@ -39,7 +39,7 @@ fi cd src RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" ./gradlew -version diff --git a/.evergreen/run-mongodb-aws-test.sh b/.evergreen/run-mongodb-aws-test.sh index 45c36227a63..3e1e6c3cf5d 100755 --- a/.evergreen/run-mongodb-aws-test.sh +++ b/.evergreen/run-mongodb-aws-test.sh @@ -11,7 +11,7 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running MONGODB-AWS authentication tests" @@ -28,4 +28,4 @@ echo "Running tests with Java ${JAVA_VERSION}" # to run cleanTest to ensure that the test actually executes each run ./gradlew -PjavaVersion="${JAVA_VERSION}" -Dorg.mongodb.test.uri="${MONGODB_URI}" \ -Dorg.mongodb.test.aws.credential.provider="${AWS_CREDENTIAL_PROVIDER}" \ ---stacktrace --debug --info --no-build-cache driver-core:cleanTest driver-core:test --tests AwsAuthenticationSpecification +--stacktrace --debug --info driver-core:cleanTest driver-core:test --tests AwsAuthenticationSpecification diff --git a/.evergreen/run-mongodb-oidc-test.sh b/.evergreen/run-mongodb-oidc-test.sh index 55b0599fd02..424349c75f5 100755 --- a/.evergreen/run-mongodb-oidc-test.sh +++ b/.evergreen/run-mongodb-oidc-test.sh @@ -14,7 +14,7 @@ if [ $OIDC_ENV == "test" ]; then source ${DRIVERS_TOOLS}/.evergreen/auth_oidc/secrets-export.sh # java will not need to be installed, but we need to config RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" - source "${RELATIVE_DIR_PATH}/javaConfig.bash" + source "${RELATIVE_DIR_PATH}/setup-env.bash" elif [ $OIDC_ENV == "azure" ]; then source ./env.sh elif [ $OIDC_ENV == "gcp" ]; then @@ -50,6 +50,6 @@ REPLACEMENT="mongodb://$OIDC_ADMIN_USER:$OIDC_ADMIN_PWD@" ADMIN_URI=${MONGODB_URI/$TO_REPLACE/$REPLACEMENT} ./gradlew -Dorg.mongodb.test.uri="$ADMIN_URI" \ - --stacktrace --debug --info --no-build-cache driver-core:cleanTest \ + --stacktrace --debug --info driver-core:cleanTest \ driver-sync:test --tests OidcAuthenticationProseTests --tests UnifiedAuthTest \ driver-reactive-streams:test --tests OidcAuthenticationAsyncProseTests \ diff --git a/.evergreen/run-ocsp-test.sh b/.evergreen/run-ocsp-test.sh index 2c3d67d66ab..048935926aa 100755 --- a/.evergreen/run-ocsp-test.sh +++ b/.evergreen/run-ocsp-test.sh @@ -10,7 +10,7 @@ set -o errexit # Exit the script with error if any of the commands fail OCSP_MUST_STAPLE=${OCSP_MUST_STAPLE:-} OCSP_TLS_SHOULD_SUCCEED=${OCSP_TLS_SHOULD_SUCCEED:-} RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" ############################################ # Functions # diff --git a/.evergreen/run-perf-tests.sh b/.evergreen/run-perf-tests.sh index 76627a967cf..472e4348135 100755 --- a/.evergreen/run-perf-tests.sh +++ b/.evergreen/run-perf-tests.sh @@ -12,7 +12,7 @@ tar xf single_and_multi_document.tgz cd .. RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" export TEST_PATH="${PROJECT_DIRECTORY}/driver-performance-test-data/" export OUTPUT_FILE="${PROJECT_DIRECTORY}/results.json" diff --git a/.evergreen/run-plain-auth-test.sh b/.evergreen/run-plain-auth-test.sh index bfdd1ce6cb3..fbc965df4b4 100755 --- a/.evergreen/run-plain-auth-test.sh +++ b/.evergreen/run-plain-auth-test.sh @@ -13,7 +13,7 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running PLAIN authentication tests" diff --git a/.evergreen/run-reactive-streams-tck-tests.sh b/.evergreen/run-reactive-streams-tck-tests.sh index 44511e849d4..6bd5e91a4ec 100755 --- a/.evergreen/run-reactive-streams-tck-tests.sh +++ b/.evergreen/run-reactive-streams-tck-tests.sh @@ -7,7 +7,7 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running Reactive Streams TCK tests with Java ${JAVA_VERSION}" diff --git a/.evergreen/run-scala-tests.sh b/.evergreen/run-scala-tests.sh index e82bb5a56c9..02fd240d7c5 100755 --- a/.evergreen/run-scala-tests.sh +++ b/.evergreen/run-scala-tests.sh @@ -13,7 +13,7 @@ TOPOLOGY=${TOPOLOGY:-standalone} # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" if [ "$SSL" != "nossl" ]; then diff --git a/.evergreen/run-serverless-tests.sh b/.evergreen/run-serverless-tests.sh index 9e65508f843..5e203c20f94 100755 --- a/.evergreen/run-serverless-tests.sh +++ b/.evergreen/run-serverless-tests.sh @@ -15,7 +15,7 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE[0]:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Running serverless tests with Java ${JAVA_VERSION}" diff --git a/.evergreen/run-socket-tests.sh b/.evergreen/run-socket-tests.sh index b7525f13ce8..df215c953e5 100755 --- a/.evergreen/run-socket-tests.sh +++ b/.evergreen/run-socket-tests.sh @@ -21,7 +21,7 @@ COMPRESSOR=${COMPRESSOR:-} # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" SOCKET_REGEX='(.*)localhost:([0-9]+)?(.*)' while [[ $MONGODB_URI =~ $SOCKET_REGEX ]]; do diff --git a/.evergreen/run-socks5-tests.sh b/.evergreen/run-socks5-tests.sh index b11460b8776..c6cbb812b86 100755 --- a/.evergreen/run-socks5-tests.sh +++ b/.evergreen/run-socks5-tests.sh @@ -25,7 +25,7 @@ if [ "Windows_NT" == "$OS" ]; then fi RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" ############################################ # Functions # @@ -84,4 +84,4 @@ echo "Running Socks5 tests with Java ${JAVA_VERSION} over $SSL for $TOPOLOGY and provision_ssl ./gradlew -version run_socks5_proxy -run_socks5_prose_tests \ No newline at end of file +run_socks5_prose_tests diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 84481f90ce5..ea7f9ec6fd2 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -45,7 +45,7 @@ if [ "${SSL}" = "ssl" ] && [ "${STREAM_TYPE}" = "netty" ] && [ "${NETTY_SSL_PROV fi RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" ############################################ # Functions # diff --git a/.evergreen/setup-env.bash b/.evergreen/setup-env.bash new file mode 100644 index 00000000000..cae67cd65eb --- /dev/null +++ b/.evergreen/setup-env.bash @@ -0,0 +1,51 @@ +# Java configurations for evergreen + +export JDK8="/opt/java/jdk8" +export JDK11="/opt/java/jdk11" +export JDK17="/opt/java/jdk17" +export JDK21="/opt/java/jdk21" +# note that `JDK21_GRAALVM` is used in `run-graalvm-native-image-app.sh` +# by dynamically constructing the variable name +export JDK21_GRAALVM="/opt/java/jdk21-graalce" + +if [ -d "$JDK17" ]; then + export JAVA_HOME=$JDK17 +fi + +export JAVA_VERSION=${JAVA_VERSION:-17} + +echo "Java Configs:" +echo "Java Home: ${JAVA_HOME}" +echo "Java test version: ${JAVA_VERSION}" + +# Rename environment variables for AWS, Azure, and GCP +if [ -f secrets-export.sh ]; then + echo "Renaming secrets env variables" + . secrets-export.sh + + export AWS_ACCESS_KEY_ID=$FLE_AWS_ACCESS_KEY_ID + export AWS_SECRET_ACCESS_KEY=$FLE_AWS_SECRET_ACCESS_KEY + export AWS_DEFAULT_REGION=$FLE_AWS_DEFAULT_REGION + + export AWS_ACCESS_KEY_ID_AWS_KMS_NAMED=$FLE_AWS_KEY2 + export AWS_SECRET_ACCESS_KEY_AWS_KMS_NAMED=$FLE_AWS_SECRET2 + + export AWS_TEMP_ACCESS_KEY_ID=$CSFLE_AWS_TEMP_ACCESS_KEY_ID + export AWS_TEMP_SECRET_ACCESS_KEY=$CSFLE_AWS_TEMP_SECRET_ACCESS_KEY + export AWS_TEMP_SESSION_TOKEN=$CSFLE_AWS_TEMP_SESSION_TOKEN + + export AZURE_CLIENT_ID=$FLE_AZURE_CLIENTID + export AZURE_TENANT_ID=$FLE_AZURE_TENANTID + export AZURE_CLIENT_SECRET=$FLE_AZURE_CLIENTSECRET + + export GCP_EMAIL=$FLE_GCP_EMAIL + export GCP_PRIVATE_KEY=$FLE_GCP_PRIVATEKEY + + # Unset AWS_SESSION_TOKEN if it is empty + if [ -z "$AWS_SESSION_TOKEN" ];then + unset AWS_SESSION_TOKEN + fi + +else + echo "No secrets env variables found to rename" +fi diff --git a/.evergreen/ssdlc-report.sh b/.evergreen/ssdlc-report.sh index b97eff6d8ba..56d5957f5ab 100755 --- a/.evergreen/ssdlc-report.sh +++ b/.evergreen/ssdlc-report.sh @@ -24,7 +24,7 @@ fi # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE[0]:-$0}")" -source "${RELATIVE_DIR_PATH}/javaConfig.bash" +source "${RELATIVE_DIR_PATH}/setup-env.bash" printf "\nCreating SSDLC reports\n" printf "\nProduct name: %s\n" "${PRODUCT_NAME}" diff --git a/.evergreen/static-checks.sh b/.evergreen/static-checks.sh index 8b65b15e9a5..1accf5c1684 100755 --- a/.evergreen/static-checks.sh +++ b/.evergreen/static-checks.sh @@ -7,7 +7,7 @@ set -o errexit # Exit the script with error if any of the commands fail # Main Program # ############################################ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE[0]:-$0}")" -. "${RELATIVE_DIR_PATH}/javaConfig.bash" +. "${RELATIVE_DIR_PATH}/setup-env.bash" echo "Compiling JVM drivers" diff --git a/buildSrc/src/main/kotlin/conventions/git-version.gradle.kts b/buildSrc/src/main/kotlin/conventions/git-version.gradle.kts index 5370f59cea9..9ddfd25cab2 100644 --- a/buildSrc/src/main/kotlin/conventions/git-version.gradle.kts +++ b/buildSrc/src/main/kotlin/conventions/git-version.gradle.kts @@ -19,10 +19,14 @@ package conventions val gitVersion: Provider = providers - .exec { commandLine("git", "describe", "--tags", "--always", "--dirty") } + .exec { + commandLine("git", "describe", "--tags", "--always", "--dirty") + isIgnoreExitValue = true + } .standardOutput .asText .map { it.trim().removePrefix("r") } + .orElse("UNKNOWN") // Allows access to gitVersion extension to other conventions extensions.add("gitVersion", gitVersion) diff --git a/driver-sync/src/test/functional/com/mongodb/client/AbstractClientSideEncryptionKmsTlsTest.java b/driver-sync/src/test/functional/com/mongodb/client/AbstractClientSideEncryptionKmsTlsTest.java index 2aff6a32337..6e0b5957dea 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/AbstractClientSideEncryptionKmsTlsTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/AbstractClientSideEncryptionKmsTlsTest.java @@ -109,12 +109,14 @@ public void testInvalidKmsCertificate() { }}); }}) .build(); + // See: https://github.com/mongodb-labs/drivers-evergreen-tools/blob/master/.evergreen/csfle/README.md + String endpoint = expectedKmsTlsError == TlsErrorType.EXPIRED ? "mongodb://127.0.0.1:9000" : "mongodb://127.0.0.1:9001"; try (ClientEncryption clientEncryption = getClientEncryption(clientEncryptionSettings)) { clientEncryption.createDataKey("aws", new DataKeyOptions().masterKey( BsonDocument.parse("{" + "region: \"us-east-1\", " + "key: \"arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0\"," - + "endpoint: \"mongodb://127.0.0.1:8000\"}"))); + + "endpoint: \"" + endpoint + "\"}"))); fail(); } catch (MongoClientException e) { assertNotNull(expectedKmsTlsError.getCauseOfExpectedClass(e));