Skip to content

Commit 98a74d2

Browse files
authored
GODRIVER-3367 Use subprocess.exec for remaining Evergreen functions (#1856)
1 parent b92661a commit 98a74d2

File tree

9 files changed

+354
-332
lines changed

9 files changed

+354
-332
lines changed

.evergreen/config.yml

Lines changed: 179 additions & 273 deletions
Large diffs are not rendered by default.

.evergreen/setup-system.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ set -eu
66
# Set up default environment variables.
77
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
88
PROJECT_DIRECTORY=$(dirname $SCRIPT_DIR)
9+
pushd $PROJECT_DIRECTORY
910
ROOT_DIR=$(dirname $PROJECT_DIRECTORY)
1011
DRIVERS_TOOLS=${DRIVERS_TOOLS:-${ROOT_DIR}/drivers-evergreen-tools}
1112
MONGO_ORCHESTRATION_HOME="${DRIVERS_TOOLS}/.evergreen/orchestration"
@@ -90,3 +91,4 @@ RUN_TASK: "$PROJECT_DIRECTORY/.evergreen/run-task.sh"
9091
EOT
9192

9293
cat env.sh
94+
popd

Taskfile.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ tasks:
5555
status:
5656
- test -d install || test -d /cygdrive/c/libmongocrypt/bin
5757

58-
run-docker: bash etc/run_docker.sh {{.CLI_ARGS}}
58+
run-docker: bash etc/run_docker.sh
5959

6060
run-fuzz: bash etc/run-fuzz.sh
6161

@@ -91,11 +91,17 @@ tasks:
9191

9292
test-oidc: bash etc/run-oidc-test.sh 'task --silent evg-test-oidc-auth'
9393

94+
test-oidc-remote: bash etc/run-oidc-remote-test.sh
95+
9496
test-atlas-connect:
9597
- go test -v -run ^TestAtlas$ go.mongodb.org/mongo-driver/v2/internal/cmd/testatlas -args "$ATLAS_REPL" "$ATLAS_SHRD" "$ATLAS_FREE" "$ATLAS_TLS11" "$ATLAS_TLS12" "$ATLAS_SERVERLESS" "$ATLAS_SRV_REPL" "$ATLAS_SRV_SHRD" "$ATLAS_SRV_FREE" "$ATLAS_SRV_TLS11" "$ATLAS_SRV_TLS12" "$ATLAS_SRV_SERVERLESS" >> test.suite
9698

9799
test-awskms: bash etc/run-awskms-test.sh
98100

101+
test-azurekms: bash etc/run-azurekms-test.sh
102+
103+
test-gcpkms: bash etc/run-gcpkms-test.sh
104+
99105
### Local FaaS tasks. ###
100106
build-faas-awslambda:
101107
requires:
@@ -104,7 +110,9 @@ tasks:
104110
- make -c internal/cmd/faas/awslambda
105111

106112
### Evergreen specific tasks. ###
107-
setup-test: bash etc/setup-test.sh {{.CLI_ARGS}}
113+
setup-test: bash etc/setup-test.sh
114+
115+
setup-encryption: bash etc/setup-encryption.sh
108116

109117
evg-test:
110118
- go test -exec "env PKG_CONFIG_PATH=${PKG_CONFIG_PATH} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} DYLD_LIBRARY_PATH=$MACOS_LIBRARY_PATH}" ${BUILD_TAGS} -v -timeout {{.TEST_TIMEOUT}}s -p 1 ./... >> test.suite
@@ -177,12 +185,14 @@ tasks:
177185
- go test -exec "env PKG_CONFIG_PATH=${PKG_CONFIG_PATH} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} DYLD_LIBRARY_PATH=${MACOS_LIBRARY_PATH}" ${BUILD_TAGS} -v -timeout {{.TEST_TIMEOUT}}s ./internal/integration >> test.suite
178186
- go test -exec "env PKG_CONFIG_PATH=${PKG_CONFIG_PATH} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} DYLD_LIBRARY_PATH=${MACOS_LIBRARY_PATH}" ${BUILD_TAGS} -v -timeout {{.TEST_TIMEOUT}}s ./internal/integration/unified >> test.suite
179187

180-
evg-test-aws: bash etc/run-mongodb-aws-test.sh {{.CLI_ARGS}}
188+
evg-test-aws: bash etc/run-mongodb-aws-test.sh
181189

182190
evg-test-aws-ecs: bash etc/run-mongodb-aws-ecs-test.sh
183191

184192
evg-test-deployed-lambda-aws: bash ${DRIVERS_TOOLS}/.evergreen/aws_lambda/run-deployed-lambda-aws-tests.sh
185193

194+
evg-gather-test-suites: find . -name \*.suite | xargs tar czf test_suite.tgz
195+
186196
build-kms-test: go build ${BUILD_TAGS} ./internal/cmd/testkms
187197

188198
### Benchmark specific tasks and support. ###

etc/run-azurekms-test.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env bash
2+
# run-gcpkms-test
3+
# Runs gcpkms tests.
4+
set -eu
5+
6+
GO_BUILD_TAGS="cse" task setup-test
7+
task build-kms-test
8+
9+
if [ -n "${EXPECT_ERROR:-}" ]; then
10+
. ${DRIVERS_TOOLS}/.evergreen/csfle/azurekms/setup-secrets.sh
11+
LD_LIBRARY_PATH=./install/libmongocrypt/lib64 \
12+
MONGODB_URI='mongodb://localhost:27017' \
13+
EXPECT_ERROR='unable to retrieve azure credentials' \
14+
PROVIDER='azure' AZUREKMS_KEY_NAME=$AZUREKMS_KEYNAME AZUREKMS_KEY_VAULT_ENDPOINT=$AZUREKMS_KEYVAULTENDPOINT \
15+
./testkms
16+
exit 0
17+
fi
18+
19+
echo "Copying files ... begin"
20+
source ${DRIVERS_TOOLS}/.evergreen/csfle/azurekms/secrets-export.sh
21+
tar czf testazurekms.tgz ./testkms ./install/libmongocrypt/lib64/libmongocrypt.*
22+
AZUREKMS_SRC=testazurekms.tgz AZUREKMS_DST=/tmp ${DRIVERS_TOOLS}/.evergreen/csfle/azurekms/copy-file.sh
23+
echo "Copying files ... end"
24+
echo "Untarring file ... begin"
25+
AZUREKMS_CMD="tar xf /tmp/testazurekms.tgz" ${DRIVERS_TOOLS}/.evergreen/csfle/azurekms/run-command.sh
26+
echo "Untarring file ... end"
27+
28+
AZUREKMS_CMD="LD_LIBRARY_PATH=./install/libmongocrypt/lib64 MONGODB_URI='mongodb://localhost:27017' PROVIDER='azure' AZUREKMS_KEY_NAME=$AZUREKMS_KEYNAME AZUREKMS_KEY_VAULT_ENDPOINT=$AZUREKMS_KEYVAULTENDPOINT ./testkms" ${DRIVERS_TOOLS}/.evergreen/csfle/azurekms/run-command.sh

etc/run-gcpkms-test.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env bash
2+
# run-gcpkms-test
3+
# Runs gcpkms tests.
4+
set -eu
5+
6+
GO_BUILD_TAGS="cse" task setup-test
7+
task build-kms-test
8+
9+
if [ -n "${EXPECT_ERROR:-}" ]; then
10+
LD_LIBRARY_PATH=./install/libmongocrypt/lib64 \
11+
MONGODB_URI='mongodb://localhost:27017/' \
12+
EXPECT_ERROR='unable to retrieve GCP credentials' \
13+
PROVIDER='gcp' \
14+
./testkms
15+
exit 0
16+
fi
17+
18+
source ${DRIVERS_TOOLS}/.evergreen/csfle/gcpkms/secrets-export.sh
19+
echo "Copying files ... begin"
20+
tar czf testgcpkms.tgz ./testkms ./install/libmongocrypt/lib64/libmongocrypt.*
21+
GCPKMS_SRC=testgcpkms.tgz GCPKMS_DST=$GCPKMS_INSTANCENAME: ${DRIVERS_TOOLS}/.evergreen/csfle/gcpkms/copy-file.sh
22+
echo "Copying files ... end"
23+
24+
echo "Untarring file ... begin"
25+
GCPKMS_CMD="tar xf testgcpkms.tgz" ${DRIVERS_TOOLS}/.evergreen/csfle/gcpkms/run-command.sh
26+
echo "Untarring file ... end"
27+
28+
GCPKMS_CMD="LD_LIBRARY_PATH=./install/libmongocrypt/lib64 MONGODB_URI='mongodb://localhost:27017' PROVIDER='gcp' ./testkms" ${DRIVERS_TOOLS}/.evergreen/csfle/gcpkms/run-command.sh

etc/run-mongodb-aws-test.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22

3-
set -o errexit # Exit the script with error if any of the commands fail
3+
set -eu
44

55
############################################
66
# Main Program #
@@ -13,18 +13,18 @@ set -o errexit # Exit the script with error if any of the commands fail
1313

1414
echo "Running MONGODB-AWS authentication tests"
1515

16-
if [ "$1" == "ec2" ] && [ "${SKIP_EC2_AUTH_TEST:-}" == "true" ]; then
16+
if [ "$AWS_TEST" == "ec2" ] && [ "${SKIP_EC2_AUTH_TEST:-}" == "true" ]; then
1717
echo "This platform does not support the EC2 auth test, skipping..."
1818
exit 0
1919
fi
2020

21-
if [ "$1" == "web-identity" ] && [ "${SKIP_WEB_IDENTITY_AUTH_TEST:-}" == "true" ]; then
21+
if [ "$AWS_TEST" == "web-identity" ] && [ "${SKIP_WEB_IDENTITY_AUTH_TEST:-}" == "true" ]; then
2222
echo "This platform does not support the web identity auth test, skipping..."
2323
exit 0
2424
fi
2525

2626
# Handle credentials and environment setup.
27-
. $DRIVERS_TOOLS/.evergreen/auth_aws/aws_setup.sh $1
27+
. $DRIVERS_TOOLS/.evergreen/auth_aws/aws_setup.sh $AWS_TEST
2828

2929
# show test output
3030
set -x

etc/run-oidc-remote-test.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env bash
2+
# run-oidc-test
3+
# Runs oidc auth tests.
4+
set -eu
5+
6+
echo "Running remote MONGODB-OIDC authentication tests on $OIDC_ENV"
7+
8+
DRIVERS_TAR_FILE=/tmp/mongo-go-driver.tar.gz
9+
# we need to statically link libc to avoid the situation where the VM has a different
10+
# version of libc
11+
go build -tags osusergo,netgo -ldflags '-w -extldflags "-static -lgcc -lc"' -o test ./internal/cmd/testoidcauth/main.go
12+
rm "$DRIVERS_TAR_FILE" || true
13+
tar -cf $DRIVERS_TAR_FILE ./test
14+
tar -uf $DRIVERS_TAR_FILE ./etc
15+
rm "$DRIVERS_TAR_FILE".gz || true
16+
gzip $DRIVERS_TAR_FILE
17+
18+
if [ $OIDC_ENV == "azure" ]; then
19+
export AZUREOIDC_DRIVERS_TAR_FILE=$DRIVERS_TAR_FILE
20+
# Define the command to run on the azure VM.
21+
# Ensure that we source the environment file created for us, set up any other variables we need,
22+
# and then run our test suite on the vm.
23+
export AZUREOIDC_TEST_CMD="PROJECT_DIRECTORY='.' OIDC_ENV=azure OIDC=oidc ./etc/run-oidc-test.sh ./test"
24+
bash ${DRIVERS_TOOLS}/.evergreen/auth_oidc/azure/run-driver-test.sh
25+
26+
elif [ $OIDC_ENV == "gcp" ]; then
27+
export GCPOIDC_DRIVERS_TAR_FILE=$DRIVERS_TAR_FILE
28+
# Define the command to run on the gcp VM.
29+
# Ensure that we source the environment file created for us, set up any other variables we need,
30+
# and then run our test suite on the vm.
31+
export GCPOIDC_TEST_CMD="PROJECT_DIRECTORY='.' OIDC_ENV=gcp OIDC=oidc ./etc/run-oidc-test.sh ./test"
32+
bash ${DRIVERS_TOOLS}/.evergreen/auth_oidc/gcp/run-driver-test.sh
33+
34+
else
35+
echo "Unrecognized OIDC_ENV $OIDC_ENV"
36+
exit 1
37+
fi

etc/run_docker.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ PLATFORM=${DOCKER_PLATFORM:-}
1111
docker build $PLATFORM -t go-test .
1212

1313
# Handle environment variables and optional positional arg for the taskfile target.
14-
TASKFILE_TARGET=${1:-evg-test-versioned-api}
14+
TASKFILE_TARGET=${TASKFILE_TARGET:-$1}
15+
TASKFILE_TARGET=${TASKFILE_TARGET:-evg-test-versioned-api}
1516
GO_BUILD_TAGS=${GO_BUILD_TAGS:-""}
1617

1718
ARGS=" -e TASKFILE_TARGET=$TASKFILE_TARGET"

etc/setup-test.sh

Lines changed: 61 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -7,53 +7,63 @@ OS=${OS:-""}
77
SSL=${SSL:-nossl}
88
GO_BUILD_TAGS=${GO_BUILD_TAGS:-}
99
RACE=${RACE:-}
10+
SERVERLESS=${SERVERLESS:-}
11+
LOAD_BALANCER=${LOAD_BALANCER:-}
12+
MONGODB_URI=${MONGODB_URI:-}
1013

1114
# Handle special cases first.
12-
case ${1:-} in
13-
enterprise-plain)
14-
. $DRIVERS_TOOLS/.evergreen/secrets_handling/setup-secrets.sh drivers/enterprise_auth
15-
MONGODB_URI="mongodb://${SASL_USER}:${SASL_PASS}@${SASL_HOST}:${SASL_PORT}/ldap?authMechanism=PLAIN"
16-
rm secrets-export.sh
17-
AUTH="auth"
18-
;;
19-
enterprise-gssapi)
20-
. $DRIVERS_TOOLS/.evergreen/secrets_handling/setup-secrets.sh drivers/enterprise_auth
21-
if [ "Windows_NT" = "${OS:-}" ]; then
22-
MONGODB_URI="mongodb://${PRINCIPAL/@/%40}:${SASL_PASS}@${SASL_HOST}:${SASL_PORT}/kerberos?authMechanism=GSSAPI"
23-
else
24-
echo ${KEYTAB_BASE64} | base64 -d > ${PROJECT_DIRECTORY}/.evergreen/drivers.keytab
25-
mkdir -p ~/.krb5
26-
cat .evergreen/krb5.config | tee -a ~/.krb5/config
27-
kinit -k -t .evergreen/drivers.keytab -p "${PRINCIPAL}"
28-
MONGODB_URI="mongodb://${PRINCIPAL/@/%40}@${SASL_HOST}:${SASL_PORT}/kerberos?authMechanism=GSSAPI"
29-
fi
30-
rm secrets-export.sh
31-
AUTH="auth"
32-
;;
33-
serverless)
34-
. $DRIVERS_TOOLS/.evergreen/serverless/secrets-export.sh
35-
MONGODB_URI="${SERVERLESS_URI}"
36-
SERVERLESS="serverless"
37-
AUTH="auth"
38-
;;
39-
atlas-connect)
40-
. $DRIVERS_TOOLS/.evergreen/secrets_handling/setup-secrets.sh drivers/atlas_connect
41-
;;
42-
load-balancer)
43-
# Verify that the required LB URI expansions are set to ensure that the test runner can correctly connect to
44-
# the LBs.
45-
if [ -z "${SINGLE_MONGOS_LB_URI}" ]; then
46-
echo "SINGLE_MONGOS_LB_URI must be set for testing against LBs"
47-
exit 1
48-
fi
49-
if [ -z "${MULTI_MONGOS_LB_URI}" ]; then
50-
echo "MULTI_MONGOS_LB_URI must be set for testing against LBs"
51-
exit 1
52-
fi
53-
MONGODB_URI="${SINGLE_MONGOS_LB_URI}"
54-
LOAD_BALANCER="true"
55-
;;
56-
esac
15+
if [ -n "${TEST_ENTERPRISE_AUTH:-}" ]; then
16+
. $DRIVERS_TOOLS/.evergreen/secrets_handling/setup-secrets.sh drivers/enterprise_auth
17+
AUTH="auth"
18+
case $TEST_ENTERPRISE_AUTH in
19+
plain)
20+
MONGODB_URI="mongodb://${SASL_USER}:${SASL_PASS}@${SASL_HOST}:${SASL_PORT}/ldap?authMechanism=PLAIN"
21+
;;
22+
gssapi)
23+
if [ "Windows_NT" = "${OS:-}" ]; then
24+
MONGODB_URI="mongodb://${PRINCIPAL/@/%40}:${SASL_PASS}@${SASL_HOST}:${SASL_PORT}/kerberos?authMechanism=GSSAPI"
25+
else
26+
echo ${KEYTAB_BASE64} | base64 -d > ${PROJECT_DIRECTORY}/.evergreen/drivers.keytab
27+
mkdir -p ~/.krb5
28+
cat .evergreen/krb5.config | tee -a ~/.krb5/config
29+
kinit -k -t .evergreen/drivers.keytab -p "${PRINCIPAL}"
30+
MONGODB_URI="mongodb://${PRINCIPAL/@/%40}@${SASL_HOST}:${SASL_PORT}/kerberos?authMechanism=GSSAPI"
31+
fi
32+
;;
33+
esac
34+
rm secrets-export.sh
35+
fi
36+
37+
if [ -n "${SERVERLESS}" ]; then
38+
. $DRIVERS_TOOLS/.evergreen/serverless/secrets-export.sh
39+
MONGODB_URI="${SERVERLESS_URI}"
40+
AUTH="auth"
41+
fi
42+
43+
if [ -n "${TEST_ATLAS_CONNECT:-}" ]; then
44+
. $DRIVERS_TOOLS/.evergreen/secrets_handling/setup-secrets.sh drivers/atlas_connect
45+
fi
46+
47+
if [ -n "${LOAD_BALANCER}" ]; then
48+
# Verify that the required LB URI expansions are set to ensure that the test runner can correctly connect to
49+
# the LBs.
50+
if [ -z "${SINGLE_MONGOS_LB_URI}" ]; then
51+
echo "SINGLE_MONGOS_LB_URI must be set for testing against LBs"
52+
exit 1
53+
fi
54+
if [ -z "${MULTI_MONGOS_LB_URI}" ]; then
55+
echo "MULTI_MONGOS_LB_URI must be set for testing against LBs"
56+
exit 1
57+
fi
58+
MONGODB_URI="${SINGLE_MONGOS_LB_URI}"
59+
fi
60+
61+
if [ -n "${OCSP_ALGORITHM:-}" ]; then
62+
MONGO_GO_DRIVER_CA_FILE="${DRIVERS_TOOLS}/.evergreen/ocsp/${OCSP_ALGORITHM}/ca.pem"
63+
if [ "Windows_NT" = "$OS" ]; then
64+
MONGO_GO_DRIVER_CA_FILE=$(cygpath -m $MONGO_GO_DRIVER_CA_FILE)
65+
fi
66+
fi
5767

5868
# Handle encryption.
5969
if [[ "${GO_BUILD_TAGS}" =~ cse ]]; then
@@ -87,7 +97,7 @@ else
8797
fi
8898

8999
# Handle certificates.
90-
if [ "$SSL" != "nossl" ] && [ -z "${SERVERLESS+x}" ]; then
100+
if [ "$SSL" != "nossl" ] && [ -z "${SERVERLESS}" ] && [ -z "${OCSP_ALGORITHM:-}" ]; then
91101
MONGO_GO_DRIVER_CA_FILE="$DRIVERS_TOOLS/.evergreen/x509gen/ca.pem"
92102
MONGO_GO_DRIVER_KEY_FILE="$DRIVERS_TOOLS/.evergreen/x509gen/client.pem"
93103
MONGO_GO_DRIVER_PKCS8_ENCRYPTED_KEY_FILE="$DRIVERS_TOOLS/.evergreen/x509gen/client-pkcs8-encrypted.pem"
@@ -109,9 +119,9 @@ MONGO_GO_DRIVER_KEY_FILE="${MONGO_GO_DRIVER_KEY_FILE:-}"
109119
MONGO_GO_DRIVER_PKCS8_ENCRYPTED_KEY_FILE="${MONGO_GO_DRIVER_PKCS8_ENCRYPTED_KEY_FILE:-}"
110120
MONGO_GO_DRIVER_PKCS8_UNENCRYPTED_KEY_FILE="${MONGO_GO_DRIVER_PKCS8_UNENCRYPTED_KEY_FILE:-}"
111121
TOPOLOGY="${TOPOLOGY:-}"
112-
SERVERLESS="${SERVERLESS:-}"
122+
SERVERLESS="${SERVERLESS}"
113123
REQUIRE_API_VERSION="${REQUIRE_API_VERSION:-}"
114-
LOAD_BALANCER="${LOAD_BALANCER:-}"
124+
LOAD_BALANCER="${LOAD_BALANCER}"
115125
MONGO_GO_DRIVER_COMPRESSOR="${MONGO_GO_DRIVER_COMPRESSOR:-}"
116126
BUILD_TAGS="${BUILD_TAGS}"
117127
CRYPT_SHARED_LIB_PATH="${CRYPT_SHARED_LIB_PATH:-}"
@@ -121,16 +131,16 @@ MACOS_LIBRARY_PATH="${DYLD_FALLBACK_LIBRARY_PATH:-}"
121131
SKIP_CSOT_TESTS=${SKIP_CSOT_TESTS:-}
122132
EOT
123133

124-
if [ -n "${MONGODB_URI:-}" ]; then
134+
if [ -n "${MONGODB_URI}" ]; then
125135
echo "MONGODB_URI=\"${MONGODB_URI}\"" >> .test.env
126136
fi
127137

128-
if [ -n "${SERVERLESS:-}" ]; then
138+
if [ -n "${SERVERLESS}" ]; then
129139
echo "SERVERLESS_ATLAS_USER=$SERVERLESS_ATLAS_USER" >> .test.env
130140
echo "SERVERLESS_ATLAS_PASSWORD=$SERVERLESS_ATLAS_PASSWORD" >> .test.env
131141
fi
132142

133-
if [ -n "${LOAD_BALANCER:-}" ];then
143+
if [ -n "${LOAD_BALANCER}" ];then
134144
echo "SINGLE_MONGOS_LB_URI=${SINGLE_MONGOS_LB_URI}" >> .test.env
135145
echo "MULTI_MONGOS_LB_URI=${MULTI_MONGOS_LB_URI}" >> .test.env
136146
fi

0 commit comments

Comments
 (0)