Skip to content

Commit fa4ff49

Browse files
authored
Merge branch 'master' into PYTHON-4521
2 parents ffb6033 + 1053931 commit fa4ff49

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+8243
-900
lines changed

.evergreen/config.yml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ functions:
365365
${PREPARE_SHELL}
366366
set -o xtrace
367367
export PYTHON_BINARY=${PYTHON_BINARY}
368-
bash ${PROJECT_DIRECTORY}/.evergreen/tox.sh -m test-mockupdb
368+
bash ${PROJECT_DIRECTORY}/.evergreen/hatch.sh test:test-mockupdb
369369
370370
"run doctests":
371371
- command: shell.exec
@@ -375,18 +375,19 @@ functions:
375375
script: |
376376
${PREPARE_SHELL}
377377
set -o xtrace
378-
PYTHON_BINARY=${PYTHON_BINARY} bash ${PROJECT_DIRECTORY}/.evergreen/tox.sh -m doc-test
378+
PYTHON_BINARY=${PYTHON_BINARY} bash ${PROJECT_DIRECTORY}/.evergreen/hatch.sh doctest:test
379379
380380
"run tests":
381381
- command: shell.exec
382382
params:
383383
working_dir: "src"
384384
shell: bash
385-
include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
385+
background: true
386+
include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
386387
script: |
387388
${PREPARE_SHELL}
388389
if [ -n "${test_encryption}" ]; then
389-
. .evergreen/tox.sh -m setup-encryption
390+
./.evergreen/hatch.sh encryption:setup
390391
fi
391392
- command: shell.exec
392393
type: test
@@ -407,6 +408,7 @@ functions:
407408
if [ -n "${test_encryption}" ]; then
408409
# Disable xtrace (just in case it was accidentally set).
409410
set +x
411+
bash ${DRIVERS_TOOLS}/.evergreen/csfle/await-servers.sh
410412
export TEST_ENCRYPTION=1
411413
if [ -n "${test_encryption_pyopenssl}" ]; then
412414
export TEST_ENCRYPTION_PYOPENSSL=1
@@ -446,7 +448,7 @@ functions:
446448
SSL=${SSL} \
447449
TEST_DATA_LAKE=${TEST_DATA_LAKE} \
448450
MONGODB_API_VERSION=${MONGODB_API_VERSION} \
449-
bash ${PROJECT_DIRECTORY}/.evergreen/tox.sh -m test-eg
451+
bash ${PROJECT_DIRECTORY}/.evergreen/hatch.sh test:test-eg
450452
451453
"run enterprise auth tests":
452454
- command: shell.exec
@@ -462,7 +464,7 @@ functions:
462464
PYTHON_BINARY="${PYTHON_BINARY}" \
463465
TEST_ENTERPRISE_AUTH=1 \
464466
AUTH=auth \
465-
bash ${PROJECT_DIRECTORY}/.evergreen/tox.sh -m test-eg
467+
bash ${PROJECT_DIRECTORY}/.evergreen/hatch.sh test:test-eg
466468
467469
"run atlas tests":
468470
- command: shell.exec
@@ -478,7 +480,7 @@ functions:
478480
PROJECT_DIRECTORY="${PROJECT_DIRECTORY}" \
479481
PYTHON_BINARY="${PYTHON_BINARY}" \
480482
TEST_ATLAS=1 \
481-
bash ${PROJECT_DIRECTORY}/.evergreen/tox.sh -m test-eg
483+
bash ${PROJECT_DIRECTORY}/.evergreen/hatch.sh test:test-eg
482484
483485
"get aws auth secrets":
484486
- command: subprocess.exec
@@ -597,7 +599,7 @@ functions:
597599
working_dir: "src"
598600
script: |
599601
${PREPARE_SHELL}
600-
. .evergreen/tox.sh -m teardown-encryption
602+
. .evergreen/hatch.sh encryption:teardown
601603
rm -rf $DRIVERS_TOOLS || true
602604
rm -f ./secrets-export.sh || true
603605
@@ -683,7 +685,7 @@ functions:
683685
PYTHON_BINARY=${PYTHON_BINARY} \
684686
CA_FILE="$DRIVERS_TOOLS/.evergreen/ocsp/${OCSP_ALGORITHM}/ca.pem" \
685687
OCSP_TLS_SHOULD_SUCCEED="${OCSP_TLS_SHOULD_SUCCEED}" \
686-
bash ${PROJECT_DIRECTORY}/.evergreen/tox.sh -m test-eg
688+
bash ${PROJECT_DIRECTORY}/.evergreen/hatch.sh test:test-eg
687689
688690
run-valid-ocsp-server:
689691
- command: shell.exec
@@ -2128,7 +2130,7 @@ tasks:
21282130
${PREPARE_SHELL}
21292131
export PYTHON_BINARY=/opt/mongodbtoolchain/v4/bin/python3
21302132
export LIBMONGOCRYPT_URL=https://s3.amazonaws.com/${bucket_name}/libmongocrypt/debian10/master/latest/libmongocrypt.tar.gz
2131-
SUCCESS=false TEST_FLE_GCP_AUTO=1 ./.evergreen/tox.sh -m test-eg
2133+
SUCCESS=false TEST_FLE_GCP_AUTO=1 ./.evergreen/hatch.sh test:test-eg
21322134
21332135
- name: testazurekms-task
21342136
commands:

.evergreen/hatch.sh

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/bash
2+
set -o errexit # Exit the script with error if any of the commands fail
3+
set -x
4+
5+
. .evergreen/utils.sh
6+
7+
if [ -z "$PYTHON_BINARY" ]; then
8+
PYTHON_BINARY=$(find_python3)
9+
fi
10+
11+
if $PYTHON_BINARY -m hatch --version; then
12+
run_hatch() {
13+
$PYTHON_BINARY hatch run "$@"
14+
}
15+
else # No toolchain hatch present, set up virtualenv before installing hatch
16+
createvirtualenv "$PYTHON_BINARY" hatchenv
17+
trap "deactivate; rm -rf hatchenv" EXIT HUP
18+
python -m pip install -q hatch
19+
run_hatch() {
20+
python -m hatch run "$@"
21+
}
22+
fi
23+
24+
run_hatch "${@:1}"

.evergreen/run-azurekms-fail-test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ PYTHON_BINARY=/opt/mongodbtoolchain/v4/bin/python3 \
77
KEY_VAULT_ENDPOINT="${AZUREKMS_KEYVAULTENDPOINT}" \
88
LIBMONGOCRYPT_URL=https://s3.amazonaws.com/mciuploads/libmongocrypt/debian10/master/latest/libmongocrypt.tar.gz \
99
SUCCESS=false TEST_FLE_AZURE_AUTO=1 \
10-
./.evergreen/tox.sh -m test-eg
10+
./.evergreen/hatch.sh test:test-eg

.evergreen/run-azurekms-test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ AZUREKMS_CMD="tar xf mongo-python-driver.tgz" \
1616
$DRIVERS_TOOLS/.evergreen/csfle/azurekms/run-command.sh
1717
echo "Untarring file ... end"
1818
echo "Running test ... begin"
19-
AZUREKMS_CMD="KEY_NAME=\"$AZUREKMS_KEYNAME\" KEY_VAULT_ENDPOINT=\"$AZUREKMS_KEYVAULTENDPOINT\" LIBMONGOCRYPT_URL=https://s3.amazonaws.com/mciuploads/libmongocrypt/debian10/master/latest/libmongocrypt.tar.gz SUCCESS=true TEST_FLE_AZURE_AUTO=1 ./.evergreen/tox.sh -m test-eg" \
19+
AZUREKMS_CMD="KEY_NAME=\"$AZUREKMS_KEYNAME\" KEY_VAULT_ENDPOINT=\"$AZUREKMS_KEYVAULTENDPOINT\" LIBMONGOCRYPT_URL=https://s3.amazonaws.com/mciuploads/libmongocrypt/debian10/master/latest/libmongocrypt.tar.gz SUCCESS=true TEST_FLE_AZURE_AUTO=1 ./.evergreen/hatch.sh test:test-eg" \
2020
$DRIVERS_TOOLS/.evergreen/csfle/azurekms/run-command.sh
2121
echo "Running test ... end"

.evergreen/run-gcpkms-test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ echo "Untarring file ... begin"
1414
GCPKMS_CMD="tar xf mongo-python-driver.tgz" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh
1515
echo "Untarring file ... end"
1616
echo "Running test ... begin"
17-
GCPKMS_CMD="SUCCESS=true TEST_FLE_GCP_AUTO=1 LIBMONGOCRYPT_URL=https://s3.amazonaws.com/mciuploads/libmongocrypt/debian10/master/latest/libmongocrypt.tar.gz ./.evergreen/tox.sh -m test-eg" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh
17+
GCPKMS_CMD="SUCCESS=true TEST_FLE_GCP_AUTO=1 LIBMONGOCRYPT_URL=https://s3.amazonaws.com/mciuploads/libmongocrypt/debian10/master/latest/libmongocrypt.tar.gz ./.evergreen/hatch.sh test:test-eg" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh
1818
echo "Running test ... end"

.evergreen/run-mongodb-aws-ecs-test.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ export TEST_AUTH_AWS=1
3030
export AUTH="auth"
3131
export SET_XTRACE_ON=1
3232
cd src
33-
$PYTHON_BINARY -m pip install -q --user tox
34-
bash .evergreen/tox.sh -m test-eg
33+
$PYTHON_BINARY -m pip install -q --user hatch
34+
bash .evergreen/hatch.sh test:test-eg

.evergreen/run-mongodb-aws-test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ set -x
2424
export TEST_AUTH_AWS=1
2525
export AUTH="auth"
2626
export SET_XTRACE_ON=1
27-
bash ./.evergreen/tox.sh -m test-eg
27+
bash ./.evergreen/hatch.sh test:test-eg

.evergreen/run-mongodb-oidc-test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ fi
2929
export TEST_AUTH_OIDC=1
3030
export COVERAGE=1
3131
export AUTH="auth"
32-
bash ./.evergreen/tox.sh -m test-eg -- "${@:1}"
32+
bash ./.evergreen/hatch.sh test:test-eg -- "${@:1}"

.evergreen/run-perf-tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ export OUTPUT_FILE="${PROJECT_DIRECTORY}/results.json"
1616
export PYTHON_BINARY=/opt/mongodbtoolchain/v4/bin/python3
1717
export PERF_TEST=1
1818

19-
bash ./.evergreen/tox.sh -m test-eg
19+
bash ./.evergreen/hatch.sh test:test-eg

.evergreen/run-tests.sh

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ set -o xtrace
3030

3131
AUTH=${AUTH:-noauth}
3232
SSL=${SSL:-nossl}
33+
TEST_SUITES="test/ test/asynchronous/"
3334
TEST_ARGS="${*:1}"
3435

3536
export PIP_QUIET=1 # Quiet by default
@@ -95,7 +96,7 @@ if [ -n "$TEST_LOADBALANCER" ]; then
9596
export LOAD_BALANCER=1
9697
export SINGLE_MONGOS_LB_URI="${SINGLE_MONGOS_LB_URI:-mongodb://127.0.0.1:8000/?loadBalanced=true}"
9798
export MULTI_MONGOS_LB_URI="${MULTI_MONGOS_LB_URI:-mongodb://127.0.0.1:8001/?loadBalanced=true}"
98-
export TEST_ARGS="test/test_load_balancer.py"
99+
export TEST_SUITES="test/test_load_balancer.py"
99100
fi
100101

101102
if [ "$SSL" != "nossl" ]; then
@@ -123,9 +124,9 @@ if [ -n "$TEST_ENCRYPTION" ] || [ -n "$TEST_FLE_AZURE_AUTO" ] || [ -n "$TEST_FLE
123124

124125
python -m pip install '.[encryption]'
125126

126-
# Install libmongocrypt if necessary.
127+
# Setup encryption if necessary.
127128
if [ ! -d "libmongocrypt" ]; then
128-
bash ./.evergreen/setup-libmongocrypt.sh
129+
bash ./.evergreen/setup-encryption.sh
129130
fi
130131

131132
# Use the nocrypto build to avoid dependency issues with older windows/python versions.
@@ -171,9 +172,7 @@ if [ -n "$TEST_ENCRYPTION" ]; then
171172
export PATH=$CRYPT_SHARED_DIR:$PATH
172173
fi
173174
# Only run the encryption tests.
174-
if [ -z "$TEST_ARGS" ]; then
175-
TEST_ARGS="test/test_encryption.py"
176-
fi
175+
TEST_SUITES="test/test_encryption.py"
177176
fi
178177

179178
if [ -n "$TEST_FLE_AZURE_AUTO" ] || [ -n "$TEST_FLE_GCP_AUTO" ]; then
@@ -187,9 +186,7 @@ if [ -n "$TEST_FLE_AZURE_AUTO" ] || [ -n "$TEST_FLE_GCP_AUTO" ]; then
187186
exit 1
188187
fi
189188

190-
if [ -z "$TEST_ARGS" ]; then
191-
TEST_ARGS="test/test_on_demand_csfle.py"
192-
fi
189+
TEST_SUITES="test/test_on_demand_csfle.py"
193190
fi
194191

195192
if [ -n "$TEST_INDEX_MANAGEMENT" ]; then
@@ -198,36 +195,36 @@ if [ -n "$TEST_INDEX_MANAGEMENT" ]; then
198195
set +x
199196
export DB_PASSWORD="${DRIVERS_ATLAS_LAMBDA_PASSWORD}"
200197
set -x
201-
TEST_ARGS="test/test_index_management.py"
198+
TEST_SUITES="test/test_index_management.py"
202199
fi
203200

204201
if [ -n "$TEST_DATA_LAKE" ] && [ -z "$TEST_ARGS" ]; then
205-
TEST_ARGS="test/test_data_lake.py"
202+
TEST_SUITES="test/test_data_lake.py"
206203
fi
207204

208205
if [ -n "$TEST_ATLAS" ]; then
209-
TEST_ARGS="test/atlas/test_connection.py"
206+
TEST_SUITES="test/atlas/test_connection.py"
210207
fi
211208

212209
if [ -n "$TEST_OCSP" ]; then
213210
python -m pip install ".[ocsp]"
214-
TEST_ARGS="test/ocsp/test_ocsp.py"
211+
TEST_SUITES="test/ocsp/test_ocsp.py"
215212
fi
216213

217214
if [ -n "$TEST_AUTH_AWS" ]; then
218215
python -m pip install ".[aws]"
219-
TEST_ARGS="test/auth_aws/test_auth_aws.py"
216+
TEST_SUITES="test/auth_aws/test_auth_aws.py"
220217
fi
221218

222219
if [ -n "$TEST_AUTH_OIDC" ]; then
223220
python -m pip install ".[aws]"
224-
TEST_ARGS="test/auth_oidc/test_auth_oidc.py $TEST_ARGS"
221+
TEST_SUITES="test/auth_oidc/test_auth_oidc.py $TEST_ARGS"
225222
fi
226223

227224
if [ -n "$PERF_TEST" ]; then
228225
python -m pip install simplejson
229226
start_time=$(date +%s)
230-
TEST_ARGS="test/performance/perf_test.py"
227+
TEST_SUITES="test/performance/perf_test.py"
231228
fi
232229

233230
echo "Running $AUTH tests over $SSL with python $(which python)"
@@ -257,8 +254,7 @@ PIP_QUIET=0 python -m pip list
257254
if [ -z "$GREEN_FRAMEWORK" ]; then
258255
# Use --capture=tee-sys so pytest prints test output inline:
259256
# https://docs.pytest.org/en/stable/how-to/capture-stdout-stderr.html
260-
python -m pytest -v --capture=tee-sys --durations=5 --maxfail=10 $TEST_ARGS
261-
python -m pytest -v --capture=tee-sys --durations=5 --maxfail=10 test/asynchronous/ $TEST_ARGS
257+
python -m pytest -v --capture=tee-sys --durations=5 --maxfail=10 $TEST_SUITES $TEST_ARGS
262258
else
263259
python green_framework_test.py $GREEN_FRAMEWORK -v $TEST_ARGS
264260
fi

0 commit comments

Comments
 (0)