PYTHON-5138 Convert setup_tests.py to a cli (#2154)
This commit is contained in:
parent
b56605cc1f
commit
25b2d77b63
@ -42,7 +42,7 @@ functions:
|
||||
# Make an evergreen expansion file with dynamic values
|
||||
- command: subprocess.exec
|
||||
params:
|
||||
include_expansions_in_env: ["is_patch", "project", "version_id", "AUTH", "SSL", "TEST_ENCRYPTION", "TEST_ENCRYPTION_PYOPENSSL", "TEST_CRYPT_SHARED", "TEST_PYOPENSSL", "SETDEFAULTENCODING", "TEST_LOADBALANCER", "TEST_SEVERLESS", "SKIP_CSOT_TESTS", "MONGODB_STARTED", "DISABLE_TEST_COMMANDS", "GREEN_FRAMEWORK", "NO_EXT", "COVERAGE", "COMPRESSORS", "MONGODB_API_VERSION", "skip_crypt_shared", "VERSION", "TOPOLOGY", "STORAGE_ENGINE", "ORCHESTRATION_FILE", "REQUIRE_API_VERSION", "LOAD_BALANCER", "skip_web_identity_auth_test", "skip_ECS_auth_test"]
|
||||
include_expansions_in_env: ["is_patch", "project", "version_id", "skip_web_identity_auth_test", "skip_ECS_auth_test"]
|
||||
binary: bash
|
||||
working_dir: "src"
|
||||
args:
|
||||
@ -205,18 +205,13 @@ functions:
|
||||
- command: subprocess.exec
|
||||
params:
|
||||
binary: bash
|
||||
include_expansions_in_env: ["VERSION", "TOPOLOGY", "AUTH", "SSL", "ORCHESTRATION_FILE", "LOAD_BALANCER"]
|
||||
include_expansions_in_env: [VERSION, TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE, LOAD_BALANCER,
|
||||
STORAGE_ENGINE, REQUIRE_API_VERSION, DRIVERS_TOOLS, TEST_CRYPT_SHARED]
|
||||
args:
|
||||
- src/.evergreen/scripts/run-with-env.sh
|
||||
- src/.evergreen/scripts/bootstrap-mongo-orchestration.sh
|
||||
- command: expansions.update
|
||||
params:
|
||||
file: mo-expansion.yml
|
||||
- command: expansions.update
|
||||
params:
|
||||
updates:
|
||||
- key: MONGODB_STARTED
|
||||
value: "1"
|
||||
|
||||
"bootstrap data lake":
|
||||
- command: subprocess.exec
|
||||
@ -250,17 +245,6 @@ functions:
|
||||
- .evergreen/scripts/run-with-env.sh
|
||||
- .evergreen/scripts/run-mod-wsgi-tests.sh
|
||||
|
||||
"run mockupdb tests":
|
||||
- command: subprocess.exec
|
||||
type: test
|
||||
params:
|
||||
include_expansions_in_env: ["PYTHON_BINARY"]
|
||||
working_dir: "src"
|
||||
binary: bash
|
||||
args:
|
||||
- .evergreen/scripts/run-with-env.sh
|
||||
- .evergreen/scripts/run-mockupdb-tests.sh
|
||||
|
||||
"run doctests":
|
||||
- command: subprocess.exec
|
||||
type: test
|
||||
@ -276,14 +260,12 @@ functions:
|
||||
- command: subprocess.exec
|
||||
type: test
|
||||
params:
|
||||
include_expansions_in_env: ["TEST_DATA_LAKE", "PYTHON_BINARY", "AUTH", "SSL",
|
||||
"AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "TEST_SUITES",
|
||||
"TEST_INDEX_MANAGEMENT", "CRYPT_SHARED_LIB_PATH", "TEST_ENCRYPTION", "TEST_ENCRYPTION_PYOPENSSL",
|
||||
"TEST_CRYPT_SHARED", "TEST_PYOPENSSL", "TEST_LOADBALANCER", "TEST_SEVERLESS", "MONGODB_URI"]
|
||||
include_expansions_in_env: [AUTH, SSL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY,
|
||||
AWS_SESSION_TOKEN, COVERAGE, PYTHON_BINARY, LIBMONGOCRYPT_URL, MONGODB_URI,
|
||||
DISABLE_TEST_COMMANDS, GREEN_FRAMEWORK, NO_EXT, COMPRESSORS]
|
||||
binary: bash
|
||||
working_dir: "src"
|
||||
args:
|
||||
- .evergreen/scripts/setup-tests.sh
|
||||
args: [.evergreen/just.sh, setup-test, "${TEST_NAME}", "${SUB_TEST_NAME}"]
|
||||
- command: subprocess.exec
|
||||
type: test
|
||||
params:
|
||||
@ -755,7 +737,9 @@ tasks:
|
||||
- name: "mockupdb"
|
||||
tags: ["mockupdb"]
|
||||
commands:
|
||||
- func: "run mockupdb tests"
|
||||
- func: "run tests"
|
||||
vars:
|
||||
TEST_NAME: mockupdb
|
||||
|
||||
- name: "doctests"
|
||||
tags: ["doctests"]
|
||||
@ -770,6 +754,8 @@ tasks:
|
||||
tags: ["serverless"]
|
||||
commands:
|
||||
- func: "run tests"
|
||||
vars:
|
||||
TEST_NAME: serverless
|
||||
|
||||
- name: "test-enterprise-auth"
|
||||
tags: ["enterprise-auth"]
|
||||
@ -789,7 +775,7 @@ tasks:
|
||||
TOPOLOGY: "replica_set"
|
||||
- func: "run tests"
|
||||
vars:
|
||||
TEST_INDEX_MANAGEMENT: "1"
|
||||
TEST_NAME: index_management
|
||||
AUTH: "auth"
|
||||
|
||||
- name: "mod-wsgi-standalone"
|
||||
@ -857,7 +843,7 @@ tasks:
|
||||
- func: "bootstrap data lake"
|
||||
- func: "run tests"
|
||||
vars:
|
||||
TEST_DATA_LAKE: "true"
|
||||
TEST_NAME: "data_lake"
|
||||
|
||||
- name: "test-aws-lambda-deployed"
|
||||
commands:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -318,7 +318,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
PYTHON_BINARY: /opt/python/3.9/bin/python3
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-rhel8-python3.13
|
||||
@ -331,7 +331,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
PYTHON_BINARY: /opt/python/3.13/bin/python3
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-rhel8-pypy3.10
|
||||
@ -344,7 +344,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-crypt_shared-rhel8-python3.9
|
||||
@ -357,7 +357,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
TEST_CRYPT_SHARED: "true"
|
||||
PYTHON_BINARY: /opt/python/3.9/bin/python3
|
||||
tags: [encryption_tag]
|
||||
@ -371,7 +371,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
TEST_CRYPT_SHARED: "true"
|
||||
PYTHON_BINARY: /opt/python/3.13/bin/python3
|
||||
tags: [encryption_tag]
|
||||
@ -385,7 +385,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
TEST_CRYPT_SHARED: "true"
|
||||
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
|
||||
tags: [encryption_tag]
|
||||
@ -399,8 +399,8 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_ENCRYPTION_PYOPENSSL: "true"
|
||||
TEST_NAME: encryption
|
||||
SUB_TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: /opt/python/3.9/bin/python3
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-pyopenssl-rhel8-python3.13
|
||||
@ -413,8 +413,8 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_ENCRYPTION_PYOPENSSL: "true"
|
||||
TEST_NAME: encryption
|
||||
SUB_TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: /opt/python/3.13/bin/python3
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-pyopenssl-rhel8-pypy3.10
|
||||
@ -427,8 +427,8 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_ENCRYPTION_PYOPENSSL: "true"
|
||||
TEST_NAME: encryption
|
||||
SUB_TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-rhel8-python3.10
|
||||
@ -438,7 +438,7 @@ buildvariants:
|
||||
run_on:
|
||||
- rhel87-small
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
PYTHON_BINARY: /opt/python/3.10/bin/python3
|
||||
- name: encryption-crypt_shared-rhel8-python3.11
|
||||
tasks:
|
||||
@ -447,7 +447,7 @@ buildvariants:
|
||||
run_on:
|
||||
- rhel87-small
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
TEST_CRYPT_SHARED: "true"
|
||||
PYTHON_BINARY: /opt/python/3.11/bin/python3
|
||||
- name: encryption-pyopenssl-rhel8-python3.12
|
||||
@ -457,8 +457,8 @@ buildvariants:
|
||||
run_on:
|
||||
- rhel87-small
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_ENCRYPTION_PYOPENSSL: "true"
|
||||
TEST_NAME: encryption
|
||||
SUB_TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: /opt/python/3.12/bin/python3
|
||||
- name: encryption-macos-python3.9
|
||||
tasks:
|
||||
@ -468,7 +468,7 @@ buildvariants:
|
||||
- macos-14
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-macos-python3.13
|
||||
@ -479,7 +479,7 @@ buildvariants:
|
||||
- macos-14
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-crypt_shared-macos-python3.9
|
||||
@ -490,7 +490,7 @@ buildvariants:
|
||||
- macos-14
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
TEST_CRYPT_SHARED: "true"
|
||||
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
|
||||
tags: [encryption_tag]
|
||||
@ -502,7 +502,7 @@ buildvariants:
|
||||
- macos-14
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
TEST_CRYPT_SHARED: "true"
|
||||
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3
|
||||
tags: [encryption_tag]
|
||||
@ -514,7 +514,7 @@ buildvariants:
|
||||
- windows-64-vsMulti-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
PYTHON_BINARY: C:/python/Python39/python.exe
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-win64-python3.13
|
||||
@ -525,7 +525,7 @@ buildvariants:
|
||||
- windows-64-vsMulti-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
PYTHON_BINARY: C:/python/Python313/python.exe
|
||||
tags: [encryption_tag]
|
||||
- name: encryption-crypt_shared-win64-python3.9
|
||||
@ -536,7 +536,7 @@ buildvariants:
|
||||
- windows-64-vsMulti-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
TEST_CRYPT_SHARED: "true"
|
||||
PYTHON_BINARY: C:/python/Python39/python.exe
|
||||
tags: [encryption_tag]
|
||||
@ -548,7 +548,7 @@ buildvariants:
|
||||
- windows-64-vsMulti-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_ENCRYPTION: "true"
|
||||
TEST_NAME: encryption
|
||||
TEST_CRYPT_SHARED: "true"
|
||||
PYTHON_BINARY: C:/python/Python313/python.exe
|
||||
tags: [encryption_tag]
|
||||
@ -772,7 +772,7 @@ buildvariants:
|
||||
# No c ext tests
|
||||
- name: no-c-ext-rhel8-python3.9
|
||||
tasks:
|
||||
- name: .standalone .noauth .nossl .sync_async
|
||||
- name: .standalone .noauth .nossl !.sync_async
|
||||
display_name: No C Ext RHEL8 Python3.9
|
||||
run_on:
|
||||
- rhel87-small
|
||||
@ -781,7 +781,7 @@ buildvariants:
|
||||
PYTHON_BINARY: /opt/python/3.9/bin/python3
|
||||
- name: no-c-ext-rhel8-python3.10
|
||||
tasks:
|
||||
- name: .replica_set .noauth .nossl .sync_async
|
||||
- name: .replica_set .noauth .nossl !.sync_async
|
||||
display_name: No C Ext RHEL8 Python3.10
|
||||
run_on:
|
||||
- rhel87-small
|
||||
@ -790,7 +790,7 @@ buildvariants:
|
||||
PYTHON_BINARY: /opt/python/3.10/bin/python3
|
||||
- name: no-c-ext-rhel8-python3.11
|
||||
tasks:
|
||||
- name: .sharded_cluster .noauth .nossl .sync_async
|
||||
- name: .sharded_cluster .noauth .nossl !.sync_async
|
||||
display_name: No C Ext RHEL8 Python3.11
|
||||
run_on:
|
||||
- rhel87-small
|
||||
@ -799,7 +799,7 @@ buildvariants:
|
||||
PYTHON_BINARY: /opt/python/3.11/bin/python3
|
||||
- name: no-c-ext-rhel8-python3.12
|
||||
tasks:
|
||||
- name: .standalone .noauth .nossl .sync_async
|
||||
- name: .standalone .noauth .nossl !.sync_async
|
||||
display_name: No C Ext RHEL8 Python3.12
|
||||
run_on:
|
||||
- rhel87-small
|
||||
@ -808,7 +808,7 @@ buildvariants:
|
||||
PYTHON_BINARY: /opt/python/3.12/bin/python3
|
||||
- name: no-c-ext-rhel8-python3.13
|
||||
tasks:
|
||||
- name: .replica_set .noauth .nossl .sync_async
|
||||
- name: .replica_set .noauth .nossl !.sync_async
|
||||
display_name: No C Ext RHEL8 Python3.13
|
||||
run_on:
|
||||
- rhel87-small
|
||||
@ -997,7 +997,7 @@ buildvariants:
|
||||
- macos-14
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_PYOPENSSL: "true"
|
||||
TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
|
||||
- name: pyopenssl-rhel8-python3.10
|
||||
tasks:
|
||||
@ -1008,7 +1008,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_PYOPENSSL: "true"
|
||||
TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: /opt/python/3.10/bin/python3
|
||||
- name: pyopenssl-rhel8-python3.11
|
||||
tasks:
|
||||
@ -1019,7 +1019,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_PYOPENSSL: "true"
|
||||
TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: /opt/python/3.11/bin/python3
|
||||
- name: pyopenssl-rhel8-python3.12
|
||||
tasks:
|
||||
@ -1030,7 +1030,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_PYOPENSSL: "true"
|
||||
TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: /opt/python/3.12/bin/python3
|
||||
- name: pyopenssl-win64-python3.13
|
||||
tasks:
|
||||
@ -1041,7 +1041,7 @@ buildvariants:
|
||||
- windows-64-vsMulti-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_PYOPENSSL: "true"
|
||||
TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: C:/python/Python313/python.exe
|
||||
- name: pyopenssl-rhel8-pypy3.10
|
||||
tasks:
|
||||
@ -1052,7 +1052,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_PYOPENSSL: "true"
|
||||
TEST_NAME: pyopenssl
|
||||
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
|
||||
|
||||
# Search index tests
|
||||
@ -1288,7 +1288,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_SERVERLESS: "true"
|
||||
TEST_NAME: serverless
|
||||
AUTH: auth
|
||||
SSL: ssl
|
||||
PYTHON_BINARY: /opt/python/3.9/bin/python3
|
||||
@ -1300,7 +1300,7 @@ buildvariants:
|
||||
- rhel87-small
|
||||
batchtime: 10080
|
||||
expansions:
|
||||
TEST_SERVERLESS: "true"
|
||||
TEST_NAME: serverless
|
||||
AUTH: auth
|
||||
SSL: ssl
|
||||
PYTHON_BINARY: /opt/python/3.13/bin/python3
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
set -o errexit # Exit the script with error if any of the commands fail
|
||||
HERE=$(dirname ${BASH_SOURCE:-$0})
|
||||
. $DRIVERS_TOOLS/.evergreen/csfle/azurekms/setup-secrets.sh
|
||||
SUCCESS=false TEST_FLE_AZURE_AUTO=1 bash $HERE/scripts/setup-tests.sh
|
||||
bash $HERE/just.sh setup-test kms azure-fail
|
||||
KEY_NAME="${AZUREKMS_KEYNAME}" \
|
||||
KEY_VAULT_ENDPOINT="${AZUREKMS_KEYVAULTENDPOINT}" \
|
||||
$HERE/just.sh test-eg
|
||||
|
||||
@ -19,7 +19,7 @@ AZUREKMS_CMD="tar xf mongo-python-driver.tgz" \
|
||||
$DRIVERS_TOOLS/.evergreen/csfle/azurekms/run-command.sh
|
||||
echo "Untarring file ... end"
|
||||
echo "Running test ... begin"
|
||||
AZUREKMS_CMD="SUCCESS=true TEST_FLE_AZURE_AUTO=1 bash .evergreen/just.sh setup-test" \
|
||||
AZUREKMS_CMD="bash .evergreen/just.sh setup-test kms azure" \
|
||||
$DRIVERS_TOOLS/.evergreen/csfle/azurekms/run-command.sh
|
||||
AZUREKMS_CMD="KEY_NAME=\"$AZUREKMS_KEYNAME\" KEY_VAULT_ENDPOINT=\"$AZUREKMS_KEYVAULTENDPOINT\" bash ./.evergreen/just.sh test-eg" \
|
||||
$DRIVERS_TOOLS/.evergreen/csfle/azurekms/run-command.sh
|
||||
|
||||
@ -18,7 +18,7 @@ echo "Untarring file ... begin"
|
||||
GCPKMS_CMD="tar xf mongo-python-driver.tgz" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh
|
||||
echo "Untarring file ... end"
|
||||
echo "Running test ... begin"
|
||||
GCPKMS_CMD="SUCCESS=true TEST_FLE_GCP_AUTO=1 bash ./.evergreen/just.sh setup-test" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh
|
||||
GCPKMS_CMD="bash ./.evergreen/just.sh setup-test kms gcp" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh
|
||||
GCPKMS_CMD="./.evergreen/just.sh test-eg" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh
|
||||
echo "Running test ... end"
|
||||
bash $HERE/scripts/teardown-tests.sh
|
||||
|
||||
@ -26,11 +26,9 @@ apt-get -qq update < /dev/null > /dev/null
|
||||
apt-get -qq install $PYTHON_VER $PYTHON_VER-venv build-essential $PYTHON_VER-dev -y < /dev/null > /dev/null
|
||||
|
||||
export PYTHON_BINARY=$PYTHON_VER
|
||||
export TEST_AUTH_AWS=1
|
||||
export AUTH="auth"
|
||||
export SET_XTRACE_ON=1
|
||||
cd src
|
||||
rm -rf .venv
|
||||
rm -f .evergreen/scripts/test-env.sh || true
|
||||
bash ./.evergreen/just.sh setup-test
|
||||
bash ./.evergreen/just.sh setup-test auth_aws ecs
|
||||
bash .evergreen/just.sh test-eg
|
||||
|
||||
@ -29,5 +29,5 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TEST_AUTH_OIDC=1 COVERAGE=1 AUTH="auth" bash ./.evergreen/just.sh setup-test
|
||||
COVERAGE=1 bash ./.evergreen/just.sh setup-test auth_oidc
|
||||
bash ./.evergreen/just.sh test-eg "${@:1}"
|
||||
|
||||
@ -14,7 +14,6 @@ export TEST_PATH="${PROJECT_DIRECTORY}/specifications/source/benchmarking/data"
|
||||
export OUTPUT_FILE="${PROJECT_DIRECTORY}/results.json"
|
||||
|
||||
export PYTHON_BINARY=/opt/mongodbtoolchain/v4/bin/python3
|
||||
export PERF_TEST=1
|
||||
|
||||
bash ./.evergreen/just.sh setup-test
|
||||
bash ./.evergreen/just.sh setup-test perf
|
||||
bash ./.evergreen/just.sh test-eg
|
||||
|
||||
@ -1,8 +1,11 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
set -eux
|
||||
|
||||
SCRIPT_DIR=$(dirname ${BASH_SOURCE:-$0})
|
||||
ROOT_DIR="$(dirname "$(dirname $SCRIPT_DIR)")"
|
||||
SCRIPT_DIR="$( cd -- "$SCRIPT_DIR" > /dev/null 2>&1 && pwd )"
|
||||
ROOT_DIR="$(dirname $SCRIPT_DIR)"
|
||||
|
||||
pushd $ROOT_DIR
|
||||
|
||||
export PIP_QUIET=1 # Quiet by default
|
||||
export PIP_PREFER_BINARY=1 # Prefer binary dists by default
|
||||
@ -16,7 +19,7 @@ else
|
||||
echo "Not sourcing env inputs"
|
||||
fi
|
||||
|
||||
# Ensure there are test inputs.
|
||||
# Handle test inputs.
|
||||
if [ -f $SCRIPT_DIR/scripts/test-env.sh ]; then
|
||||
echo "Sourcing test inputs"
|
||||
. $SCRIPT_DIR/scripts/test-env.sh
|
||||
@ -24,9 +27,10 @@ else
|
||||
echo "Missing test inputs, please run 'just setup-test'"
|
||||
fi
|
||||
|
||||
|
||||
# Source the local secrets export file if available.
|
||||
if [ -f "$ROOT_DIR/secrets-export.sh" ]; then
|
||||
. "$ROOT_DIR/secrets-export.sh"
|
||||
if [ -f "./secrets-export.sh" ]; then
|
||||
. "./secrets-export.sh"
|
||||
fi
|
||||
|
||||
PYTHON_IMPL=$(uv run python -c "import platform; print(platform.python_implementation())")
|
||||
@ -54,7 +58,7 @@ uv run python -c 'import sys; print(sys.version)'
|
||||
PIP_QUIET=0 uv run ${UV_ARGS} --with pip pip list
|
||||
|
||||
# Record the start time for a perf test.
|
||||
if [ -n "${PERF_TEST:-}" ]; then
|
||||
if [ -n "${TEST_PERF:-}" ]; then
|
||||
start_time=$(date +%s)
|
||||
fi
|
||||
|
||||
@ -75,7 +79,7 @@ fi
|
||||
echo "Running tests with $TEST_ARGS... done."
|
||||
|
||||
# Handle perf test post actions.
|
||||
if [ -n "${PERF_TEST:-}" ]; then
|
||||
if [ -n "${TEST_PERF:-}" ]; then
|
||||
end_time=$(date +%s)
|
||||
elapsed_secs=$((end_time-start_time))
|
||||
|
||||
@ -90,3 +94,5 @@ fi
|
||||
if [ -n "${COVERAGE:-}" ]; then
|
||||
rm -rf .pytest_cache
|
||||
fi
|
||||
|
||||
popd
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -o xtrace
|
||||
set -eu
|
||||
|
||||
|
||||
# Enable core dumps if enabled on the machine
|
||||
# Copied from https://github.com/mongodb/mongo/blob/master/etc/evergreen.yml
|
||||
@ -29,7 +30,7 @@ if [ "$(uname -s)" = "Darwin" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${skip_crypt_shared}" ]; then
|
||||
if [ -z "${TEST_CRYPT_SHARED:-}" ]; then
|
||||
export SKIP_CRYPT_SHARED=1
|
||||
fi
|
||||
|
||||
|
||||
@ -55,24 +55,11 @@ export MONGODB_BINARIES="$DRIVERS_TOOLS/mongodb/bin"
|
||||
cat <<EOT > "$SCRIPT_DIR"/env.sh
|
||||
export PROJECT_DIRECTORY="$PROJECT_DIRECTORY"
|
||||
export CURRENT_VERSION="$CURRENT_VERSION"
|
||||
export SKIP_LEGACY_SHELL=1
|
||||
export DRIVERS_TOOLS="$DRIVERS_TOOLS"
|
||||
export MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME"
|
||||
export MONGODB_BINARIES="$MONGODB_BINARIES"
|
||||
export DRIVERS_TOOLS_BINARIES="$DRIVERS_TOOLS_BINARIES"
|
||||
export PROJECT_DIRECTORY="$PROJECT_DIRECTORY"
|
||||
export SETDEFAULTENCODING="${SETDEFAULTENCODING:-}"
|
||||
export SKIP_CSOT_TESTS="${SKIP_CSOT_TESTS:-}"
|
||||
export MONGODB_STARTED="${MONGODB_STARTED:-}"
|
||||
export DISABLE_TEST_COMMANDS="${DISABLE_TEST_COMMANDS:-}"
|
||||
export GREEN_FRAMEWORK="${GREEN_FRAMEWORK:-}"
|
||||
export NO_EXT="${NO_EXT:-}"
|
||||
export COVERAGE="${COVERAGE:-}"
|
||||
export COMPRESSORS="${COMPRESSORS:-}"
|
||||
export MONGODB_API_VERSION="${MONGODB_API_VERSION:-}"
|
||||
export skip_crypt_shared="${skip_crypt_shared:-}"
|
||||
export STORAGE_ENGINE="${STORAGE_ENGINE:-}"
|
||||
export REQUIRE_API_VERSION="${REQUIRE_API_VERSION:-}"
|
||||
export skip_web_identity_auth_test="${skip_web_identity_auth_test:-}"
|
||||
export skip_ECS_auth_test="${skip_ECS_auth_test:-}"
|
||||
|
||||
@ -96,14 +83,8 @@ SKIP_LEGACY_SHELL=1
|
||||
DRIVERS_TOOLS="$DRIVERS_TOOLS"
|
||||
MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME"
|
||||
MONGODB_BINARIES="$MONGODB_BINARIES"
|
||||
TMPDIR="$MONGO_ORCHESTRATION_HOME/db"
|
||||
EOT
|
||||
|
||||
# Skip CSOT tests on non-linux platforms.
|
||||
if [ "$(uname -s)" != "Linux" ]; then
|
||||
echo "export SKIP_CSOT_TESTS=1" >> $SCRIPT_DIR/env.sh
|
||||
fi
|
||||
|
||||
# Add these expansions to make it easier to call out tests scripts from the EVG yaml
|
||||
cat <<EOT > expansion.yml
|
||||
DRIVERS_TOOLS: "$DRIVERS_TOOLS"
|
||||
|
||||
@ -344,11 +344,11 @@ def create_encryption_variants() -> list[BuildVariant]:
|
||||
batchtime = BATCHTIME_WEEK
|
||||
|
||||
def get_encryption_expansions(encryption):
|
||||
expansions = dict(TEST_ENCRYPTION="true")
|
||||
expansions = dict(TEST_NAME="encryption")
|
||||
if "crypt_shared" in encryption:
|
||||
expansions["TEST_CRYPT_SHARED"] = "true"
|
||||
if "PyOpenSSL" in encryption:
|
||||
expansions["TEST_ENCRYPTION_PYOPENSSL"] = "true"
|
||||
expansions["SUB_TEST_NAME"] = "pyopenssl"
|
||||
return expansions
|
||||
|
||||
host = DEFAULT_HOST
|
||||
@ -487,7 +487,7 @@ def create_enterprise_auth_variants():
|
||||
def create_pyopenssl_variants():
|
||||
base_name = "PyOpenSSL"
|
||||
batchtime = BATCHTIME_WEEK
|
||||
expansions = dict(TEST_PYOPENSSL="true")
|
||||
expansions = dict(TEST_NAME="pyopenssl")
|
||||
variants = []
|
||||
|
||||
for python in ALL_PYTHONS:
|
||||
@ -588,7 +588,7 @@ def create_no_c_ext_variants():
|
||||
variants = []
|
||||
host = DEFAULT_HOST
|
||||
for python, topology in zip_cycle(CPYTHONS, TOPOLOGIES):
|
||||
tasks = [f".{topology} .noauth .nossl .sync_async"]
|
||||
tasks = [f".{topology} .noauth .nossl !.sync_async"]
|
||||
expansions = dict()
|
||||
handle_c_ext(C_EXTS[0], expansions)
|
||||
display_name = get_display_name("No C Ext", host, python=python)
|
||||
@ -645,7 +645,7 @@ def create_disable_test_commands_variants():
|
||||
def create_serverless_variants():
|
||||
host = DEFAULT_HOST
|
||||
batchtime = BATCHTIME_WEEK
|
||||
expansions = dict(TEST_SERVERLESS="true", AUTH="auth", SSL="ssl")
|
||||
expansions = dict(TEST_NAME="serverless", AUTH="auth", SSL="ssl")
|
||||
tasks = ["serverless_task_group"]
|
||||
base_name = "Serverless"
|
||||
return [
|
||||
@ -811,17 +811,11 @@ def create_server_tasks():
|
||||
SSL=ssl,
|
||||
)
|
||||
bootstrap_func = FunctionCall(func="bootstrap mongo-orchestration", vars=bootstrap_vars)
|
||||
test_suites = ""
|
||||
test_vars = dict(AUTH=auth, SSL=ssl, SYNC=sync)
|
||||
if sync == "sync":
|
||||
test_suites = "default"
|
||||
test_vars["TEST_NAME"] = "default_sync"
|
||||
elif sync == "async":
|
||||
test_suites = "default_async"
|
||||
test_vars = dict(
|
||||
AUTH=auth,
|
||||
SSL=ssl,
|
||||
SYNC=sync,
|
||||
TEST_SUITES=test_suites,
|
||||
)
|
||||
test_vars["TEST_NAME"] = "default_async"
|
||||
test_func = FunctionCall(func="run tests", vars=test_vars)
|
||||
tasks.append(EvgTask(name=name, tags=tags, commands=[bootstrap_func, test_func]))
|
||||
return tasks
|
||||
@ -834,9 +828,10 @@ def create_load_balancer_tasks():
|
||||
tags = ["load-balancer", auth, ssl]
|
||||
bootstrap_vars = dict(TOPOLOGY="sharded_cluster", AUTH=auth, SSL=ssl, LOAD_BALANCER="true")
|
||||
bootstrap_func = FunctionCall(func="bootstrap mongo-orchestration", vars=bootstrap_vars)
|
||||
test_vars = dict(AUTH=auth, SSL=ssl, TEST_LOADBALANCER="true")
|
||||
test_vars = dict(AUTH=auth, SSL=ssl, TEST_NAME="load_balancer")
|
||||
test_func = FunctionCall(func="run tests", vars=test_vars)
|
||||
tasks.append(EvgTask(name=name, tags=tags, commands=[bootstrap_func, test_func]))
|
||||
|
||||
return tasks
|
||||
|
||||
|
||||
|
||||
@ -4,5 +4,5 @@
|
||||
set +x
|
||||
set -o errexit
|
||||
bash "${DRIVERS_TOOLS}"/.evergreen/auth_aws/setup_secrets.sh drivers/atlas_connect
|
||||
TEST_ATLAS=1 bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test
|
||||
bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test atlas
|
||||
bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh test-eg
|
||||
|
||||
@ -5,5 +5,5 @@ set -eu
|
||||
set +x
|
||||
# Use the default python to bootstrap secrets.
|
||||
bash "${DRIVERS_TOOLS}"/.evergreen/secrets_handling/setup-secrets.sh drivers/enterprise_auth
|
||||
TEST_ENTERPRISE_AUTH=1 AUTH=auth bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test
|
||||
bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test enterprise_auth
|
||||
bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh test-eg
|
||||
|
||||
@ -2,5 +2,5 @@
|
||||
set -eu
|
||||
HERE=$(dirname ${BASH_SOURCE:-$0})
|
||||
. $HERE/env.sh
|
||||
SUCCESS=false TEST_FLE_GCP_AUTO=1 bash $HERE/setup-tests.sh
|
||||
./.evergreen/just.sh setup-test kms gcp-fail
|
||||
bash ./.evergreen/just.sh test-eg
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -o xtrace
|
||||
export PYTHON_BINARY=${PYTHON_BINARY}
|
||||
bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh test-mockupdb
|
||||
@ -24,5 +24,5 @@ echo "Running MONGODB-AWS authentication tests for $1"
|
||||
# Handle credentials and environment setup.
|
||||
. "$DRIVERS_TOOLS"/.evergreen/auth_aws/aws_setup.sh "$1"
|
||||
|
||||
TEST_AUTH_AWS=1 AUTH="auth" bash ./.evergreen/just.sh setup-test
|
||||
bash ./.evergreen/just.sh setup-test auth_aws $1
|
||||
bash ./.evergreen/just.sh test-eg
|
||||
|
||||
@ -1,9 +1,12 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
|
||||
TEST_OCSP=1 \
|
||||
PYTHON_BINARY="${PYTHON_BINARY}" \
|
||||
pushd "${PROJECT_DIRECTORY}/.evergreen"
|
||||
bash scripts/setup-dev-env.sh
|
||||
CA_FILE="${DRIVERS_TOOLS}/.evergreen/ocsp/${OCSP_ALGORITHM}/ca.pem" \
|
||||
OCSP_TLS_SHOULD_SUCCEED="${OCSP_TLS_SHOULD_SUCCEED}" \
|
||||
bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test
|
||||
bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh test-eg
|
||||
OCSP_TLS_SHOULD_SUCCEED="${OCSP_TLS_SHOULD_SUCCEED}" \
|
||||
bash scripts/setup-tests.sh ocsp
|
||||
bash run-tests.sh
|
||||
bash "${DRIVERS_TOOLS}"/.evergreen/ocsp/teardown.sh
|
||||
|
||||
popd
|
||||
|
||||
@ -3,7 +3,9 @@
|
||||
set -eux
|
||||
|
||||
HERE=$(dirname ${BASH_SOURCE:-$0})
|
||||
pushd "$(dirname "$(dirname $HERE)")" > /dev/null
|
||||
HERE="$( cd -- "$HERE" > /dev/null 2>&1 && pwd )"
|
||||
ROOT=$(dirname "$(dirname $HERE)")
|
||||
pushd $ROOT > /dev/null
|
||||
|
||||
# Source the env files to pick up common variables.
|
||||
if [ -f $HERE/env.sh ]; then
|
||||
@ -26,7 +28,7 @@ fi
|
||||
|
||||
# Ensure there is a python venv.
|
||||
if [ ! -d $BIN_DIR ]; then
|
||||
. .evergreen/utils.sh
|
||||
. $ROOT/.evergreen/utils.sh
|
||||
|
||||
if [ -z "${PYTHON_BINARY:-}" ]; then
|
||||
PYTHON_BINARY=$(find_python3)
|
||||
@ -49,3 +51,5 @@ echo "Setting up python environment... done."
|
||||
if [ -d .git ] && [ ! -f .git/hooks/pre-commit ]; then
|
||||
uv run --frozen pre-commit install
|
||||
fi
|
||||
|
||||
popd > /dev/null
|
||||
|
||||
@ -8,54 +8,15 @@ set -eu
|
||||
# COVERAGE If non-empty, run the test suite with coverage.
|
||||
# COMPRESSORS If non-empty, install appropriate compressor.
|
||||
# LIBMONGOCRYPT_URL The URL to download libmongocrypt.
|
||||
# TEST_DATA_LAKE If non-empty, run data lake tests.
|
||||
# TEST_ENCRYPTION If non-empty, run encryption tests.
|
||||
# TEST_CRYPT_SHARED If non-empty, install crypt_shared lib.
|
||||
# TEST_SERVERLESS If non-empy, test on serverless.
|
||||
# TEST_LOADBALANCER If non-empy, test load balancing.
|
||||
# TEST_FLE_AZURE_AUTO If non-empy, test auto FLE on Azure
|
||||
# TEST_FLE_GCP_AUTO If non-empy, test auto FLE on GCP
|
||||
# TEST_PYOPENSSL If non-empy, test with PyOpenSSL
|
||||
# TEST_ENTERPRISE_AUTH If non-empty, test with Enterprise Auth
|
||||
# TEST_AUTH_AWS If non-empty, test AWS Auth Mechanism
|
||||
# TEST_AUTH_OIDC If non-empty, test OIDC Auth Mechanism
|
||||
# TEST_PERF If non-empty, run performance tests
|
||||
# TEST_OCSP If non-empty, run OCSP tests
|
||||
# TEST_ATLAS If non-empty, test Atlas connections
|
||||
# TEST_INDEX_MANAGEMENT If non-empty, run index management tests
|
||||
# TEST_ENCRYPTION_PYOPENSSL If non-empy, test encryption with PyOpenSSL
|
||||
# PERF_TEST If non-empty, run the performance tests.
|
||||
# MONGODB_API_VERSION The mongodb api version to use in tests.
|
||||
# MONGODB_URI If non-empty, use as the MONGODB_URI in tests.
|
||||
# PYTHON_BINARY The python binary to use in tests.
|
||||
|
||||
SCRIPT_DIR=$(dirname ${BASH_SOURCE:-$0})
|
||||
ROOT_DIR="$(dirname "$(dirname $SCRIPT_DIR)")"
|
||||
|
||||
# Try to source the env file.
|
||||
if [ -f $SCRIPT_DIR/env.sh ]; then
|
||||
source $SCRIPT_DIR/env.sh
|
||||
fi
|
||||
|
||||
# Source serverless secrets if applicable.
|
||||
if [ -n "${TEST_SERVERLESS:-}" ]; then
|
||||
source $DRIVERS_TOOLS/.evergreen/serverless/secrets-export.sh
|
||||
fi
|
||||
|
||||
# Source atlas secrets if applicable.
|
||||
if [ -n "${TEST_INDEX_MANAGEMENT:-}" ]; then
|
||||
source $DRIVERS_TOOLS/.evergreen/atlas/secrets-export.sh
|
||||
fi
|
||||
|
||||
# Source ADL secrets if applicable.
|
||||
if [ -n "${TEST_DATA_LAKE:-}" ]; then
|
||||
source ${DRIVERS_TOOLS}/.evergreen/atlas_data_lake/secrets-export.sh
|
||||
fi
|
||||
|
||||
# Source local secrets if applicable.
|
||||
if [ -f "$ROOT_DIR/secrets-export.sh" ]; then
|
||||
source "$ROOT_DIR/secrets-export.sh"
|
||||
fi
|
||||
|
||||
. $ROOT_DIR/.evergreen/utils.sh
|
||||
PYTHON=${PYTHON_BINARY:-$(find_python3)}
|
||||
$PYTHON $SCRIPT_DIR/setup_tests.py
|
||||
uv run $SCRIPT_DIR/setup_tests.py "$@"
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import base64
|
||||
import dataclasses
|
||||
import io
|
||||
@ -20,64 +21,52 @@ HERE = Path(__file__).absolute().parent
|
||||
ROOT = HERE.parent.parent
|
||||
ENV_FILE = HERE / "test-env.sh"
|
||||
DRIVERS_TOOLS = os.environ.get("DRIVERS_TOOLS", "").replace(os.sep, "/")
|
||||
PLATFORM = "windows" if os.name == "nt" else sys.platform
|
||||
PLATFORM = "windows" if os.name == "nt" else sys.platform.lower()
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
logging.basicConfig(level=logging.INFO, format="%(levelname)-8s %(message)s")
|
||||
|
||||
EXPECTED_VARS = [
|
||||
"TEST_ENCRYPTION",
|
||||
"TEST_ENCRYPTION_PYOPENSSL",
|
||||
"TEST_CRYPT_SHARED",
|
||||
"TEST_PYOPENSSL",
|
||||
"TEST_LOAD_BALANCER",
|
||||
"TEST_SERVERLESS",
|
||||
"TEST_INDEX_MANAGEMENT",
|
||||
"TEST_ENTERPRISE_AUTH",
|
||||
"TEST_FLE_AZURE_AUTO",
|
||||
"TEST_FLE_GCP_AUTO",
|
||||
"TEST_LOADBALANCER",
|
||||
"TEST_DATA_LAKE",
|
||||
"TEST_ATLAS",
|
||||
"TEST_OCSP",
|
||||
"TEST_AUTH_AWS",
|
||||
"TEST_AUTH_OIDC",
|
||||
"COMPRESSORS",
|
||||
"MONGODB_URI",
|
||||
"PERF_TEST",
|
||||
"GREEN_FRAMEWORK",
|
||||
"PYTHON_BINARY",
|
||||
"LIBMONGOCRYPT_URL",
|
||||
]
|
||||
# Passthrough environment variables.
|
||||
PASS_THROUGH_ENV = ["GREEN_FRAMEWORK", "NO_EXT", "MONGODB_API_VERSION"]
|
||||
|
||||
# Handle the test suite based on the presence of env variables.
|
||||
TEST_SUITE_MAP = dict(
|
||||
TEST_DATA_LAKE="data_lake",
|
||||
TEST_AUTH_OIDC="auth_oidc",
|
||||
TEST_INDEX_MANAGEMENT="index_management",
|
||||
TEST_ENTERPRISE_AUTH="auth",
|
||||
TEST_LOADBALANCER="load_balancer",
|
||||
TEST_ENCRYPTION="encryption",
|
||||
TEST_FLE_AZURE_AUTO="csfle",
|
||||
TEST_FLE_GCP_AUTO="csfle",
|
||||
TEST_ATLAS="atlas",
|
||||
TEST_OCSP="ocsp",
|
||||
TEST_AUTH_AWS="auth_aws",
|
||||
PERF_TEST="perf",
|
||||
)
|
||||
# Map the test name to a test suite.
|
||||
TEST_SUITE_MAP = {
|
||||
"atlas": "atlas",
|
||||
"auth_aws": "auth_aws",
|
||||
"auth_oidc": "auth_oidc",
|
||||
"data_lake": "data_lake",
|
||||
"default": "",
|
||||
"default_async": "default_async",
|
||||
"default_sync": "default",
|
||||
"encryption": "encryption",
|
||||
"enterprise_auth": "auth",
|
||||
"index_management": "index_management",
|
||||
"kms": "csfle",
|
||||
"load_balancer": "load_balancer",
|
||||
"mockupdb": "mockupdb",
|
||||
"pyopenssl": "",
|
||||
"ocsp": "ocsp",
|
||||
"perf": "perf",
|
||||
"serverless": "",
|
||||
}
|
||||
|
||||
# Handle extras based on the presence of env variables.
|
||||
EXTRAS_MAP = dict(
|
||||
TEST_AUTH_OIDC="aws",
|
||||
TEST_AUTH_AWS="aws",
|
||||
TEST_OCSP="ocsp",
|
||||
TEST_PYOPENSSL="ocsp",
|
||||
TEST_ENTERPRISE_AUTH="gssapi",
|
||||
TEST_ENCRYPTION="encryption",
|
||||
TEST_FLE_AZURE_AUTO="encryption",
|
||||
TEST_FLE_GCP_AUTO="encryption",
|
||||
TEST_ENCRYPTION_PYOPENSSL="ocsp",
|
||||
)
|
||||
# Tests that require a sub test suite.
|
||||
SUB_TEST_REQUIRED = ["auth_aws", "kms"]
|
||||
|
||||
# Map the test name to test extra.
|
||||
EXTRAS_MAP = {
|
||||
"auth_aws": "aws",
|
||||
"auth_oidc": "aws",
|
||||
"encryption": "encryption",
|
||||
"enterprise_auth": "gssapi",
|
||||
"kms": "encryption",
|
||||
"ocsp": "ocsp",
|
||||
"pyopenssl": "ocsp",
|
||||
}
|
||||
|
||||
|
||||
# Map the test name to test group.
|
||||
GROUP_MAP = dict(mockupdb="mockupdb", perf="perf")
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
@ -87,7 +76,7 @@ class Distro:
|
||||
arch: str
|
||||
|
||||
|
||||
def write_env(name: str, value: Any) -> None:
|
||||
def write_env(name: str, value: Any = "1") -> None:
|
||||
with ENV_FILE.open("a", newline="\n") as fid:
|
||||
# Remove any existing quote chars.
|
||||
value = str(value).replace('"', "")
|
||||
@ -105,6 +94,43 @@ def run_command(cmd: str) -> None:
|
||||
LOGGER.info("Running command %s... done.", cmd)
|
||||
|
||||
|
||||
def read_env(path: Path | str) -> dict[str, Any]:
|
||||
config = dict()
|
||||
with Path(path).open() as fid:
|
||||
for line in fid.readlines():
|
||||
if "=" not in line:
|
||||
continue
|
||||
name, _, value = line.strip().partition("=")
|
||||
if value.startswith(('"', "'")):
|
||||
value = value[1:-1]
|
||||
name = name.replace("export ", "")
|
||||
config[name] = value
|
||||
return config
|
||||
|
||||
|
||||
def get_options():
|
||||
parser = argparse.ArgumentParser(
|
||||
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
|
||||
)
|
||||
parser.add_argument("test_name", choices=sorted(TEST_SUITE_MAP), nargs="?", default="default")
|
||||
parser.add_argument("sub_test_name", nargs="?")
|
||||
parser.add_argument(
|
||||
"--verbose", "-v", action="store_true", help="Whether to log at the DEBUG level"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--quiet", "-q", action="store_true", help="Whether to log at the WARNING level"
|
||||
)
|
||||
parser.add_argument("--auth", action="store_true", help="Whether to add authentication")
|
||||
parser.add_argument("--ssl", action="store_true", help="Whether to add TLS configuration")
|
||||
# Get the options.
|
||||
opts = parser.parse_args()
|
||||
if opts.verbose:
|
||||
LOGGER.setLevel(logging.DEBUG)
|
||||
elif opts.quiet:
|
||||
LOGGER.setLevel(logging.WARNING)
|
||||
return opts
|
||||
|
||||
|
||||
def get_distro() -> Distro:
|
||||
name = ""
|
||||
version_id = ""
|
||||
@ -169,55 +195,80 @@ def setup_libmongocrypt():
|
||||
|
||||
|
||||
def handle_test_env() -> None:
|
||||
opts = get_options()
|
||||
test_name = opts.test_name
|
||||
sub_test_name = opts.sub_test_name
|
||||
if test_name in SUB_TEST_REQUIRED and not sub_test_name:
|
||||
raise ValueError(f"Test '{test_name}' requires a sub_test_name")
|
||||
AUTH = os.environ.get("AUTH", "noauth")
|
||||
if opts.auth or "auth" in test_name:
|
||||
AUTH = "auth"
|
||||
# 'auth_aws ecs' shouldn't have extra auth set.
|
||||
if test_name == "auth_aws" and sub_test_name == "ecs":
|
||||
AUTH = "noauth"
|
||||
SSL = os.environ.get("SSL", "nossl")
|
||||
TEST_SUITES = os.environ.get("TEST_SUITES", "")
|
||||
if opts.ssl:
|
||||
SSL = "ssl"
|
||||
TEST_ARGS = ""
|
||||
|
||||
# Start compiling the args we'll pass to uv.
|
||||
# Run in an isolated environment so as not to pollute the base venv.
|
||||
UV_ARGS = ["--isolated --extra test"]
|
||||
|
||||
# Save variables in EXPECTED_VARS that have values.
|
||||
test_title = test_name
|
||||
if sub_test_name:
|
||||
test_title += f" {sub_test_name}"
|
||||
LOGGER.info(f"Setting up '{test_title}' with {AUTH=} and {SSL=}...")
|
||||
|
||||
# Create the test env file with the initial set of values.
|
||||
with ENV_FILE.open("w", newline="\n") as fid:
|
||||
fid.write("#!/usr/bin/env bash\n")
|
||||
fid.write("set +x\n")
|
||||
fid.write(f"export AUTH={AUTH}\n")
|
||||
fid.write(f"export SSL={SSL}\n")
|
||||
for var in EXPECTED_VARS:
|
||||
value = os.environ.get(var, "")
|
||||
# Remove any existing quote chars.
|
||||
value = value.replace('"', "")
|
||||
if value:
|
||||
fid.write(f'export {var}="{value}"\n')
|
||||
ENV_FILE.chmod(ENV_FILE.stat().st_mode | stat.S_IEXEC)
|
||||
|
||||
for env_var, extra in EXTRAS_MAP.items():
|
||||
if env_var in os.environ:
|
||||
UV_ARGS.append(f"--extra {extra}")
|
||||
write_env("AUTH", AUTH)
|
||||
write_env("SSL", SSL)
|
||||
|
||||
for env_var, suite in TEST_SUITE_MAP.items():
|
||||
if TEST_SUITES:
|
||||
break
|
||||
if env_var in os.environ:
|
||||
TEST_SUITES = suite
|
||||
# Skip CSOT tests on non-linux platforms.
|
||||
if PLATFORM != "linux":
|
||||
write_env("SKIP_CSOT_TESTS")
|
||||
|
||||
# Set an environment variable for the test name and sub test name.
|
||||
write_env(f"TEST_{test_name.upper()}")
|
||||
write_env("SUB_TEST_NAME", sub_test_name)
|
||||
|
||||
# Handle pass through env vars.
|
||||
for var in PASS_THROUGH_ENV:
|
||||
if is_set(var):
|
||||
write_env(var, os.environ[var])
|
||||
|
||||
if extra := EXTRAS_MAP.get(test_name, ""):
|
||||
UV_ARGS.append(f"--extra {extra}")
|
||||
|
||||
if group := GROUP_MAP.get(test_name, ""):
|
||||
UV_ARGS.append(f"--group {group}")
|
||||
|
||||
if AUTH != "noauth":
|
||||
if is_set("TEST_DATA_LAKE"):
|
||||
DB_USER = os.environ["ADL_USERNAME"]
|
||||
DB_PASSWORD = os.environ["ADL_PASSWORD"]
|
||||
elif is_set("TEST_SERVERLESS"):
|
||||
DB_USER = os.environ("SERVERLESS_ATLAS_USER")
|
||||
DB_PASSWORD = os.environ("SERVERLESS_ATLAS_PASSWORD")
|
||||
write_env("MONGODB_URI", os.environ("SERVERLESS_URI"))
|
||||
write_env("SINGLE_MONGOS_LB_URI", os.environ("SERVERLESS_URI"))
|
||||
write_env("MULTI_MONGOS_LB_URI", os.environ("SERVERLESS_URI"))
|
||||
elif is_set("TEST_AUTH_OIDC"):
|
||||
if test_name == "data_lake":
|
||||
config = read_env(f"{DRIVERS_TOOLS}/.evergreen/atlas_data_lake/secrets-export.sh")
|
||||
DB_USER = config["ADL_USERNAME"]
|
||||
DB_PASSWORD = config["ADL_PASSWORD"]
|
||||
elif test_name == "serverless":
|
||||
config = read_env(f"{DRIVERS_TOOLS}/.evergreen/serverless/secrets-export.sh")
|
||||
DB_USER = config["SERVERLESS_ATLAS_USER"]
|
||||
DB_PASSWORD = config["SERVERLESS_ATLAS_PASSWORD"]
|
||||
write_env("MONGODB_URI", config["SERVERLESS_URI"])
|
||||
write_env("SINGLE_MONGOS_LB_URI", config["SERVERLESS_URI"])
|
||||
write_env("MULTI_MONGOS_LB_URI", config["SERVERLESS_URI"])
|
||||
elif test_name == "auth_oidc":
|
||||
DB_USER = os.environ["OIDC_ADMIN_USER"]
|
||||
DB_PASSWORD = os.environ["OIDC_ADMIN_PWD"]
|
||||
write_env("DB_IP", os.environ["MONGODB_URI"])
|
||||
elif is_set("TEST_INDEX_MANAGEMENT"):
|
||||
DB_USER = os.environ["DRIVERS_ATLAS_LAMBDA_USER"]
|
||||
DB_PASSWORD = os.environ["DRIVERS_ATLAS_LAMBDA_PASSWORD"]
|
||||
elif test_name == "index_management":
|
||||
config = read_env(f"{DRIVERS_TOOLS}/.evergreen/atlas/secrets-export.sh")
|
||||
DB_USER = config["DRIVERS_ATLAS_LAMBDA_USER"]
|
||||
DB_PASSWORD = config["DRIVERS_ATLAS_LAMBDA_PASSWORD"]
|
||||
write_env("MONGODB_URI", config["MONGODB_URI"])
|
||||
else:
|
||||
DB_USER = "bob"
|
||||
DB_PASSWORD = "pwd123" # noqa: S105
|
||||
@ -225,16 +276,17 @@ def handle_test_env() -> None:
|
||||
write_env("DB_PASSWORD", DB_PASSWORD)
|
||||
LOGGER.info("Added auth, DB_USER: %s", DB_USER)
|
||||
|
||||
if is_set("MONGODB_STARTED"):
|
||||
if is_set("MONGODB_URI"):
|
||||
write_env("PYMONGO_MUST_CONNECT", "true")
|
||||
|
||||
if is_set("DISABLE_TEST_COMMANDS"):
|
||||
write_env("PYMONGO_DISABLE_TEST_COMMANDS", "1")
|
||||
|
||||
if is_set("TEST_ENTERPRISE_AUTH"):
|
||||
if test_name == "enterprise_auth":
|
||||
config = read_env(f"{ROOT}/secrets-export.sh")
|
||||
if PLATFORM == "windows":
|
||||
LOGGER.info("Setting GSSAPI_PASS")
|
||||
write_env("GSSAPI_PASS", os.environ["SASL_PASS"])
|
||||
write_env("GSSAPI_PASS", config["SASL_PASS"])
|
||||
write_env("GSSAPI_CANONICALIZE", "true")
|
||||
else:
|
||||
# BUILD-3830
|
||||
@ -242,23 +294,22 @@ def handle_test_env() -> None:
|
||||
krb_conf.touch()
|
||||
write_env("KRB5_CONFIG", krb_conf)
|
||||
LOGGER.info("Writing keytab")
|
||||
keytab = base64.b64decode(os.environ["KEYTAB_BASE64"])
|
||||
keytab = base64.b64decode(config["KEYTAB_BASE64"])
|
||||
keytab_file = ROOT / ".evergreen/drivers.keytab"
|
||||
with keytab_file.open("wb") as fid:
|
||||
fid.write(keytab)
|
||||
principal = os.environ["PRINCIPAL"]
|
||||
principal = config["PRINCIPAL"]
|
||||
LOGGER.info("Running kinit")
|
||||
os.environ["KRB5_CONFIG"] = str(krb_conf)
|
||||
cmd = f"kinit -k -t {keytab_file} -p {principal}"
|
||||
run_command(cmd)
|
||||
|
||||
LOGGER.info("Setting GSSAPI variables")
|
||||
write_env("GSSAPI_HOST", os.environ["SASL_HOST"])
|
||||
write_env("GSSAPI_PORT", os.environ["SASL_PORT"])
|
||||
write_env("GSSAPI_PRINCIPAL", os.environ["PRINCIPAL"])
|
||||
write_env("GSSAPI_HOST", config["SASL_HOST"])
|
||||
write_env("GSSAPI_PORT", config["SASL_PORT"])
|
||||
write_env("GSSAPI_PRINCIPAL", config["PRINCIPAL"])
|
||||
|
||||
if is_set("TEST_LOADBALANCER"):
|
||||
write_env("LOAD_BALANCER", "1")
|
||||
if test_name == "load_balancer":
|
||||
SINGLE_MONGOS_LB_URI = os.environ.get(
|
||||
"SINGLE_MONGOS_LB_URI", "mongodb://127.0.0.1:8000/?loadBalanced=true"
|
||||
)
|
||||
@ -285,9 +336,9 @@ def handle_test_env() -> None:
|
||||
if compressors == "snappy":
|
||||
UV_ARGS.append("--extra snappy")
|
||||
elif compressors == "zstd":
|
||||
UV_ARGS.append("--extra zstandard")
|
||||
UV_ARGS.append("--extra zstd")
|
||||
|
||||
if is_set("TEST_ENCRYPTION") or is_set("TEST_FLE_AZURE_AUTO") or is_set("TEST_FLE_GCP_AUTO"):
|
||||
if test_name in ["encryption", "kms"]:
|
||||
# Check for libmongocrypt download.
|
||||
if not (ROOT / "libmongocrypt").exists():
|
||||
setup_libmongocrypt()
|
||||
@ -311,14 +362,18 @@ def handle_test_env() -> None:
|
||||
write_env("PYMONGOCRYPT_LIB", PYMONGOCRYPT_LIB.as_posix())
|
||||
# PATH is updated by configure-env.sh for access to mongocryptd.
|
||||
|
||||
if is_set("TEST_ENCRYPTION"):
|
||||
if test_name == "encryption":
|
||||
if not DRIVERS_TOOLS:
|
||||
raise RuntimeError("Missing DRIVERS_TOOLS")
|
||||
run_command(f"bash {DRIVERS_TOOLS}/.evergreen/csfle/setup-secrets.sh")
|
||||
run_command(f"bash {DRIVERS_TOOLS}/.evergreen/csfle/start-servers.sh")
|
||||
|
||||
if sub_test_name == "pyopenssl":
|
||||
UV_ARGS.append("--extra ocsp")
|
||||
|
||||
if is_set("TEST_CRYPT_SHARED"):
|
||||
CRYPT_SHARED_DIR = Path(os.environ["CRYPT_SHARED_LIB_PATH"]).parent.as_posix()
|
||||
config = read_env(f"{DRIVERS_TOOLS}/mo-expansion.sh")
|
||||
CRYPT_SHARED_DIR = Path(config["CRYPT_SHARED_LIB_PATH"]).parent.as_posix()
|
||||
LOGGER.info("Using crypt_shared_dir %s", CRYPT_SHARED_DIR)
|
||||
if PLATFORM == "windows":
|
||||
write_env("PATH", f"{CRYPT_SHARED_DIR}:$PATH")
|
||||
@ -329,21 +384,25 @@ def handle_test_env() -> None:
|
||||
)
|
||||
write_env("LD_LIBRARY_PATH", f"{CRYPT_SHARED_DIR}:${{LD_LIBRARY_PATH:-}}")
|
||||
|
||||
if is_set("TEST_FLE_AZURE_AUTO") or is_set("TEST_FLE_GCP_AUTO"):
|
||||
if "SUCCESS" not in os.environ:
|
||||
raise RuntimeError("Must define SUCCESS")
|
||||
if test_name == "kms":
|
||||
if sub_test_name.startswith("azure"):
|
||||
write_env("TEST_FLE_AZURE_AUTO")
|
||||
else:
|
||||
write_env("TEST_FLE_GCP_AUTO")
|
||||
|
||||
write_env("SUCCESS", os.environ["SUCCESS"])
|
||||
write_env("SUCCESS", "fail" not in sub_test_name)
|
||||
MONGODB_URI = os.environ.get("MONGODB_URI", "")
|
||||
if "@" in MONGODB_URI:
|
||||
raise RuntimeError("MONGODB_URI unexpectedly contains user credentials in FLE test!")
|
||||
|
||||
if is_set("TEST_OCSP"):
|
||||
if test_name == "ocsp":
|
||||
write_env("CA_FILE", os.environ["CA_FILE"])
|
||||
write_env("OCSP_TLS_SHOULD_SUCCEED", os.environ["OCSP_TLS_SHOULD_SUCCEED"])
|
||||
|
||||
if is_set("PERF_TEST"):
|
||||
UV_ARGS.append("--group perf")
|
||||
if test_name == "auth_aws":
|
||||
write_env("MONGODB_URI", os.environ["MONGODB_URI"])
|
||||
|
||||
if test_name == "perf":
|
||||
# PYTHON-4769 Run perf_test.py directly otherwise pytest's test collection negatively
|
||||
# affects the benchmark results.
|
||||
TEST_ARGS = f"test/performance/perf_test.py {TEST_ARGS}"
|
||||
@ -355,6 +414,7 @@ def handle_test_env() -> None:
|
||||
# coverage >=5 is needed for relative_files=true.
|
||||
UV_ARGS.append("--group coverage")
|
||||
TEST_ARGS = f"{TEST_ARGS} --cov"
|
||||
write_env("COVERAGE")
|
||||
|
||||
if is_set("GREEN_FRAMEWORK"):
|
||||
framework = os.environ["GREEN_FRAMEWORK"]
|
||||
@ -364,12 +424,15 @@ def handle_test_env() -> None:
|
||||
# Use --capture=tee-sys so pytest prints test output inline:
|
||||
# https://docs.pytest.org/en/stable/how-to/capture-stdout-stderr.html
|
||||
TEST_ARGS = f"-v --capture=tee-sys --durations=5 {TEST_ARGS}"
|
||||
if TEST_SUITES:
|
||||
TEST_ARGS = f"-m {TEST_SUITES} {TEST_ARGS}"
|
||||
TEST_SUITE = TEST_SUITE_MAP[test_name]
|
||||
if TEST_SUITE:
|
||||
TEST_ARGS = f"-m {TEST_SUITE} {TEST_ARGS}"
|
||||
|
||||
write_env("TEST_ARGS", TEST_ARGS)
|
||||
write_env("UV_ARGS", " ".join(UV_ARGS))
|
||||
|
||||
LOGGER.info(f"Setting up test '{test_title}' with {AUTH=} and {SSL=}... done.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
handle_test_env()
|
||||
|
||||
@ -212,7 +212,7 @@ the pages will re-render and the browser will automatically refresh.
|
||||
- Start the servers using
|
||||
`LOAD_BALANCER=true TOPOLOGY=sharded_cluster AUTH=noauth SSL=nossl MONGODB_VERSION=6.0 DRIVERS_TOOLS=$PWD/drivers-evergreen-tools MONGO_ORCHESTRATION_HOME=$PWD/drivers-evergreen-tools/.evergreen/orchestration $PWD/drivers-evergreen-tools/.evergreen/run-orchestration.sh`.
|
||||
- Set up the test using:
|
||||
`MONGODB_URI='mongodb://localhost:27017,localhost:27018/' TEST_LOADBALANCER=1 just setup-test`.
|
||||
`MONGODB_URI='mongodb://localhost:27017,localhost:27018/' just setup-test load-balancer`.
|
||||
- Run the tests from the `pymongo` checkout directory using:
|
||||
`just test-eg`.
|
||||
|
||||
@ -220,7 +220,7 @@ the pages will re-render and the browser will automatically refresh.
|
||||
- Clone `drivers-evergreen-tools`:
|
||||
`git clone git@github.com:mongodb-labs/drivers-evergreen-tools.git`.
|
||||
- Run `export DRIVERS_TOOLS=$PWD/drivers-evergreen-tools`
|
||||
- Run `TEST_ENCRYPTION=1 AWS_PROFILE=<profile> just setup-test` after setting up your AWS profile with `aws configure sso`.
|
||||
- Run `AWS_PROFILE=<profile> just setup-test encryption` after setting up your AWS profile with `aws configure sso`.
|
||||
- Run the tests with `just test-eg`.
|
||||
- When done, run `just teardown-test` to clean up.
|
||||
|
||||
|
||||
8
justfile
8
justfile
@ -60,17 +60,13 @@ lint-manual:
|
||||
test *args="-v --durations=5 --maxfail=10":
|
||||
{{uv_run}} --extra test pytest {{args}}
|
||||
|
||||
[group('test')]
|
||||
test-mockupdb *args:
|
||||
{{uv_run}} -v --extra test --group mockupdb pytest -m mockupdb {{args}}
|
||||
|
||||
[group('test')]
|
||||
test-eg *args:
|
||||
bash ./.evergreen/run-tests.sh {{args}}
|
||||
|
||||
[group('test')]
|
||||
setup-test:
|
||||
bash .evergreen/scripts/setup-tests.sh
|
||||
setup-test *args="":
|
||||
bash .evergreen/scripts/setup-tests.sh {{args}}
|
||||
|
||||
[group('test')]
|
||||
teardown-test:
|
||||
|
||||
@ -47,20 +47,14 @@ class TestAsyncClientContext(AsyncUnitTest):
|
||||
)
|
||||
|
||||
def test_enableTestCommands_is_disabled(self):
|
||||
if not os.environ.get("PYMONGO_DISABLE_TEST_COMMANDS"):
|
||||
raise SkipTest("PYMONGO_DISABLE_TEST_COMMANDS is not set")
|
||||
if not os.environ.get("DISABLE_TEST_COMMANDS"):
|
||||
raise SkipTest("DISABLE_TEST_COMMANDS is not set")
|
||||
|
||||
self.assertFalse(
|
||||
async_client_context.test_commands_enabled,
|
||||
"enableTestCommands must be disabled when PYMONGO_DISABLE_TEST_COMMANDS is set.",
|
||||
"enableTestCommands must be disabled when DISABLE_TEST_COMMANDS is set.",
|
||||
)
|
||||
|
||||
def test_setdefaultencoding_worked(self):
|
||||
if not os.environ.get("SETDEFAULTENCODING"):
|
||||
raise SkipTest("SETDEFAULTENCODING is not set")
|
||||
|
||||
self.assertEqual(sys.getdefaultencoding(), os.environ["SETDEFAULTENCODING"])
|
||||
|
||||
def test_free_threading_is_enabled(self):
|
||||
if "free-threading build" not in sys.version:
|
||||
raise SkipTest("this test requires the Python free-threading build")
|
||||
|
||||
@ -38,10 +38,6 @@ pytestmark = pytest.mark.data_lake
|
||||
|
||||
class TestDataLakeMustConnect(AsyncUnitTest):
|
||||
async def test_connected_to_data_lake(self):
|
||||
data_lake = os.environ.get("TEST_DATA_LAKE")
|
||||
if not data_lake:
|
||||
self.skipTest("TEST_DATA_LAKE is not set")
|
||||
|
||||
self.assertTrue(
|
||||
async_client_context.is_data_lake and async_client_context.connected,
|
||||
"client context must be connected to data lake when DATA_LAKE is set. Failed attempts:\n{}".format(
|
||||
|
||||
@ -51,8 +51,6 @@ _NAME = "test-search-index"
|
||||
|
||||
class TestCreateSearchIndex(AsyncIntegrationTest):
|
||||
async def test_inputs(self):
|
||||
if not os.environ.get("TEST_INDEX_MANAGEMENT"):
|
||||
raise unittest.SkipTest("Skipping index management tests")
|
||||
listener = AllowListEventListener("createSearchIndexes")
|
||||
client = self.simple_client(event_listeners=[listener])
|
||||
coll = client.test.test
|
||||
@ -90,8 +88,6 @@ class SearchIndexIntegrationBase(AsyncPyMongoTestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls) -> None:
|
||||
if not os.environ.get("TEST_INDEX_MANAGEMENT"):
|
||||
raise unittest.SkipTest("Skipping index management tests")
|
||||
cls.url = os.environ.get("MONGODB_URI")
|
||||
cls.username = os.environ["DB_USER"]
|
||||
cls.password = os.environ["DB_PASSWORD"]
|
||||
|
||||
@ -47,20 +47,14 @@ class TestClientContext(UnitTest):
|
||||
)
|
||||
|
||||
def test_enableTestCommands_is_disabled(self):
|
||||
if not os.environ.get("PYMONGO_DISABLE_TEST_COMMANDS"):
|
||||
raise SkipTest("PYMONGO_DISABLE_TEST_COMMANDS is not set")
|
||||
if not os.environ.get("DISABLE_TEST_COMMANDS"):
|
||||
raise SkipTest("DISABLE_TEST_COMMANDS is not set")
|
||||
|
||||
self.assertFalse(
|
||||
client_context.test_commands_enabled,
|
||||
"enableTestCommands must be disabled when PYMONGO_DISABLE_TEST_COMMANDS is set.",
|
||||
"enableTestCommands must be disabled when DISABLE_TEST_COMMANDS is set.",
|
||||
)
|
||||
|
||||
def test_setdefaultencoding_worked(self):
|
||||
if not os.environ.get("SETDEFAULTENCODING"):
|
||||
raise SkipTest("SETDEFAULTENCODING is not set")
|
||||
|
||||
self.assertEqual(sys.getdefaultencoding(), os.environ["SETDEFAULTENCODING"])
|
||||
|
||||
def test_free_threading_is_enabled(self):
|
||||
if "free-threading build" not in sys.version:
|
||||
raise SkipTest("this test requires the Python free-threading build")
|
||||
|
||||
@ -38,10 +38,6 @@ pytestmark = pytest.mark.data_lake
|
||||
|
||||
class TestDataLakeMustConnect(UnitTest):
|
||||
def test_connected_to_data_lake(self):
|
||||
data_lake = os.environ.get("TEST_DATA_LAKE")
|
||||
if not data_lake:
|
||||
self.skipTest("TEST_DATA_LAKE is not set")
|
||||
|
||||
self.assertTrue(
|
||||
client_context.is_data_lake and client_context.connected,
|
||||
"client context must be connected to data lake when DATA_LAKE is set. Failed attempts:\n{}".format(
|
||||
|
||||
@ -51,8 +51,6 @@ _NAME = "test-search-index"
|
||||
|
||||
class TestCreateSearchIndex(IntegrationTest):
|
||||
def test_inputs(self):
|
||||
if not os.environ.get("TEST_INDEX_MANAGEMENT"):
|
||||
raise unittest.SkipTest("Skipping index management tests")
|
||||
listener = AllowListEventListener("createSearchIndexes")
|
||||
client = self.simple_client(event_listeners=[listener])
|
||||
coll = client.test.test
|
||||
@ -90,8 +88,6 @@ class SearchIndexIntegrationBase(PyMongoTestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls) -> None:
|
||||
if not os.environ.get("TEST_INDEX_MANAGEMENT"):
|
||||
raise unittest.SkipTest("Skipping index management tests")
|
||||
cls.url = os.environ.get("MONGODB_URI")
|
||||
cls.username = os.environ["DB_USER"]
|
||||
cls.password = os.environ["DB_PASSWORD"]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user