Skip to content

Commit 5d6d8ca

Browse files
authored
PYTHON-3885 Use tox in remaining Evergreen Tests (#1347)
1 parent 1f1e5bd commit 5d6d8ca

15 files changed

+123
-189
lines changed

.evergreen/config.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ functions:
370370
script: |
371371
set -o xtrace
372372
${PREPARE_SHELL}
373-
PYTHON_BINARY=${PYTHON_BINARY} bash ${PROJECT_DIRECTORY}/.evergreen/run-doctests.sh
373+
PYTHON_BINARY=${PYTHON_BINARY} bash ${PROJECT_DIRECTORY}/.evergreen/tox.sh -m doc-test
374374
375375
"run tests":
376376
# If testing FLE, start the KMS mock servers, first create the virtualenv.
@@ -477,7 +477,6 @@ functions:
477477
fi
478478
if [ -n "${test_loadbalancer}" ]; then
479479
export TEST_LOADBALANCER=1
480-
export LOAD_BALANCER=1
481480
export SINGLE_MONGOS_LB_URI="${SINGLE_MONGOS_LB_URI}"
482481
export MULTI_MONGOS_LB_URI="${MULTI_MONGOS_LB_URI}"
483482
fi
@@ -537,8 +536,11 @@ functions:
537536
set +x
538537
. ./prepare_enterprise_auth.sh
539538
rm -f ./prepare_enterprise_auth.sh
540-
541-
PYTHON_BINARY=${PYTHON_BINARY} PROJECT_DIRECTORY=${PROJECT_DIRECTORY} bash ${PROJECT_DIRECTORY}/.evergreen/run-enterprise-auth-tests.sh
539+
PROJECT_DIRECTORY="${PROJECT_DIRECTORY}" \
540+
PYTHON_BINARY="${PYTHON_BINARY}" \
541+
TEST_ENTERPRISE_AUTH=1 \
542+
AUTH=auth \
543+
bash ${PROJECT_DIRECTORY}/.evergreen/tox.sh -m test-eg
542544
543545
"run atlas tests":
544546
- command: shell.exec
@@ -964,10 +966,11 @@ functions:
964966
working_dir: "src"
965967
script: |
966968
${PREPARE_SHELL}
969+
TEST_OCSP=1 \
967970
PYTHON_BINARY=${PYTHON_BINARY} \
968971
CA_FILE="$DRIVERS_TOOLS/.evergreen/ocsp/${OCSP_ALGORITHM}/ca.pem" \
969972
OCSP_TLS_SHOULD_SUCCEED="${OCSP_TLS_SHOULD_SUCCEED}" \
970-
bash ${PROJECT_DIRECTORY}/.evergreen/run-ocsp-tests.sh
973+
bash ${PROJECT_DIRECTORY}/.evergreen/tox.sh -m test-eg
971974
972975
run-valid-ocsp-server:
973976
- command: shell.exec

.evergreen/run-doctests.sh

Lines changed: 0 additions & 7 deletions
This file was deleted.

.evergreen/run-enterprise-auth-tests.sh

Lines changed: 0 additions & 32 deletions
This file was deleted.

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

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,12 @@ set -o xtrace
2222

2323
# Install python3.7 with pip.
2424
apt-get update
25-
apt install python3.7 python3-pip -y
25+
apt-get install python3.7 python3-pip build-essential python3.7-dev -y
2626

27-
authtest () {
28-
echo "Running MONGODB-AWS ECS authentication tests with $PYTHON"
29-
$PYTHON --version
30-
$PYTHON -m pip install --upgrade wheel setuptools pip
31-
cd src
32-
$PYTHON -m pip install '.[aws]'
33-
$PYTHON test/auth_aws/test_auth_aws.py -v
34-
cd -
35-
}
36-
37-
PYTHON="python3.7" authtest
27+
export PYTHON_BINARY="python3.7"
28+
export TEST_AUTH_AWS=1
29+
export AUTH="auth"
30+
export SET_XTRACE_ON=1
31+
cd src
32+
python3.7 -m pip install --user tox
33+
bash .evergreen/tox.sh -m test-eg

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

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -39,37 +39,12 @@ fi
3939
# show test output
4040
set -x
4141

42-
# Workaround macOS python 3.9 incompatibility with system virtualenv.
43-
if [ "$(uname -s)" = "Darwin" ]; then
44-
VIRTUALENV="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -m virtualenv"
45-
else
46-
VIRTUALENV=$(command -v virtualenv)
47-
fi
48-
49-
authtest () {
50-
if [ "Windows_NT" = "$OS" ]; then
51-
PYTHON=$(cygpath -m $PYTHON)
52-
fi
53-
54-
echo "Running MONGODB-AWS authentication tests with $PYTHON"
55-
$PYTHON --version
56-
57-
$VIRTUALENV -p $PYTHON --never-download venvaws
58-
if [ "Windows_NT" = "$OS" ]; then
59-
. venvaws/Scripts/activate
60-
else
61-
. venvaws/bin/activate
62-
fi
63-
python -m pip install '.[aws]'
64-
python test/auth_aws/test_auth_aws.py -v
65-
deactivate
66-
rm -rf venvaws
67-
}
68-
69-
PYTHON=${PYTHON_BINARY:-}
70-
if [ -z "$PYTHON" ]; then
42+
if [ -z "$PYTHON_BINARY" ]; then
7143
echo "Cannot test without specifying PYTHON_BINARY"
7244
exit 1
7345
fi
7446

75-
authtest
47+
export TEST_AUTH_AWS=1
48+
export AUTH="auth"
49+
export SET_XTRACE_ON=1
50+
bash ./.evergreen/tox.sh -m test-eg

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

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -45,41 +45,13 @@ if [ "$ASSERT_NO_URI_CREDS" = "true" ]; then
4545
fi
4646
fi
4747

48-
# show test output
49-
set -x
50-
51-
# Workaround macOS python 3.9 incompatibility with system virtualenv.
52-
if [ "$(uname -s)" = "Darwin" ]; then
53-
VIRTUALENV="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -m virtualenv"
54-
else
55-
VIRTUALENV=$(command -v virtualenv)
56-
fi
57-
58-
authtest () {
59-
if [ "Windows_NT" = "$OS" ]; then
60-
PYTHON=$(cygpath -m $PYTHON)
61-
fi
62-
63-
echo "Running MONGODB-OIDC authentication tests with $PYTHON"
64-
$PYTHON --version
65-
66-
$VIRTUALENV -p $PYTHON --never-download venvoidc
67-
if [ "Windows_NT" = "$OS" ]; then
68-
. venvoidc/Scripts/activate
69-
else
70-
. venvoidc/bin/activate
71-
fi
72-
python -m pip install -U pip setuptools
73-
python -m pip install '.[aws]'
74-
python test/auth_aws/test_auth_oidc.py -v
75-
deactivate
76-
rm -rf venvoidc
77-
}
78-
79-
PYTHON=${PYTHON_BINARY:-}
80-
if [ -z "$PYTHON" ]; then
48+
if [ -z "$PYTHON_BINARY" ]; then
8149
echo "Cannot test without specifying PYTHON_BINARY"
8250
exit 1
8351
fi
8452

85-
authtest
53+
export TEST_AUTH_OIDC=1
54+
export AUTH_MECH="SCRAM-SHA-256"
55+
export AUTH="auth"
56+
export SET_XTRACE_ON=1
57+
bash ./.evergreen/tox.sh -m test-eg

.evergreen/run-ocsp-tests.sh

Lines changed: 0 additions & 25 deletions
This file was deleted.

.evergreen/run-perf-tests.sh

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,8 @@ cd ..
1313
export TEST_PATH="${PROJECT_DIRECTORY}/driver-performance-test-data"
1414
export OUTPUT_FILE="${PROJECT_DIRECTORY}/results.json"
1515

16-
MTCBIN=/opt/mongodbtoolchain/v3/bin
17-
VIRTUALENV="$MTCBIN/virtualenv -p $MTCBIN/python3"
16+
export PYTHON_BINARY=/opt/mongodbtoolchain/v3/bin/python3
17+
export C_EXTENSIONS=1
18+
export PERF_TEST=1
1819

19-
$VIRTUALENV pyperftest
20-
. pyperftest/bin/activate
21-
python -m pip install simplejson
22-
23-
python setup.py build_ext -i
24-
start_time=$(date +%s)
25-
python test/performance/perf_test.py --locals
26-
end_time=$(date +%s)
27-
elapsed_secs=$((end_time-start_time))
28-
29-
cat results.json
30-
31-
echo "{\"failures\": 0, \"results\": [{\"status\": \"pass\", \"exit_code\": 0, \"test_file\": \"BenchMarkTests\", \"start\": $start_time, \"end\": $end_time, \"elapsed\": $elapsed_secs}]}" > report.json
32-
33-
cat report.json
20+
bash ./.evergreen/tox.sh -m test-eg

.evergreen/run-tests.sh

Lines changed: 72 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ set -o errexit # Exit the script with error if any of the commands fail
2020
# TEST_FLE_AZURE_AUTO If non-empy, test auto FLE on Azure
2121
# TEST_FLE_GCP_AUTO If non-empy, test auto FLE on GCP
2222
# TEST_PYOPENSSL If non-empy, test with PyOpenSSL
23+
# TEST_ENTERPRISE_AUTH If non-empty, test with Enterprise Auth
24+
# TEST_AUTH_AWS If non-empty, test AWS Auth Mechanism
25+
# TEST_AUTH_OIDC If non-empty, test OIDC Auth Mechanism
26+
# TEST_PERF If non-empty, run performance tests
27+
# TEST_OCSP If non-empty, run OCSP tests
2328
# TEST_ENCRYPTION_PYOPENSSL If non-empy, test encryption with PyOpenSSL
2429

2530
if [ -n "${SET_XTRACE_ON}" ]; then
@@ -48,6 +53,34 @@ if [ "$AUTH" != "noauth" ]; then
4853
fi
4954
fi
5055

56+
if [ -n "$TEST_ENTERPRISE_AUTH" ]; then
57+
if [ "Windows_NT" = "$OS" ]; then
58+
echo "Setting GSSAPI_PASS"
59+
export GSSAPI_PASS=${SASL_PASS}
60+
export GSSAPI_CANONICALIZE="true"
61+
else
62+
# BUILD-3830
63+
touch krb5.conf.empty
64+
export KRB5_CONFIG=${PROJECT_DIRECTORY}/.evergreen/krb5.conf.empty
65+
66+
echo "Writing keytab"
67+
echo ${KEYTAB_BASE64} | base64 -d > ${PROJECT_DIRECTORY}/.evergreen/drivers.keytab
68+
echo "Running kinit"
69+
kinit -k -t ${PROJECT_DIRECTORY}/.evergreen/drivers.keytab -p ${PRINCIPAL}
70+
fi
71+
echo "Setting GSSAPI variables"
72+
export GSSAPI_HOST=${SASL_HOST}
73+
export GSSAPI_PORT=${SASL_PORT}
74+
export GSSAPI_PRINCIPAL=${PRINCIPAL}
75+
fi
76+
77+
if [ -n "$TEST_LOADBALANCER" ]; then
78+
export LOAD_BALANCER=1
79+
export SINGLE_MONGOS_LB_URI="${SINGLE_MONGOS_LB_URI:-mongodb://127.0.0.1:8000/?loadBalanced=true}"
80+
export MULTI_MONGOS_LB_URI="${MULTI_MONGOS_LB_URI:-mongodb://127.0.0.1:8001/?loadBalanced=true}"
81+
export TEST_ARGS="test/test_load_balancer.py"
82+
fi
83+
5184
if [ "$SSL" != "nossl" ]; then
5285
export CLIENT_PEM="$DRIVERS_TOOLS/.evergreen/x509gen/client.pem"
5386
export CA_PEM="$DRIVERS_TOOLS/.evergreen/x509gen/ca.pem"
@@ -59,30 +92,30 @@ if [ "$SSL" != "nossl" ]; then
5992
fi
6093

6194
if [ "$COMPRESSORS" = "snappy" ]; then
62-
pip install '.[snappy]'
95+
python -m pip install '.[snappy]'
6396
PYTHON=python
6497
elif [ "$COMPRESSORS" = "zstd" ]; then
65-
pip install zstandard
98+
python -m pip install zstandard
6699
fi
67100

68101
# PyOpenSSL test setup.
69102
if [ -n "$TEST_PYOPENSSL" ]; then
70-
pip install '.[ocsp]'
103+
python -m pip install '.[ocsp]'
71104
fi
72105

73106
if [ -n "$TEST_ENCRYPTION" ] || [ -n "$TEST_FLE_AZURE_AUTO" ] || [ -n "$TEST_FLE_GCP_AUTO" ]; then
74107

75108
# Work around for root certifi not being installed.
76109
# TODO: Remove after PYTHON-3827
77110
if [ "$(uname -s)" = "Darwin" ]; then
78-
pip install certifi
111+
python -m pip install certifi
79112
CERT_PATH=$(python -c "import certifi; print(certifi.where())")
80113
export SSL_CERT_FILE=${CERT_PATH}
81114
export REQUESTS_CA_BUNDLE=${CERT_PATH}
82115
export AWS_CA_BUNDLE=${CERT_PATH}
83116
fi
84117

85-
pip install '.[encryption]'
118+
python -m pip install '.[encryption]'
86119

87120
if [ "Windows_NT" = "$OS" ]; then # Magic variable in cygwin
88121
# PYTHON-2808 Ensure this machine has the CA cert for google KMS.
@@ -128,7 +161,7 @@ fi
128161

129162
if [ -n "$TEST_ENCRYPTION" ]; then
130163
if [ -n "$TEST_ENCRYPTION_PYOPENSSL" ]; then
131-
pip install '.[ocsp]'
164+
python -m pip install '.[ocsp]'
132165
fi
133166

134167
# Get access to the AWS temporary credentials:
@@ -172,6 +205,27 @@ if [ -n "$TEST_DATA_LAKE" ] && [ -z "$TEST_ARGS" ]; then
172205
TEST_ARGS="test/test_data_lake.py"
173206
fi
174207

208+
if [ -n "$TEST_OCSP" ]; then
209+
python -m pip install ".[ocsp]"
210+
TEST_ARGS="test/ocsp/test_ocsp.py"
211+
fi
212+
213+
if [ -n "$TEST_AUTH_AWS" ]; then
214+
python -m pip install ".[aws]"
215+
TEST_ARGS="test/auth_aws/test_auth_aws.py"
216+
fi
217+
218+
if [ -n "$TEST_AUTH_OIDC" ]; then
219+
python -m pip install ".[aws]"
220+
TEST_ARGS="test/auth_aws/test_auth_oidc.py"
221+
fi
222+
223+
if [ -n "$PERF_TEST" ]; then
224+
python -m pip install simplejson
225+
start_time=$(date +%s)
226+
TEST_ARGS="test/performance/perf_test.py"
227+
fi
228+
175229
echo "Running $AUTH tests over $SSL with python $PYTHON"
176230
python -c 'import sys; print(sys.version)'
177231

@@ -199,3 +253,15 @@ else
199253
python -m pip install $GREEN_FRAMEWORK
200254
python green_framework_test.py $GREEN_FRAMEWORK
201255
fi
256+
257+
# Handle perf test post actions.
258+
if [ -n "$PERF_TEST" ]; then
259+
end_time=$(date +%s)
260+
elapsed_secs=$((end_time-start_time))
261+
262+
cat results.json
263+
264+
echo "{\"failures\": 0, \"results\": [{\"status\": \"pass\", \"exit_code\": 0, \"test_file\": \"BenchMarkTests\", \"start\": $start_time, \"end\": $end_time, \"elapsed\": $elapsed_secs}]}" > report.json
265+
266+
cat report.json
267+
fi

0 commit comments

Comments
 (0)