Skip to content

Commit

Permalink
chore(NODE-3552): test serverless behind a loadbalancer (#2997)
Browse files Browse the repository at this point in the history
  • Loading branch information
nbbeeken authored Oct 15, 2021
1 parent 681a181 commit 644ac56
Show file tree
Hide file tree
Showing 20 changed files with 813 additions and 982 deletions.
33 changes: 24 additions & 9 deletions .evergreen/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -146,12 +146,26 @@ functions:
${PREPARE_SHELL}
# Disable xtrace (just in case it was accidentally set).
set +x
MONGODB_URI="${MONGODB_URI}" \
MONGODB_API_VERSION="${MONGODB_API_VERSION}" \
AUTH="auth" SSL="ssl" SERVERLESS=1 \
SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}" \
SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}" \
bash ${PROJECT_DIRECTORY}/.evergreen/run-serverless-tests.sh
export MONGODB_API_VERSION="${MONGODB_API_VERSION}"
export AUTH="auth"
export SSL="ssl"
export SERVERLESS="1"
export SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}"
export SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}"
export SINGLE_ATLASPROXY_SERVERLESS_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
export MULTI_ATLASPROXY_SERVERLESS_URI="${MULTI_ATLASPROXY_SERVERLESS_URI}"
export MONGODB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
export SINGLE_MONGOS_LB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
# Setting MULTI_MONGOS to the SINGLE_ATLAS is intentional
# LB tests pick one host out of the comma separated list
# so just passing the one host is equivalent
export MULTI_MONGOS_LB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
bash ${PROJECT_DIRECTORY}/.evergreen/run-serverless-tests.sh
start-load-balancer:
- command: shell.exec
params:
Expand Down Expand Up @@ -615,11 +629,11 @@ functions:
working_dir: src
timeout_secs: 60
env:
MONGODB_URI: '${MONGODB_URI}'
PROJECT_DIRECTORY: '${PROJECT_DIRECTORY}'
MONGODB_URI: ${MONGODB_URI}
PROJECT_DIRECTORY: ${PROJECT_DIRECTORY}
binary: bash
args:
- '${PROJECT_DIRECTORY}/.evergreen/run-snappy-version-test.sh'
- ${PROJECT_DIRECTORY}/.evergreen/run-snappy-version-test.sh
run bson-ext test:
- command: shell.exec
type: test
Expand Down Expand Up @@ -1737,6 +1751,7 @@ task_groups:
script: |
${PREPARE_SHELL}
set +o xtrace
LOADBALANCED=ON \
SERVERLESS_DRIVERS_GROUP=${SERVERLESS_DRIVERS_GROUP} \
SERVERLESS_API_PUBLIC_KEY=${SERVERLESS_API_PUBLIC_KEY} \
SERVERLESS_API_PRIVATE_KEY=${SERVERLESS_API_PRIVATE_KEY} \
Expand Down
27 changes: 21 additions & 6 deletions .evergreen/config.yml.in
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,26 @@ functions:
${PREPARE_SHELL}
# Disable xtrace (just in case it was accidentally set).
set +x
MONGODB_URI="${MONGODB_URI}" \
MONGODB_API_VERSION="${MONGODB_API_VERSION}" \
AUTH="auth" SSL="ssl" SERVERLESS=1 \
SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}" \
SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}" \
bash ${PROJECT_DIRECTORY}/.evergreen/run-serverless-tests.sh

export MONGODB_API_VERSION="${MONGODB_API_VERSION}"
export AUTH="auth"
export SSL="ssl"
export SERVERLESS="1"
export SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}"
export SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}"

export SINGLE_ATLASPROXY_SERVERLESS_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
export MULTI_ATLASPROXY_SERVERLESS_URI="${MULTI_ATLASPROXY_SERVERLESS_URI}"

export MONGODB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
export SINGLE_MONGOS_LB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"

# Setting MULTI_MONGOS to the SINGLE_ATLAS is intentional
# LB tests pick one host out of the comma separated list
# so just passing the one host is equivalent
export MULTI_MONGOS_LB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"

bash ${PROJECT_DIRECTORY}/.evergreen/run-serverless-tests.sh

"start-load-balancer":
- command: shell.exec
Expand Down Expand Up @@ -698,6 +712,7 @@ task_groups:
script: |
${PREPARE_SHELL}
set +o xtrace
LOADBALANCED=ON \
SERVERLESS_DRIVERS_GROUP=${SERVERLESS_DRIVERS_GROUP} \
SERVERLESS_API_PUBLIC_KEY=${SERVERLESS_API_PUBLIC_KEY} \
SERVERLESS_API_PRIVATE_KEY=${SERVERLESS_API_PRIVATE_KEY} \
Expand Down
4 changes: 2 additions & 2 deletions .evergreen/generate_evergreen_tasks.js
Original file line number Diff line number Diff line change
Expand Up @@ -618,8 +618,8 @@ BUILD_VARIANTS.push({
tasks: ['serverless_task_group']
});

const fileData = yaml.safeLoad(fs.readFileSync(`${__dirname}/config.yml.in`, 'utf8'));
const fileData = yaml.load(fs.readFileSync(`${__dirname}/config.yml.in`, 'utf8'));
fileData.tasks = (fileData.tasks || []).concat(BASE_TASKS).concat(TASKS).concat(SINGLETON_TASKS);
fileData.buildvariants = (fileData.buildvariants || []).concat(BUILD_VARIANTS);

fs.writeFileSync(`${__dirname}/config.yml`, yaml.safeDump(fileData, { lineWidth: 120 }), 'utf8');
fs.writeFileSync(`${__dirname}/config.yml`, yaml.dump(fileData, { lineWidth: 120 }), 'utf8');
13 changes: 13 additions & 0 deletions .evergreen/run-checks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,19 @@ set -o errexit # Exit the script with error if any of the commands fail

source "${PROJECT_DIRECTORY}/.evergreen/init-nvm.sh"

# Attempt to update our EVG config
# if it changes, crash so that any gen script changes are forced to be run before pushing
set +o xtrace
echo "Running evergreen config generation, expecting no changes..."
npm run build:evergreen
if ! git diff --exit-code ./.evergreen/config.yml; then
echo "Detected .evergreen/config.yml not up to date"
echo "Make sure to run: node .evergreen/generate_evergreen_tasks.js"
exit 1
fi
set -o xtrace

## Checks typescript, eslint, and prettier
npm run check:lint

npm run check:unit
Expand Down
20 changes: 14 additions & 6 deletions .evergreen/run-serverless-tests.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
#!/bin/bash
#!/usr/bin/env bash

source "${PROJECT_DIRECTORY}/.evergreen/install-dependencies.sh"

SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}" \
SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}" \
SERVERLESS=1 AUTH=auth SSL=ssl \
MONGODB_URI=${MONGODB_URI} npx mocha \
if [ -z ${SERVERLESS+omitted} ]; then echo "SERVERLESS is unset" && exit 1; fi
if [ -z ${MULTI_ATLASPROXY_SERVERLESS_URI+omitted} ]; then echo "MULTI_ATLASPROXY_SERVERLESS_URI is unset" && exit 1; fi
if [ -z ${SINGLE_ATLASPROXY_SERVERLESS_URI+omitted} ]; then echo "SINGLE_ATLASPROXY_SERVERLESS_URI is unset" && exit 1; fi
if [ -z ${SINGLE_MONGOS_LB_URI+omitted} ]; then echo "SINGLE_MONGOS_LB_URI is unset" && exit 1; fi
if [ -z ${MULTI_MONGOS_LB_URI+omitted} ]; then echo "MULTI_MONGOS_LB_URI is unset" && exit 1; fi
if [ -z ${MONGODB_URI+omitted} ]; then echo "MONGODB_URI is unset" && exit 1; fi
if [ -z ${SERVERLESS_ATLAS_USER+omitted} ]; then echo "SERVERLESS_ATLAS_USER is unset" && exit 1; fi
if [ -z ${SERVERLESS_ATLAS_PASSWORD+omitted} ]; then echo "SERVERLESS_ATLAS_PASSWORD is unset" && exit 1; fi

npx mocha --file test/tools/runner/index.js \
test/functional/crud_spec.test.js \
test/functional/retryable_reads.test.js \
test/functional/retryable_writes.test.js \
test/functional/sessions.test.js \
test/functional/transactions.test.js \
test/functional/versioned-api.test.js
test/functional/versioned-api.test.js \
test/functional/load-balancer-spec.test.js
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,5 @@ lib/

.vscode
output

serverless-expansion.yml
2 changes: 1 addition & 1 deletion CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,11 @@
- Senmiao Liu
- heroic
- gitfy
- Eric Adum

## Maintainers

- Neal Beeken <<neal.beeken@mongodb.com>>
- Eric Adum <<eric.adum@mongodb.com>>
- Durran Jordan <<durran@gmail.com>>
- Daria Pardue <<daria.pardue@mongodb.com>>

Expand Down
Loading

0 comments on commit 644ac56

Please sign in to comment.