Skip to content

Commit 644ac56

Browse files
authored
chore(NODE-3552): test serverless behind a loadbalancer (#2997)
1 parent 681a181 commit 644ac56

20 files changed

+813
-982
lines changed

.evergreen/config.yml

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,26 @@ functions:
146146
${PREPARE_SHELL}
147147
# Disable xtrace (just in case it was accidentally set).
148148
set +x
149-
MONGODB_URI="${MONGODB_URI}" \
150-
MONGODB_API_VERSION="${MONGODB_API_VERSION}" \
151-
AUTH="auth" SSL="ssl" SERVERLESS=1 \
152-
SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}" \
153-
SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}" \
154-
bash ${PROJECT_DIRECTORY}/.evergreen/run-serverless-tests.sh
149+
150+
export MONGODB_API_VERSION="${MONGODB_API_VERSION}"
151+
export AUTH="auth"
152+
export SSL="ssl"
153+
export SERVERLESS="1"
154+
export SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}"
155+
export SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}"
156+
157+
export SINGLE_ATLASPROXY_SERVERLESS_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
158+
export MULTI_ATLASPROXY_SERVERLESS_URI="${MULTI_ATLASPROXY_SERVERLESS_URI}"
159+
160+
export MONGODB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
161+
export SINGLE_MONGOS_LB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
162+
163+
# Setting MULTI_MONGOS to the SINGLE_ATLAS is intentional
164+
# LB tests pick one host out of the comma separated list
165+
# so just passing the one host is equivalent
166+
export MULTI_MONGOS_LB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
167+
168+
bash ${PROJECT_DIRECTORY}/.evergreen/run-serverless-tests.sh
155169
start-load-balancer:
156170
- command: shell.exec
157171
params:
@@ -615,11 +629,11 @@ functions:
615629
working_dir: src
616630
timeout_secs: 60
617631
env:
618-
MONGODB_URI: '${MONGODB_URI}'
619-
PROJECT_DIRECTORY: '${PROJECT_DIRECTORY}'
632+
MONGODB_URI: ${MONGODB_URI}
633+
PROJECT_DIRECTORY: ${PROJECT_DIRECTORY}
620634
binary: bash
621635
args:
622-
- '${PROJECT_DIRECTORY}/.evergreen/run-snappy-version-test.sh'
636+
- ${PROJECT_DIRECTORY}/.evergreen/run-snappy-version-test.sh
623637
run bson-ext test:
624638
- command: shell.exec
625639
type: test
@@ -1737,6 +1751,7 @@ task_groups:
17371751
script: |
17381752
${PREPARE_SHELL}
17391753
set +o xtrace
1754+
LOADBALANCED=ON \
17401755
SERVERLESS_DRIVERS_GROUP=${SERVERLESS_DRIVERS_GROUP} \
17411756
SERVERLESS_API_PUBLIC_KEY=${SERVERLESS_API_PUBLIC_KEY} \
17421757
SERVERLESS_API_PRIVATE_KEY=${SERVERLESS_API_PRIVATE_KEY} \

.evergreen/config.yml.in

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,26 @@ functions:
167167
${PREPARE_SHELL}
168168
# Disable xtrace (just in case it was accidentally set).
169169
set +x
170-
MONGODB_URI="${MONGODB_URI}" \
171-
MONGODB_API_VERSION="${MONGODB_API_VERSION}" \
172-
AUTH="auth" SSL="ssl" SERVERLESS=1 \
173-
SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}" \
174-
SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}" \
175-
bash ${PROJECT_DIRECTORY}/.evergreen/run-serverless-tests.sh
170+
171+
export MONGODB_API_VERSION="${MONGODB_API_VERSION}"
172+
export AUTH="auth"
173+
export SSL="ssl"
174+
export SERVERLESS="1"
175+
export SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}"
176+
export SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}"
177+
178+
export SINGLE_ATLASPROXY_SERVERLESS_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
179+
export MULTI_ATLASPROXY_SERVERLESS_URI="${MULTI_ATLASPROXY_SERVERLESS_URI}"
180+
181+
export MONGODB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
182+
export SINGLE_MONGOS_LB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
183+
184+
# Setting MULTI_MONGOS to the SINGLE_ATLAS is intentional
185+
# LB tests pick one host out of the comma separated list
186+
# so just passing the one host is equivalent
187+
export MULTI_MONGOS_LB_URI="${SINGLE_ATLASPROXY_SERVERLESS_URI}"
188+
189+
bash ${PROJECT_DIRECTORY}/.evergreen/run-serverless-tests.sh
176190

177191
"start-load-balancer":
178192
- command: shell.exec
@@ -698,6 +712,7 @@ task_groups:
698712
script: |
699713
${PREPARE_SHELL}
700714
set +o xtrace
715+
LOADBALANCED=ON \
701716
SERVERLESS_DRIVERS_GROUP=${SERVERLESS_DRIVERS_GROUP} \
702717
SERVERLESS_API_PUBLIC_KEY=${SERVERLESS_API_PUBLIC_KEY} \
703718
SERVERLESS_API_PRIVATE_KEY=${SERVERLESS_API_PRIVATE_KEY} \

.evergreen/generate_evergreen_tasks.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -618,8 +618,8 @@ BUILD_VARIANTS.push({
618618
tasks: ['serverless_task_group']
619619
});
620620

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

625-
fs.writeFileSync(`${__dirname}/config.yml`, yaml.safeDump(fileData, { lineWidth: 120 }), 'utf8');
625+
fs.writeFileSync(`${__dirname}/config.yml`, yaml.dump(fileData, { lineWidth: 120 }), 'utf8');

.evergreen/run-checks.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,19 @@ set -o errexit # Exit the script with error if any of the commands fail
33

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

6+
# Attempt to update our EVG config
7+
# if it changes, crash so that any gen script changes are forced to be run before pushing
8+
set +o xtrace
9+
echo "Running evergreen config generation, expecting no changes..."
10+
npm run build:evergreen
11+
if ! git diff --exit-code ./.evergreen/config.yml; then
12+
echo "Detected .evergreen/config.yml not up to date"
13+
echo "Make sure to run: node .evergreen/generate_evergreen_tasks.js"
14+
exit 1
15+
fi
16+
set -o xtrace
17+
18+
## Checks typescript, eslint, and prettier
619
npm run check:lint
720

821
npm run check:unit

.evergreen/run-serverless-tests.sh

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
2+
23
source "${PROJECT_DIRECTORY}/.evergreen/install-dependencies.sh"
34

4-
SERVERLESS_ATLAS_USER="${SERVERLESS_ATLAS_USER}" \
5-
SERVERLESS_ATLAS_PASSWORD="${SERVERLESS_ATLAS_PASSWORD}" \
6-
SERVERLESS=1 AUTH=auth SSL=ssl \
7-
MONGODB_URI=${MONGODB_URI} npx mocha \
5+
if [ -z ${SERVERLESS+omitted} ]; then echo "SERVERLESS is unset" && exit 1; fi
6+
if [ -z ${MULTI_ATLASPROXY_SERVERLESS_URI+omitted} ]; then echo "MULTI_ATLASPROXY_SERVERLESS_URI is unset" && exit 1; fi
7+
if [ -z ${SINGLE_ATLASPROXY_SERVERLESS_URI+omitted} ]; then echo "SINGLE_ATLASPROXY_SERVERLESS_URI is unset" && exit 1; fi
8+
if [ -z ${SINGLE_MONGOS_LB_URI+omitted} ]; then echo "SINGLE_MONGOS_LB_URI is unset" && exit 1; fi
9+
if [ -z ${MULTI_MONGOS_LB_URI+omitted} ]; then echo "MULTI_MONGOS_LB_URI is unset" && exit 1; fi
10+
if [ -z ${MONGODB_URI+omitted} ]; then echo "MONGODB_URI is unset" && exit 1; fi
11+
if [ -z ${SERVERLESS_ATLAS_USER+omitted} ]; then echo "SERVERLESS_ATLAS_USER is unset" && exit 1; fi
12+
if [ -z ${SERVERLESS_ATLAS_PASSWORD+omitted} ]; then echo "SERVERLESS_ATLAS_PASSWORD is unset" && exit 1; fi
13+
14+
npx mocha --file test/tools/runner/index.js \
815
test/functional/crud_spec.test.js \
916
test/functional/retryable_reads.test.js \
1017
test/functional/retryable_writes.test.js \
1118
test/functional/sessions.test.js \
1219
test/functional/transactions.test.js \
13-
test/functional/versioned-api.test.js
20+
test/functional/versioned-api.test.js \
21+
test/functional/load-balancer-spec.test.js

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,5 @@ lib/
6060

6161
.vscode
6262
output
63+
64+
serverless-expansion.yml

CONTRIBUTORS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@
5151
- Senmiao Liu
5252
- heroic
5353
- gitfy
54+
- Eric Adum
5455

5556
## Maintainers
5657

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

0 commit comments

Comments
 (0)