Skip to content

Commit a5a13f8

Browse files
authored
Merge branch 'master' into GODRIVER-3241
2 parents 5799b7c + 78b0f61 commit a5a13f8

Some content is hidden

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

62 files changed

+2560
-2851
lines changed

.evergreen/config.yml

Lines changed: 284 additions & 571 deletions
Large diffs are not rendered by default.

.evergreen/run-deployed-lambda-aws-tests.sh

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

.evergreen/run-task.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Source the env.sh file and run the given task
4+
set -eu
5+
6+
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
7+
PROJECT_DIRECTORY=$(dirname $SCRIPT_DIR)
8+
pushd ${PROJECT_DIRECTORY} > /dev/null
9+
10+
source env.sh
11+
task "$@"
12+
13+
popd > /dev/null

.evergreen/run-tests.sh

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

.evergreen/setup-system.sh

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Set up environment and write env.sh and expansion.yml files.
4+
set -eu
5+
6+
# Set up default environment variables.
7+
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
8+
PROJECT_DIRECTORY=$(dirname $SCRIPT_DIR)
9+
ROOT_DIR=$(dirname $PROJECT_DIRECTORY)
10+
DRIVERS_TOOLS=${DRIVERS_TOOLS:-${ROOT_DIR}/drivers-evergreen-tools}
11+
MONGO_ORCHESTRATION_HOME="${DRIVERS_TOOLS}/.evergreen/orchestration"
12+
MONGODB_BINARIES="${DRIVERS_TOOLS}/mongodb/bin"
13+
OS="${OS:-""}"
14+
15+
# Set Golang environment vars. GOROOT is wherever current Go distribution is, and is set in evergreen config.
16+
# GOPATH is always 3 directories up from pwd on EVG; GOCACHE is under .cache in the pwd.
17+
GOROOT=${GOROOT:-$(dirname "$(dirname "$(which go)")")}
18+
export GOPATH=${GOPATH:-$ROOT_DIR}
19+
export GOCACHE="${GO_CACHE:-$PROJECT_DIRECTORY/.cache}"
20+
21+
# Handle paths on Windows.
22+
if [ "Windows_NT" = "${OS:-}" ]; then # Magic variable in cygwin
23+
GOPATH=$(cygpath -m $GOPATH)
24+
GOCACHE=$(cygpath -w $GOCACHE)
25+
DRIVERS_TOOLS=$(cygpath -m $DRIVERS_TOOLS)
26+
PROJECT_DIRECTORY=$(cygpath -m $PROJECT_DIRECTORY)
27+
EXTRA_PATH=/cygdrive/c/libmongocrypt/bin
28+
MONGO_ORCHESTRATION_HOME=$(cygpath -m $MONGO_ORCHESTRATION_HOME)
29+
MONGODB_BINARIES=$(cygpath -m $MONGODB_BINARIES)
30+
# Set home variables for Windows, too.
31+
USERPROFILE=$(cygpath -w "$ROOT_DIR")
32+
HOME=$USERPROFILE
33+
else
34+
EXTRA_PATH=${GCC:-}
35+
fi
36+
37+
# Add binaries to the path.
38+
PATH="${GOROOT}/bin:${GOPATH}/bin:${MONGODB_BINARIES}:${EXTRA_PATH}:${PATH}"
39+
40+
# Get the current unique version of this checkout.
41+
if [ "${IS_PATCH:-}" = "true" ]; then
42+
CURRENT_VERSION=$(git describe)-patch-${VERSION_ID}
43+
else
44+
CURRENT_VERSION=latest
45+
fi
46+
47+
# Ensure a checkout of drivers-tools.
48+
if [ ! -d "$DRIVERS_TOOLS" ]; then
49+
git clone https://github.com/mongodb-labs/drivers-evergreen-tools $DRIVERS_TOOLS
50+
fi
51+
52+
# Write the .env file for drivers-tools.
53+
cat <<EOT > ${DRIVERS_TOOLS}/.env
54+
SKIP_LEGACY_SHELL=1
55+
DRIVERS_TOOLS="$DRIVERS_TOOLS"
56+
MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME"
57+
MONGODB_BINARIES="$MONGODB_BINARIES"
58+
TMPDIR="$MONGO_ORCHESTRATION_HOME/db"
59+
EOT
60+
61+
# Check Go installation.
62+
go version
63+
go env
64+
65+
# Install taskfile.
66+
go install github.com/go-task/task/v3/cmd/[email protected]
67+
68+
# Write our own env file.
69+
cat <<EOT > env.sh
70+
export GOROOT="$GOROOT"
71+
export GOPATH="$GOPATH"
72+
export GOCACHE="$GOCACHE"
73+
export DRIVERS_TOOLS="$DRIVERS_TOOLS"
74+
export PROJECT_DIRECTORY="$PROJECT_DIRECTORY"
75+
export MONGODB_BINARIES="$MONGODB_BINARIES"
76+
export PATH="$PATH"
77+
EOT
78+
79+
if [ "Windows_NT" = "$OS" ]; then
80+
echo "export USERPROFILE=$USERPROFILE" >> env.sh
81+
echo "export HOME=$HOME" >> env.sh
82+
fi
83+
84+
# source the env.sh file and write the expansion file.
85+
cat <<EOT > expansion.yml
86+
CURRENT_VERSION: "$CURRENT_VERSION"
87+
DRIVERS_TOOLS: "$DRIVERS_TOOLS"
88+
PROJECT_DIRECTORY: "$PROJECT_DIRECTORY"
89+
RUN_TASK: "$PROJECT_DIRECTORY/.evergreen/run-task.sh"
90+
EOT
91+
92+
cat env.sh

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ debug
99
*.sublime-workspace
1010
driver-test-data.tar.gz
1111
perf
12+
perf.json
13+
perf.suite
1214
**mongocryptd.pid
1315
*.test
1416
.DS_Store
@@ -20,6 +22,9 @@ libmongocrypt
2022
venv
2123
test.suite
2224
go.work.sum
25+
.task
26+
env.sh
27+
expansion.yml
2328

2429
# AWS SAM-generated files
2530
internal/cmd/faas/awslambda/.aws-sam
@@ -36,3 +41,4 @@ api-report.txt
3641
# Ignore secrets files
3742
secrets-expansion.yml
3843
secrets-export.sh
44+
.test.env

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ repos:
3434
hooks:
3535
- id: shellcheck
3636
name: shellcheck
37-
args: ["--severity=error"]
37+
args: ["--severity=warning"]
3838

3939
- repo: https://github.com/codespell-project/codespell
4040
rev: "v2.2.6"

Taskfile.yml

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ env:
55
TEST_TIMEOUT: 1800
66
LONG_TEST_TIMEOUT: 3600
77

8+
dotenv: ['.test.env']
9+
810
tasks:
911

1012
### Utility tasks. ###
@@ -16,7 +18,7 @@ tasks:
1618
check-license: bash etc/check_license.sh
1719

1820
build:
19-
deps: [cross-compile, build-tests, build-compile-check]
21+
deps: [cross-compile, build-tests, build-compile-check, install-libmongocrypt]
2022
cmds:
2123
- go build ./...
2224
- go build ${BUILD_TAGS} ./...
@@ -25,6 +27,8 @@ tasks:
2527

2628
build-compile-check: bash etc/compile_check.sh
2729

30+
build-aws-ecs-test: go build ${BUILD_TAGS} ./internal/cmd/testaws/main.go
31+
2832
cross-compile:
2933
- GOOS=linux GOARCH=386 go build ./...
3034
- GOOS=linux GOARCH=arm go build ./...
@@ -46,12 +50,19 @@ tasks:
4650

4751
api-report: bash etc/api_report.sh
4852

49-
install-libmongocrypt: bash etc/install-libmongocrypt.sh
53+
install-libmongocrypt:
54+
cmds: [bash etc/install-libmongocrypt.sh]
55+
status:
56+
- test -d install || test -d /cygdrive/c/libmongocrypt/bin
57+
58+
run-docker: bash etc/run_docker.sh {{.CLI_ARGS}}
5059

51-
run-docker: bash etc/run_docker.sh
60+
run-fuzz: bash etc/run-fuzz.sh
5261

5362
cherry-picker: bash etc/cherry-picker.sh
5463

64+
pr-task: bash etc/pr-task.sh
65+
5566
# Lint with various GOOS and GOARCH tasks to catch static analysis failures that may only affect
5667
# specific operating systems or architectures. For example, staticcheck will only check for 64-bit
5768
# alignment of atomically accessed variables on 32-bit architectures (see
@@ -80,7 +91,8 @@ tasks:
8091

8192
test-oidc: bash etc/run-oidc-test.sh 'task --silent evg-test-oidc-auth'
8293

83-
test-atlas: bash etc/run-atlas-test.sh
94+
test-atlas-connect:
95+
- 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
8496

8597
test-awskms: bash etc/run-awskms-test.sh
8698

@@ -92,7 +104,7 @@ tasks:
92104
- make -c internal/cmd/faas/awslambda
93105

94106
### Evergreen specific tasks. ###
95-
build-aws-ecs-test: go build ${BUILD_TAGS} ./internal/cmd/testaws/main.go
107+
setup-test: bash etc/setup-test.sh {{.CLI_ARGS}}
96108

97109
evg-test:
98110
- 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
@@ -101,7 +113,8 @@ tasks:
101113
- ATLAS_DATA_LAKE_INTEGRATION_TEST=true go test -v ./internal/integration -run TestUnifiedSpecs/atlas-data-lake-testing >> spec_test.suite
102114
- ATLAS_DATA_LAKE_INTEGRATION_TEST=true go test -v ./internal/integration -run TestAtlasDataLake >> spec_test.suite
103115

104-
evg-test-enterprise-auth: go run -tags gssapi ./internal/cmd/testentauth/main.go
116+
evg-test-enterprise-auth:
117+
- go run -tags gssapi ./internal/cmd/testentauth/main.go
105118

106119
evg-test-oidc-auth:
107120
- go run ./internal/cmd/testoidcauth/main.go
@@ -164,6 +177,12 @@ tasks:
164177
- 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
165178
- 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
166179

180+
evg-test-aws: bash etc/run-mongodb-aws-test.sh {{.CLI_ARGS}}
181+
182+
evg-test-aws-ecs: bash etc/run-mongodb-aws-ecs-test.sh
183+
184+
evg-test-deployed-lambda-aws: bash ${DRIVERS_TOOLS}/.evergreen/aws_lambda/run-deployed-lambda-aws-tests.sh
185+
167186
build-kms-test: go build ${BUILD_TAGS} ./internal/cmd/testkms
168187

169188
### Benchmark specific tasks and support. ###
@@ -173,16 +192,10 @@ tasks:
173192
- go test ${BUILD_TAGS} -benchmem -bench=. ./benchmark | test benchmark.suite
174193

175194
driver-benchmark:
176-
deps: [perf-files]
177195
cmds:
178-
- go run ./internal/cmd/benchmark | tee perf.suite
196+
- go test ./internal/cmd/benchmark -v --fullRun | tee perf.suite
179197

180198
### Internal tasks. ###
181-
perf-files:
182-
internal: true
183-
cmds:
184-
- bash etc/prep-perf.sh
185-
186199
install-lll:
187200
internal: true
188201
cmds:

docs/CONTRIBUTING.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,9 @@ However, some of the tests require secrets handling. Please see the team [Wiki]
183183
The test suite can be run with or without the secrets as follows:
184184

185185
```bash
186-
TASKFILE_TARGET=evg-test-versioned-api bash .evergreen/run-tests.sh
186+
task setup-env
187+
task setup-test
188+
task evg-test-versioned-api
187189
```
188190

189191
### Load Balancer

0 commit comments

Comments
 (0)