diff --git a/.evergreen/combine-coverage.sh b/.evergreen/combine-coverage.sh index c31f755bd9..36266c1842 100755 --- a/.evergreen/combine-coverage.sh +++ b/.evergreen/combine-coverage.sh @@ -3,8 +3,7 @@ # Coverage combine merges (and removes) all the coverage files and # generates a new .coverage file in the current directory. -set -o xtrace # Write all commands first to stderr -set -o errexit # Exit the script with error if any of the commands fail +set -eu . .evergreen/utils.sh diff --git a/.evergreen/resync-specs.sh b/.evergreen/resync-specs.sh index dca116c2d3..1f70940aa0 100755 --- a/.evergreen/resync-specs.sh +++ b/.evergreen/resync-specs.sh @@ -1,6 +1,6 @@ #!/bin/bash -# exit when any command fails -set -e +# Resync test files from the specifications repo. +set -eu PYMONGO=$(dirname "$(cd "$(dirname "$0")"; pwd)") SPECS=${MDB_SPECS:-~/Work/specifications} diff --git a/.evergreen/run-import-time-test.sh b/.evergreen/run-import-time-test.sh deleted file mode 100755 index 95e3c93d25..0000000000 --- a/.evergreen/run-import-time-test.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -ex - -set -o errexit # Exit the script with error if any of the commands fail -set -x - -. .evergreen/utils.sh - -if [ -z "${PYTHON_BINARY:-}" ]; then - PYTHON_BINARY=$(find_python3) -fi - -# Use the previous commit if this was not a PR run. -if [ "$BASE_SHA" == "$HEAD_SHA" ]; then - BASE_SHA=$(git rev-parse HEAD~1) -fi - -function get_import_time() { - local log_file - createvirtualenv "$PYTHON_BINARY" import-venv - python -m pip install -q ".[aws,encryption,gssapi,ocsp,snappy,zstd]" - # Import once to cache modules - python -c "import pymongo" - log_file="pymongo-$1.log" - python -X importtime -c "import pymongo" 2> $log_file -} - -get_import_time $HEAD_SHA -git stash || true -git checkout $BASE_SHA -get_import_time $BASE_SHA -git checkout $HEAD_SHA -git stash apply || true -python tools/compare_import_time.py $HEAD_SHA $BASE_SHA diff --git a/.evergreen/run-mongodb-aws-ecs-test.sh b/.evergreen/run-mongodb-aws-ecs-test.sh index 09fa571959..c55c423e49 100755 --- a/.evergreen/run-mongodb-aws-ecs-test.sh +++ b/.evergreen/run-mongodb-aws-ecs-test.sh @@ -1,7 +1,6 @@ #!/bin/bash - -# Don't trace since the URI contains a password that shouldn't show up in the logs -set -o errexit # Exit the script with error if any of the commands fail +# Script run on an ECS host to test MONGODB-AWS. +set -eu ############################################ # Main Program # diff --git a/.evergreen/run-mongodb-oidc-test.sh b/.evergreen/run-mongodb-oidc-test.sh index bd67106a36..a60b112bcb 100755 --- a/.evergreen/run-mongodb-oidc-test.sh +++ b/.evergreen/run-mongodb-oidc-test.sh @@ -1,6 +1,5 @@ #!/bin/bash - -set +x # Disable debug trace +# Script run on a remote host to test MONGODB-OIDC. set -eu echo "Running MONGODB-OIDC authentication tests on ${OIDC_ENV}..." diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 04dd16d34f..2b7d856d41 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -1,4 +1,5 @@ #!/bin/bash +# Run a test suite that was configured with setup-tests.sh. set -eu SCRIPT_DIR=$(dirname ${BASH_SOURCE:-$0}) diff --git a/.evergreen/scripts/check-import-time.sh b/.evergreen/scripts/check-import-time.sh index cdd2025d59..f7a1117b97 100755 --- a/.evergreen/scripts/check-import-time.sh +++ b/.evergreen/scripts/check-import-time.sh @@ -1,7 +1,43 @@ #!/bin/bash +# Check for regressions in the import time of pymongo. +set -eu -. .evergreen/scripts/env.sh -set -x -export BASE_SHA="$1" -export HEAD_SHA="$2" -bash .evergreen/run-import-time-test.sh +HERE=$(dirname ${BASH_SOURCE:-$0}) + +source $HERE/env.sh + +pushd $HERE/../.. >/dev/null + +BASE_SHA="$1" +HEAD_SHA="$2" + +. .evergreen/utils.sh + +if [ -z "${PYTHON_BINARY:-}" ]; then + PYTHON_BINARY=$(find_python3) +fi + +# Use the previous commit if this was not a PR run. +if [ "$BASE_SHA" == "$HEAD_SHA" ]; then + BASE_SHA=$(git rev-parse HEAD~1) +fi + +function get_import_time() { + local log_file + createvirtualenv "$PYTHON_BINARY" import-venv + python -m pip install -q ".[aws,encryption,gssapi,ocsp,snappy,zstd]" + # Import once to cache modules + python -c "import pymongo" + log_file="pymongo-$1.log" + python -X importtime -c "import pymongo" 2> $log_file +} + +get_import_time $HEAD_SHA +git stash || true +git checkout $BASE_SHA +get_import_time $BASE_SHA +git checkout $HEAD_SHA +git stash apply || true +python tools/compare_import_time.py $HEAD_SHA $BASE_SHA + +popd >/dev/null diff --git a/.evergreen/scripts/cleanup.sh b/.evergreen/scripts/cleanup.sh index 6bb4b3ce5f..f04a936fd2 100755 --- a/.evergreen/scripts/cleanup.sh +++ b/.evergreen/scripts/cleanup.sh @@ -1,4 +1,6 @@ #!/bin/bash +# Clean up resources at the end of an evergreen run. +set -eu HERE=$(dirname ${BASH_SOURCE:-$0}) @@ -9,4 +11,4 @@ if [ -f $HERE/env.sh ]; then fi rm -rf "${DRIVERS_TOOLS}" || true -rm -f ./secrets-export.sh || true +rm -f $HERE/../../secrets-export.sh || true diff --git a/.evergreen/scripts/configure-env.sh b/.evergreen/scripts/configure-env.sh index 9ec98bb5be..81713f4191 100755 --- a/.evergreen/scripts/configure-env.sh +++ b/.evergreen/scripts/configure-env.sh @@ -1,5 +1,5 @@ #!/bin/bash - +# Configure an evergreen test environment. set -eu # Get the current unique version of this checkout diff --git a/.evergreen/scripts/download-and-merge-coverage.sh b/.evergreen/scripts/download-and-merge-coverage.sh index 808bb957ef..c006813ba9 100755 --- a/.evergreen/scripts/download-and-merge-coverage.sh +++ b/.evergreen/scripts/download-and-merge-coverage.sh @@ -1,4 +1,4 @@ #!/bin/bash - # Download all the task coverage files. +set -eu aws s3 cp --recursive s3://"$1"/coverage/"$2"/"$3"/coverage/ coverage/ diff --git a/.evergreen/scripts/install-dependencies.sh b/.evergreen/scripts/install-dependencies.sh index 5ec06a87df..1347374bf5 100755 --- a/.evergreen/scripts/install-dependencies.sh +++ b/.evergreen/scripts/install-dependencies.sh @@ -1,5 +1,5 @@ #!/bin/bash - +# Install the dependencies needed for an evergreen run. set -eu HERE=$(dirname ${BASH_SOURCE:-$0}) diff --git a/.evergreen/scripts/run-doctests.sh b/.evergreen/scripts/run-doctests.sh deleted file mode 100755 index 5950e2c107..0000000000 --- a/.evergreen/scripts/run-doctests.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -set -o xtrace -PYTHON_BINARY=${PYTHON_BINARY} bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh docs-test diff --git a/.evergreen/scripts/run-getdata.sh b/.evergreen/scripts/run-getdata.sh index b2d6ecb476..9435a5fcc3 100755 --- a/.evergreen/scripts/run-getdata.sh +++ b/.evergreen/scripts/run-getdata.sh @@ -1,11 +1,14 @@ #!/bin/bash +# Get the debug data for an evergreen task. +set -eu -set -o xtrace -. ${DRIVERS_TOOLS}/.evergreen/download-mongodb.sh || true +. ${DRIVERS_TOOLS}/.evergreen/get-distro.sh || true get_distro || true echo $DISTRO echo $MARCH echo $OS + +set -x uname -a || true ls /etc/*release* || true cc --version || true @@ -20,3 +23,4 @@ ls -la /usr/local/Cellar/ || true scan-build --version || true genhtml --version || true valgrind --version || true +set +x diff --git a/.evergreen/scripts/setup-dev-env.sh b/.evergreen/scripts/setup-dev-env.sh index d1c4be3494..dd977bc348 100755 --- a/.evergreen/scripts/setup-dev-env.sh +++ b/.evergreen/scripts/setup-dev-env.sh @@ -1,5 +1,5 @@ #!/bin/bash - +# Set up a development environment on an evergreen host. set -eu HERE=$(dirname ${BASH_SOURCE:-$0}) diff --git a/.evergreen/scripts/setup-system.sh b/.evergreen/scripts/setup-system.sh index 0ab08ff01c..d8552e0ad2 100755 --- a/.evergreen/scripts/setup-system.sh +++ b/.evergreen/scripts/setup-system.sh @@ -1,5 +1,5 @@ #!/bin/bash - +# Set up the system on an evergreen host. set -eu HERE=$(dirname ${BASH_SOURCE:-$0}) diff --git a/.evergreen/scripts/setup-tests.sh b/.evergreen/scripts/setup-tests.sh index 8e073dcec9..0b75051a68 100755 --- a/.evergreen/scripts/setup-tests.sh +++ b/.evergreen/scripts/setup-tests.sh @@ -1,4 +1,5 @@ #!/bin/bash +# Set up the test environment, including secrets and services. set -eu # Supported/used environment variables: diff --git a/.evergreen/scripts/stop-server.sh b/.evergreen/scripts/stop-server.sh index 7db20d4bf3..7599387f5f 100755 --- a/.evergreen/scripts/stop-server.sh +++ b/.evergreen/scripts/stop-server.sh @@ -1,5 +1,5 @@ #!/bin/bash - +# Stop a server that was started using run-orchestration.sh in DRIVERS_TOOLS. set -eu HERE=$(dirname ${BASH_SOURCE:-$0}) diff --git a/.evergreen/scripts/teardown-tests.sh b/.evergreen/scripts/teardown-tests.sh index f9e76a20cf..898425b6cf 100755 --- a/.evergreen/scripts/teardown-tests.sh +++ b/.evergreen/scripts/teardown-tests.sh @@ -1,4 +1,5 @@ #!/bin/bash +# Tear down any services that were used by tests. set -eu SCRIPT_DIR=$(dirname ${BASH_SOURCE:-$0}) diff --git a/.evergreen/scripts/upload-coverage-report.sh b/.evergreen/scripts/upload-coverage-report.sh index 71a2a80bb8..895664cbf2 100755 --- a/.evergreen/scripts/upload-coverage-report.sh +++ b/.evergreen/scripts/upload-coverage-report.sh @@ -1,3 +1,4 @@ #!/bin/bash - +# Upload a coverate report to s3. +set -eu aws s3 cp htmlcov/ s3://"$1"/coverage/"$2"/"$3"/htmlcov/ --recursive --acl public-read --region us-east-1 diff --git a/.evergreen/setup-spawn-host.sh b/.evergreen/setup-spawn-host.sh index 4c8fa65e2e..bada61e568 100755 --- a/.evergreen/setup-spawn-host.sh +++ b/.evergreen/setup-spawn-host.sh @@ -1,5 +1,5 @@ #!/bin/bash - +# Set up a remote evergreen spawn host. set -eu if [ -z "$1" ] diff --git a/.evergreen/sync-spawn-host.sh b/.evergreen/sync-spawn-host.sh index 3f6540ad4d..61dd84ec22 100755 --- a/.evergreen/sync-spawn-host.sh +++ b/.evergreen/sync-spawn-host.sh @@ -1,4 +1,6 @@ #!/bin/bash +# Synchronize local files to a remote Evergreen spawn host. +set -eu if [ -z "$1" ] then diff --git a/.evergreen/utils.sh b/.evergreen/utils.sh index bb3ed8dabd..b34eb2787d 100755 --- a/.evergreen/utils.sh +++ b/.evergreen/utils.sh @@ -1,5 +1,5 @@ #!/bin/bash - +# Utility functions used by pymongo evergreen scripts. set -eu find_python3() { diff --git a/tools/synchro.sh b/tools/synchro.sh index 51c51a9548..28b9c6d6c4 100755 --- a/tools/synchro.sh +++ b/tools/synchro.sh @@ -1,5 +1,5 @@ #!/bin/bash - +# Keep the synchronous folders in sync with there async counterparts. set -eu python ./tools/synchro.py "$@"