summaryrefslogtreecommitdiff
path: root/evergreen
diff options
context:
space:
mode:
Diffstat (limited to 'evergreen')
-rwxr-xr-xevergreen/burn_in_tests.sh20
-rw-r--r--evergreen/burn_in_tests_generate.sh12
-rwxr-xr-xevergreen/cleanup_environment.sh11
-rw-r--r--evergreen/commit_message_validate.sh23
-rwxr-xr-xevergreen/compiled_binaries_get.sh8
-rwxr-xr-xevergreen/do_jepsen_setup/build_libfaketime.sh3
-rwxr-xr-xevergreen/do_jepsen_setup/install_jepsen.sh6
-rwxr-xr-xevergreen/feature_flag_tags_check.sh8
-rwxr-xr-xevergreen/functions/credentials_setup.sh2
-rw-r--r--evergreen/functions/venv_setup.sh23
-rwxr-xr-xevergreen/functions/version_expansions_generate.sh6
-rw-r--r--evergreen/garasign_jsign_sign.sh2
-rw-r--r--evergreen/gen_patch_test_tags.sh2
-rw-r--r--evergreen/jepsen_docker/list-append.sh17
-rw-r--r--evergreen/jepsen_docker/setup.sh15
-rw-r--r--evergreen/jstestfuzz_setup.sh10
-rw-r--r--evergreen/multiversion_setup.sh33
-rw-r--r--evergreen/prelude_db_contrib_tool.sh33
-rw-r--r--evergreen/prelude_mongo_task_generator.sh2
-rw-r--r--evergreen/prelude_venv.sh3
-rw-r--r--evergreen/resmoke_tests_execute.sh11
-rwxr-xr-xevergreen/run_jstestfuzz/clone_repos.sh14
-rw-r--r--evergreen/sasl_windows_cyrussasl_setup.sh18
-rw-r--r--evergreen/sasl_windows_cyrussasl_teardown.sh18
24 files changed, 216 insertions, 84 deletions
diff --git a/evergreen/burn_in_tests.sh b/evergreen/burn_in_tests.sh
deleted file mode 100755
index 5f6124a5f47..00000000000
--- a/evergreen/burn_in_tests.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"
-. "$DIR/prelude.sh"
-
-cd src
-
-set -o errexit
-set -o verbose
-
-activate_venv
-
-# Capture a list of new and modified tests. The expansion macro burn_in_tests_build_variant
-# is used to for finding the associated tasks from a different build variant than the
-# burn_in_tests_gen task executes on.
-build_variant_opts="--build-variant=${build_variant}"
-if [ -n "${burn_in_tests_build_variant}" ]; then
- build_variant_opts="--build-variant=${burn_in_tests_build_variant} --run-build-variant=${build_variant}"
-fi
-burn_in_args="$burn_in_args --repeat-tests-min=2 --repeat-tests-max=1000 --repeat-tests-secs=600"
-# Evergreen executable is in $HOME.
-PATH="$PATH:$HOME" eval $python buildscripts/evergreen_burn_in_tests.py --project=${project} $build_variant_opts --distro=${distro_id} --generate-tasks-file=burn_in_tests_gen.json --task_id ${task_id} $burn_in_args --verbose --install-dir "${install_dir}"
diff --git a/evergreen/burn_in_tests_generate.sh b/evergreen/burn_in_tests_generate.sh
deleted file mode 100644
index 6e2499d5e39..00000000000
--- a/evergreen/burn_in_tests_generate.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"
-. "$DIR/prelude.sh"
-
-cd src
-
-set -o errexit
-set -o verbose
-
-activate_venv
-
-# Evergreen executable is in $HOME.
-PATH=$PATH:$HOME $python buildscripts/burn_in_tags.py --expansion-file ../expansions.yml --install-dir "${install_dir}"
diff --git a/evergreen/cleanup_environment.sh b/evergreen/cleanup_environment.sh
index ec442defb40..4efc9f8d346 100755
--- a/evergreen/cleanup_environment.sh
+++ b/evergreen/cleanup_environment.sh
@@ -1,4 +1,13 @@
set -o verbose
-rm -rf /data/db/* mongo-diskstats* mongo-*.tgz ~/.aws ~/.boto venv
+rm -rf \
+ /data/db/* \
+ mongo-diskstats* \
+ mongo-*.tgz \
+ ~/.aws \
+ ~/.boto \
+ venv \
+ /data/install \
+ /data/multiversion
+
exit 0
diff --git a/evergreen/commit_message_validate.sh b/evergreen/commit_message_validate.sh
index 45602695a95..6a66a2113cc 100644
--- a/evergreen/commit_message_validate.sh
+++ b/evergreen/commit_message_validate.sh
@@ -1,14 +1,25 @@
+# Note: This script is called "commit_message_validate", but it does not actually
+# evaluate the commit message. Rather, it leverages the fact that a GitHub merge queue
+# triggered branch will have a single commit message that is the name of the PR.
+# This script ensures the PR name matches a well-known regex (see below for details).
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"
. "$DIR/prelude.sh"
-
cd src
-
set -o verbose
set -o errexit
if [ "${is_commit_queue}" = "true" ]; then
+ # Fetch the gitlog from the last merge commit to HEAD, which is guaranteed
+ # to be the commit message of the PR.
+ gitlog=$(git log --pretty=format:'%s' ${branch_name}...HEAD 2>&1)
+ # In case there are any special characters that could cause issues (like "). To
+ # do this, we will write it out to a file, then read that file into a variable.
+ cat > commit_message.txt << END_OF_COMMIT_MSG
+${gitlog}
+END_OF_COMMIT_MSG
+ commit_message_content=$(cat commit_message.txt)
activate_venv
- $python -m pip --disable-pip-version-check install --upgrade cryptography==36.0.2 || exit 1
- $python buildscripts/validate_commit_message.py \
- --evg-config-file ./.evergreen.yml \
- ${version_id}
+ $python buildscripts/validate_commit_message.py "$commit_message_content"
+else
+ echo "Not a commit queue PR, skipping commit message validation"
+ exit 0
fi
diff --git a/evergreen/compiled_binaries_get.sh b/evergreen/compiled_binaries_get.sh
index 67ed74a8db9..121cb7c8b34 100755
--- a/evergreen/compiled_binaries_get.sh
+++ b/evergreen/compiled_binaries_get.sh
@@ -36,6 +36,10 @@ if [ ! -z "${multiversion_architecture_44_or_later}" ]; then
architecture="${multiversion_architecture_44_or_later}"
fi
+if [ ! -z "${multiversion_platform_50_or_later}" ]; then
+ platform="${multiversion_platform_50_or_later}"
+fi
+
version=${project#mongodb-mongo-}
version=${version#v}
@@ -49,5 +53,5 @@ db-contrib-tool setup-repro-env \
--architecture $architecture \
$version
-version_dir=$(find /data/install -type d -iname "*$version*")
-mv $version_dir/dist-test $(pwd)
+dist_test_dir=$(find /data/install -type d -iname "dist-test")
+mv "$dist_test_dir" "$(pwd)"
diff --git a/evergreen/do_jepsen_setup/build_libfaketime.sh b/evergreen/do_jepsen_setup/build_libfaketime.sh
index fdba0af2f4d..a488ced84a8 100755
--- a/evergreen/do_jepsen_setup/build_libfaketime.sh
+++ b/evergreen/do_jepsen_setup/build_libfaketime.sh
@@ -6,7 +6,8 @@ cd src
# Additionally, a version of libfaketime containing the changes mentioned in SERVER-29336
# is required to avoid needing to use libfaketimeMT.so.1 and serializing all calls to
# fake_clock_gettime() with a mutex.
-git clone --branch=for-jepsen --depth=1 git@github.com:10gen/libfaketime.git
+
+git clone --branch=for-jepsen --depth=1 https://x-access-token:${github_token}@github.com/10gen/libfaketime.git
cd libfaketime
branch=$(git symbolic-ref --short HEAD)
commit=$(git show -s --pretty=format:"%h - %an, %ar: %s")
diff --git a/evergreen/do_jepsen_setup/install_jepsen.sh b/evergreen/do_jepsen_setup/install_jepsen.sh
index 7af559692e4..1cb03a279a2 100755
--- a/evergreen/do_jepsen_setup/install_jepsen.sh
+++ b/evergreen/do_jepsen_setup/install_jepsen.sh
@@ -1,10 +1,8 @@
set -o errexit
cd src
-git clone --branch=jepsen-mongodb-master --depth=1 git@github.com:10gen/jepsen.git jepsen-mongodb
+
+git clone --branch=v0.3.0-jepsen-mongodb-master --depth=1 https://x-access-token:${github_token}@github.com/10gen/jepsen.git jepsen-mongodb
cd jepsen-mongodb
-branch=$(git symbolic-ref --short HEAD)
-commit=$(git show -s --pretty=format:"%h - %an, %ar: %s")
-echo "Git branch: $branch, commit: $commit"
lein install
diff --git a/evergreen/feature_flag_tags_check.sh b/evergreen/feature_flag_tags_check.sh
index 825591d5b41..3d2cf818142 100755
--- a/evergreen/feature_flag_tags_check.sh
+++ b/evergreen/feature_flag_tags_check.sh
@@ -21,14 +21,6 @@ if [ -s "$diff_file_name" ]; then
git apply -R "$diff_file_name"
fi
-# This script has to be run on an Evergreen variant or local repo with the enterprise module.
-pushd "$enterprise_path"
-git --no-pager diff "$(git merge-base origin/${branch_name} HEAD)" --output="$diff_file_name" --binary
-if [ -s "$diff_file_name" ]; then
- git apply -R "$diff_file_name"
-fi
-popd
-
$python buildscripts/idl/gen_all_feature_flag_list.py
mv all_feature_flags.txt base_all_feature_flags.txt
diff --git a/evergreen/functions/credentials_setup.sh b/evergreen/functions/credentials_setup.sh
index 15be8ea1e66..55a9df5282e 100755
--- a/evergreen/functions/credentials_setup.sh
+++ b/evergreen/functions/credentials_setup.sh
@@ -6,7 +6,7 @@ cd src
cat > mci.buildlogger << END_OF_CREDS
slavename='${slave}'
passwd='${passwd}'
-builder='MCI_${build_variant}'
+builder='${build_variant}_${project}'
build_num=${builder_num}
build_phase='${task_name}_${execution}'
END_OF_CREDS
diff --git a/evergreen/functions/venv_setup.sh b/evergreen/functions/venv_setup.sh
index 9b53989aa0e..c6244686084 100644
--- a/evergreen/functions/venv_setup.sh
+++ b/evergreen/functions/venv_setup.sh
@@ -74,9 +74,22 @@ activate_venv
echo "Upgrading pip to 21.0.1"
python -m pip --disable-pip-version-check install "pip==21.0.1" "wheel==0.37.0" || exit 1
-if ! python -m pip --disable-pip-version-check install -r "$toolchain_txt" -q --log install.log; then
- echo "Pip install error"
- cat install.log || true
- exit 1
-fi
+count=0
+while :; do
+ if ! python -m pip --disable-pip-version-check install -r "$toolchain_txt" -q --log install.log; then
+ count=$((count + 1))
+ if [[ $count < 5 ]]; then
+ rand=$((1 + $RANDOM % 3))
+ # delay = 20+[1-3] -> 80+[4-12] -> 180+[9-27] -> 320+[16-48]
+ sleep $((count * count * (20 + rand)))
+ continue
+ fi
+ echo "Pip install error"
+ cat install.log || true
+ exit 1
+ else
+ break
+ fi
+done
+
python -m pip freeze > pip-requirements.txt
diff --git a/evergreen/functions/version_expansions_generate.sh b/evergreen/functions/version_expansions_generate.sh
index c0e577a59e6..75c89b94420 100755
--- a/evergreen/functions/version_expansions_generate.sh
+++ b/evergreen/functions/version_expansions_generate.sh
@@ -7,6 +7,12 @@ set -o errexit
set -o verbose
# We get the raw version string (r1.2.3-45-gabcdef) from git
MONGO_VERSION=$(git describe --abbrev=7)
+
+# If the project is sys-perf (or related), add the string -sys-perf to the version
+if [[ "${project}" == sys-perf* ]]; then
+ MONGO_VERSION="$MONGO_VERSION-sys-perf"
+fi
+
# If this is a patch build, we add the patch version id to the version string so we know
# this build was a patch, and which evergreen task it came from
if [ "${is_patch}" = "true" ]; then
diff --git a/evergreen/garasign_jsign_sign.sh b/evergreen/garasign_jsign_sign.sh
index 7a3737ecd7d..f150d398883 100644
--- a/evergreen/garasign_jsign_sign.sh
+++ b/evergreen/garasign_jsign_sign.sh
@@ -17,7 +17,7 @@ cat << 'EOF' > jsign_signing_commands.sh
function sign(){
if [ -e $1 ]
then
- jsign -a mongo-authenticode-2021 --replace --tsaurl http://timestamp.digicert.com -d SHA-256 $1
+ jsign -a mongo-authenticode-2024 --replace --tsaurl http://timestamp.digicert.com -d SHA-256 $1
else
echo "$1 does not exist. Skipping signing"
fi
diff --git a/evergreen/gen_patch_test_tags.sh b/evergreen/gen_patch_test_tags.sh
index d1656f6475e..2d9e4ce0631 100644
--- a/evergreen/gen_patch_test_tags.sh
+++ b/evergreen/gen_patch_test_tags.sh
@@ -12,7 +12,7 @@ if [[ "${build_variant}" != *"query-patch-only"* ]]; then
fi
activate_venv
-git clone git@github.com:10gen/coredb-patchbuild-optimizer.git
+git clone https://x-access-token:${github_token}@github.com/10gen/coredb-patchbuild-optimizer.git
pushd coredb-patchbuild-optimizer
# Reusing bfsuggestion's password here to avoid having to
diff --git a/evergreen/jepsen_docker/list-append.sh b/evergreen/jepsen_docker/list-append.sh
index 2204a6a2e9b..66192de57cf 100644
--- a/evergreen/jepsen_docker/list-append.sh
+++ b/evergreen/jepsen_docker/list-append.sh
@@ -10,7 +10,22 @@ cd jepsen/docker
# actually run the tests
start_time=$(date +%s)
-sudo docker exec jepsen-control bash --login -c "cd /jepsen/mongodb && lein run test-all -w list-append -n n1 -n n2 -n n3 -n n4 -n n5 -n n6 -n n7 -n n8 -n n9 -r 1000 --concurrency 3n --time-limit 240 --max-writes-per-key 128 --read-concern majority --write-concern majority --txn-read-concern snapshot --txn-write-concern majority --nemesis-interval 1 --nemesis partition --test-count 30" | tee jepsen_${task_name}_${execution}.log
+sudo docker exec jepsen-control bash --login -c "\
+cd /jepsen/mongodb && \
+lein run test-all -w list-append \
+-n n1 -n n2 -n n3 -n n4 -n n5 -n n6 -n n7 -n n8 -n n9 \
+-r 1000 \
+--concurrency 3n \
+--time-limit 120 \
+--max-writes-per-key 128 \
+--read-concern majority \
+--write-concern majority \
+--txn-read-concern snapshot \
+--txn-write-concern majority \
+--nemesis-interval 1 \
+--nemesis partition \
+--test-count 30" \
+ | tee jepsen_${task_name}_${execution}.log
end_time=$(date +%s)
elapsed_secs=$((end_time - start_time))
diff --git a/evergreen/jepsen_docker/setup.sh b/evergreen/jepsen_docker/setup.sh
index 38c73cecbec..f16c2b45694 100644
--- a/evergreen/jepsen_docker/setup.sh
+++ b/evergreen/jepsen_docker/setup.sh
@@ -1,10 +1,15 @@
set -euo pipefail
-git clone --branch=evergreen-master git@github.com:10gen/jepsen.git jepsen
+# Clone our internal fork of jepsen-io/jepsen to get the core
+# functionality with a few tweaks meant for evergreen integration.
+git clone --branch=v0.2.0-evergreen-master git@github.com:10gen/jepsen.git jepsen
+
+# Copy our mongodb source for jepsen to run into the docker area to be
+# copied into the image during the build process.
cp -rf src/dist-test jepsen/docker/node
-# place the mongodb jepsen test adjacent to the control node's Dockerfile.
-# it'll get copied into the image during the build process
-git clone --branch=no-download-master git@github.com:10gen/jepsen-io-mongodb.git jepsen/docker/control/mongodb
-# kill any running containers
+# Clone our internal tests to run
+git clone --branch=v0.2.0 https://x-access-token:${github_token}@github.com/10gen/jepsen-io-mongodb.git jepsen/docker/control/mongodb
+
+# Kill any running containers
sudo docker container kill $(docker ps -q) || true
diff --git a/evergreen/jstestfuzz_setup.sh b/evergreen/jstestfuzz_setup.sh
index 2d7e2a53cdc..3c35305b697 100644
--- a/evergreen/jstestfuzz_setup.sh
+++ b/evergreen/jstestfuzz_setup.sh
@@ -6,4 +6,12 @@ cd src
set -o errexit
set -o verbose
-git clone git@github.com:10gen/jstestfuzz.git
+for i in {1..5}; do
+ git clone https://x-access-token:${github_token}@github.com/10gen/jstestfuzz.git && RET=0 && break || RET=$? && sleep 5
+ echo "Failed to clone github.com:10gen/jstestfuzz.git, retrying..."
+done
+
+if [ $RET -ne 0 ]; then
+ echo "Failed to clone git@github.com:10gen/jstestfuzz.git"
+ exit $RET
+fi
diff --git a/evergreen/multiversion_setup.sh b/evergreen/multiversion_setup.sh
index 6eb9b0edb3f..b3db41d90b6 100644
--- a/evergreen/multiversion_setup.sh
+++ b/evergreen/multiversion_setup.sh
@@ -93,5 +93,34 @@ db-contrib-tool setup-repro-env \
--fallbackToMaster \
--resmokeCmd "python buildscripts/resmoke.py" \
--debug \
- $last_lts_arg \
- $last_continuous_arg 4.4 5.0
+ $last_continuous_arg 4.4 5.0.28
+
+# Certain build variants define additional multiversion_*_last_lts expansions in order to
+# be able to fetch a complete set of versions.
+
+if [ ! -z "${multiversion_edition_last_lts}" ]; then
+ edition="${multiversion_edition_last_lts}"
+fi
+
+if [ ! -z "${multiversion_platform_last_lts}" ]; then
+ platform="${multiversion_platform_last_lts}"
+fi
+
+if [ ! -z "${multiversion_architecture_last_lts}" ]; then
+ architecture="${multiversion_architecture_last_lts}"
+fi
+
+if [ ! -z "${multiversion_platform_50_or_later}" ]; then
+ platform="${multiversion_platform_50_or_later}"
+fi
+
+db-contrib-tool setup-repro-env \
+ --installDir /data/install \
+ --linkDir /data/multiversion \
+ --edition $edition \
+ --platform $platform \
+ --architecture $architecture \
+ --fallbackToMaster \
+ --resmokeCmd "python buildscripts/resmoke.py" \
+ --debug \
+ $last_lts_arg
diff --git a/evergreen/prelude_db_contrib_tool.sh b/evergreen/prelude_db_contrib_tool.sh
index 6669eeb9a00..8310f81f725 100644
--- a/evergreen/prelude_db_contrib_tool.sh
+++ b/evergreen/prelude_db_contrib_tool.sh
@@ -4,8 +4,35 @@ function setup_db_contrib_tool {
export PIPX_HOME="${workdir}/pipx"
export PIPX_BIN_DIR="${workdir}/pipx/bin"
export PATH="$PATH:$PIPX_BIN_DIR"
+ export PIP_CACHE_DIR=${workdir}/pip_cache
- python -m pip --disable-pip-version-check install "pip==21.0.1" "wheel==0.37.0" || exit 1
- python -m pip --disable-pip-version-check install "pipx" || exit 1
- pipx install "db-contrib-tool==0.7.0" || exit 1
+ for i in {1..5}; do
+ python -m pip --disable-pip-version-check install "pip==21.0.1" "wheel==0.37.0" && RET=0 && break || RET=$? && sleep 1
+ echo "Failed to install pip and wheel, retrying..."
+ done
+
+ if [ $RET -ne 0 ]; then
+ echo "Failed to install pip and wheel"
+ exit $RET
+ fi
+
+ for i in {1..5}; do
+ python -m pip --disable-pip-version-check install "pipx" && RET=0 && break || RET=$? && sleep 1
+ echo "Failed to install pipx, retrying..."
+ done
+
+ if [ $RET -ne 0 ]; then
+ echo "Failed to install pipx"
+ exit $RET
+ fi
+
+ for i in {1..5}; do
+ pipx install --force "db-contrib-tool==0.8.3" --pip-args="--no-cache-dir" && RET=0 && break || RET=$? && sleep 1
+ echo "Failed to install db-contrib-tool, retrying..."
+ done
+
+ if [ $RET -ne 0 ]; then
+ echo "Failed to install db-contrib-tool"
+ exit $RET
+ fi
}
diff --git a/evergreen/prelude_mongo_task_generator.sh b/evergreen/prelude_mongo_task_generator.sh
index 81e0e6ccce3..343942139a3 100644
--- a/evergreen/prelude_mongo_task_generator.sh
+++ b/evergreen/prelude_mongo_task_generator.sh
@@ -1,6 +1,6 @@
function setup_mongo_task_generator {
if [ ! -f mongo-task-generator ]; then
- curl -L https://github.com/mongodb/mongo-task-generator/releases/download/v0.7.10/mongo-task-generator --output mongo-task-generator
+ curl -L https://github.com/mongodb/mongo-task-generator/releases/download/v0.7.17/mongo-task-generator --output mongo-task-generator
chmod +x mongo-task-generator
fi
}
diff --git a/evergreen/prelude_venv.sh b/evergreen/prelude_venv.sh
index a4e9318375e..a0851406f57 100644
--- a/evergreen/prelude_venv.sh
+++ b/evergreen/prelude_venv.sh
@@ -41,6 +41,7 @@ function activate_venv {
fi
python -c "import sys; print(sys.path)"
fi
+ export PIP_CACHE_DIR=${workdir}/pip_cache
- echo "python set to $(which $python)"
+ echo "python set to $(which $python) and python version: $($python --version)"
}
diff --git a/evergreen/resmoke_tests_execute.sh b/evergreen/resmoke_tests_execute.sh
index 8a938878b32..911a85414fd 100644
--- a/evergreen/resmoke_tests_execute.sh
+++ b/evergreen/resmoke_tests_execute.sh
@@ -24,10 +24,9 @@ if [[ ${disable_unit_tests} = "false" && ! -f ${skip_tests} ]]; then
tags_build_variant="${build_variant}"
if [[ "${build_variant}" =~ .*"-query-patch-only" ]]; then
- # Use the RHEL 8 all feature flags variant for the classic engine variant. The original
- # classic engine variant is not a required builder and therefore not captured in patch
- # test failure history.
- tags_build_variant="enterprise-rhel-80-64-bit-dynamic-all-feature-flags-required"
+ # Use the RHEL 8 all feature flags variant for the SBE variant. The original SBE variant is
+ # not a required builder and therefore not captured in patch test failure history.
+ tags_build_variant="enterprise-rhel-8-64-bit-dynamic-all-feature-flags-required"
fi
$python buildscripts/testmatrix/getdisplaytaskname.py "${task_name}" "${build_variant}" > display_task_name.txt
@@ -105,7 +104,7 @@ if [[ ${disable_unit_tests} = "false" && ! -f ${skip_tests} ]]; then
set -o errexit
# Reduce the JSHeapLimit for the serial_run task task on Code Coverage builder variant.
- if [[ "${build_variant}" = "enterprise-rhel-80-64-bit-coverage" && "${task_name}" = "serial_run" ]]; then
+ if [[ "${build_variant}" = "enterprise-rhel-8-64-bit-coverage" && "${task_name}" = "serial_run" ]]; then
extra_args="$extra_args --mongodSetParameter \"{'jsHeapLimitMB':10}\""
fi
@@ -143,7 +142,7 @@ if [[ ${disable_unit_tests} = "false" && ! -f ${skip_tests} ]]; then
$extra_args \
${test_flags} \
--suites=${suite_name} \
- --log=buildlogger \
+ --log=${resmoke_logger} \
--staggerJobs=on \
--installDir=${install_dir} \
--buildId=${build_id} \
diff --git a/evergreen/run_jstestfuzz/clone_repos.sh b/evergreen/run_jstestfuzz/clone_repos.sh
index b64e91fd4d3..3fccc350741 100755
--- a/evergreen/run_jstestfuzz/clone_repos.sh
+++ b/evergreen/run_jstestfuzz/clone_repos.sh
@@ -2,5 +2,15 @@ set -o errexit
set -o verbose
cd src
-git clone --depth 1 git@github.com:10gen/mongo-enterprise-modules.git jstests/enterprise_tests
-git clone --depth 1 git@github.com:10gen/QA.git jstests/qa_tests
+
+for i in {1..5}; do
+ git clone --depth 1 https://x-access-token:${github_token}@github.com/10gen/QA.git jstests/qa_tests && RET=0 && break || RET=$? && sleep 1
+ echo "Failed to clone github.com:10gen/QA.git, retrying..."
+done
+
+if [ $RET -ne 0 ]; then
+ echo "Failed to clone git@github.com:10gen/QA.git"
+ exit $RET
+fi
+
+cp -r src/mongo/db/modules/enterprise jstests/enterprise_tests
diff --git a/evergreen/sasl_windows_cyrussasl_setup.sh b/evergreen/sasl_windows_cyrussasl_setup.sh
new file mode 100644
index 00000000000..149bb563325
--- /dev/null
+++ b/evergreen/sasl_windows_cyrussasl_setup.sh
@@ -0,0 +1,18 @@
+DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"
+. "$DIR/prelude.sh"
+
+readonly k_cyrussasl_plugin_filename="cyrus_sasl_windows_test_plugin.dll"
+readonly k_cyrussasl_plugin_dir="/cygdrive/c/CMU/bin/sasl2"
+
+plugin_path="$(find . -name "*${k_cyrussasl_plugin_filename}")"
+
+if [[ -z "$plugin_path" ]]; then
+ echo >&2 "Could not find ${k_cyrussasl_plugin_filename} from path '$(pwd)' !"
+ exit 1
+fi
+
+echo "Configuring CyrusSASL plugin .dll from '$plugin_path'"
+
+mkdir -p "$k_cyrussasl_plugin_dir"
+
+cp "$plugin_path" "$k_cyrussasl_plugin_dir"
diff --git a/evergreen/sasl_windows_cyrussasl_teardown.sh b/evergreen/sasl_windows_cyrussasl_teardown.sh
new file mode 100644
index 00000000000..60e65055643
--- /dev/null
+++ b/evergreen/sasl_windows_cyrussasl_teardown.sh
@@ -0,0 +1,18 @@
+DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"
+. "$DIR/prelude.sh"
+
+if [ "${task_name}" != "sasl_windows_cyrussasl" ]; then
+ exit 0
+fi
+
+echo "Cleaning up Windows CyrusSASL Test Artifacts"
+
+readonly k_cyrussasl_default_dir_root="/cygdrive/c/CMU"
+
+if [[ ! -d "$k_cyrussasl_default_dir_root" ]]; then
+ echo "Could not find $k_cyrussasl_default_dir_root to cleanup..."
+ exit 0
+fi
+
+rm -rf "$k_cyrussasl_default_dir_root"
+echo "Deleted $k_cyrussasl_default_dir_root from host"