Skip to content

Commit 57bb3a0

Browse files
authored
chore(ci): continuous matrix testing support (#2631)
1 parent 7efbba0 commit 57bb3a0

File tree

4 files changed

+158
-7
lines changed

4 files changed

+158
-7
lines changed

.evergreen/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ functions:
2424
fi
2525
2626
export DRIVERS_TOOLS="$(pwd)/../drivers-tools"
27+
2728
export PROJECT_DIRECTORY="$(pwd)"
29+
if [ "Windows_NT" = "$OS" ]; then
30+
export PROJECT_DIRECTORY=$(cygpath -m $PROJECT_DIRECTORY)
31+
fi
32+
2833
export MONGO_ORCHESTRATION_HOME="$DRIVERS_TOOLS/.evergreen/orchestration"
2934
export MONGODB_BINARIES="$DRIVERS_TOOLS/mongodb/bin"
3035
export UPLOAD_BUCKET="${project}"

.evergreen/config.yml.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ functions:
4242
fi
4343

4444
export DRIVERS_TOOLS="$(pwd)/../drivers-tools"
45+
4546
export PROJECT_DIRECTORY="$(pwd)"
47+
if [ "Windows_NT" = "$OS" ]; then
48+
export PROJECT_DIRECTORY=$(cygpath -m $PROJECT_DIRECTORY)
49+
fi
50+
4651
export MONGO_ORCHESTRATION_HOME="$DRIVERS_TOOLS/.evergreen/orchestration"
4752
export MONGODB_BINARIES="$DRIVERS_TOOLS/mongodb/bin"
4853
export UPLOAD_BUCKET="${project}"

.evergreen/install-dependencies.sh

Lines changed: 81 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
# set -o xtrace # Write all commands first to stderr
33
set -o errexit # Exit the script with error if any of the commands fail
44

5+
echo "in .evergreen/install-dependencies.sh - SKIP_INSTALL=$SKIP_INSTALL"
6+
7+
NVM_WINDOWS_URL="https://github.com/coreybutler/nvm-windows/releases/download/1.1.7/nvm-noinstall.zip"
8+
NVM_URL="https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh"
9+
510
NODE_LTS_NAME=${NODE_LTS_NAME:-carbon}
611
NODE_ARTIFACTS_PATH="${PROJECT_DIRECTORY}/node-artifacts"
712
NPM_CACHE_DIR="${NODE_ARTIFACTS_PATH}/npm"
@@ -16,22 +21,91 @@ mkdir -p ${NODE_ARTIFACTS_PATH}
1621
mkdir -p ${NPM_CACHE_DIR}
1722
mkdir -p "${NPM_TMP_DIR}"
1823

19-
# install Node.js
20-
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.3/install.sh | bash
21-
[ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh"
22-
nvm install --no-progress --lts=${NODE_LTS_NAME}
24+
node_lts_version () {
25+
case $1 in
26+
"argon")
27+
VERSION=4
28+
;;
29+
"boron")
30+
VERSION=6
31+
;;
32+
"carbon")
33+
VERSION=8
34+
;;
35+
"dubnium")
36+
VERSION=10
37+
;;
38+
"erbium")
39+
VERSION=12
40+
;;
41+
"fermium")
42+
VERSION=14
43+
;;
44+
*)
45+
echo "Unsupported Node LTS version $1"
46+
exit 1
47+
;;
48+
esac
49+
NODE_VERSION=$(curl -s -o- https://nodejs.org/download/release/latest-v${VERSION}.x/SHASUMS256.txt \
50+
| head -n 1 | awk '{print $2};' | cut -d- -f2)
51+
export NODE_VERSION=${NODE_VERSION:1}
52+
}
53+
54+
# install Node.js on Windows
55+
if [[ "$OS" == "Windows_NT" || "$PLATFORM" == "windows-64" ]]; then
56+
echo "--- Installing nvm on Windows ---"
57+
node_lts_version $NODE_LTS_NAME
58+
echo "NODE_VERSION=$NODE_VERSION"
59+
60+
export NVM_HOME=`cygpath -w "$NVM_DIR"`
61+
export NVM_SYMLINK=`cygpath -w "$NODE_ARTIFACTS_PATH/bin"`
62+
export NVM_ARTIFACTS_PATH=`cygpath -w "$NODE_ARTIFACTS_PATH/bin"`
63+
export PATH=`cygpath $NVM_SYMLINK`:`cygpath $NVM_HOME`:$PATH
64+
65+
curl -L $NVM_WINDOWS_URL -o nvm.zip
66+
unzip -d $NVM_DIR nvm.zip
67+
rm nvm.zip
68+
69+
chmod 777 $NVM_DIR
70+
chmod -R a+rx $NVM_DIR
2371

24-
# setup npm cache in a local directory
25-
cat <<EOT > .npmrc
72+
cat <<EOT > $NVM_DIR/settings.txt
73+
root: $NVM_HOME
74+
path: $NVM_SYMLINK
75+
EOT
76+
nvm install $NODE_VERSION
77+
nvm use $NODE_VERSION
78+
79+
npm config set msvs_version 2017
80+
echo "Windows install done"
81+
82+
# install Node.js on Linux/MacOS
83+
else
84+
echo "--- Installing nvm on Linux/MacOS ---"
85+
curl -o- $NVM_URL | bash
86+
[ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh"
87+
nvm install --no-progress --lts=${NODE_LTS_NAME}
88+
89+
# setup npm cache in a local directory
90+
cat <<EOT > .npmrc
2691
devdir=${NPM_CACHE_DIR}/.node-gyp
2792
init-module=${NPM_CACHE_DIR}/.npm-init.js
2893
cache=${NPM_CACHE_DIR}
2994
tmp=${NPM_TMP_DIR}
3095
registry=https://registry.npmjs.org
3196
EOT
3297

98+
echo "Linux/MacOS install done"
99+
100+
fi
101+
33102
# NOTE: registry was overridden to not use artifactory, remove the `registry` line when
34103
# BUILD-6774 is resolved.
35104

36105
# install node dependencies
37-
npm install --unsafe-perm
106+
if [[ "$SKIP_INSTALL" == "1" ]]; then
107+
echo "Skipping npm install"
108+
else
109+
echo "Running npm install"
110+
npm install --unsafe-perm
111+
fi

.evergreen/run-versioned-tests.sh

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/bin/bash
2+
# set -o xtrace # Write all commands first to stderr
3+
set -o errexit # Exit the script with error if any of the commands fail
4+
5+
DRIVER_VERSION=$1
6+
echo "MONGODB_URI=$MONGODB_URI VERSION=$VERSION TOPOLOGY=$TOPOLOGY AUTH=$AUTH SSL=$SSL"
7+
echo "PLATFORM=$PLATFORM DRIVER_VERSION=$DRIVER_VERSION"
8+
9+
ADDITIONAL_DEPS=:
10+
11+
case $DRIVER_VERSION in
12+
'3.6')
13+
VERSION_DESC="v3.6"
14+
TEST_COMMAND='npm run test-nolint'
15+
;;
16+
'fix-srv-test-timeout')
17+
VERSION_DESC="v3.6 (debug branch)"
18+
TEST_COMMAND='npm run test-nolint'
19+
;;
20+
'3.3')
21+
VERSION_DESC="v3.3"
22+
TEST_COMMAND='npm run test-nolint'
23+
;;
24+
'3.1')
25+
VERSION_DESC="v3.1"
26+
if [[ $TOPOLOGY == "server" ]]; then
27+
MONGODB_ENVIRONMENT='single'
28+
else
29+
MONGODB_ENVIRONMENT=$TOPOLOGY
30+
fi
31+
export MONGODB_ENVIRONMENT
32+
export MONGODB_VERSION=$VERSION
33+
ADDITIONAL_DEPS="npm install emadum/mongodb-test-runner#continuous-matrix-testing"
34+
TEST_COMMAND="./node_modules/.bin/mongodb-test-runner -s -l test/unit test/functional"
35+
;;
36+
*)
37+
echo "Unsupported driver version: $DRIVER_VERSION"
38+
exit 1
39+
;;
40+
esac
41+
42+
echo "Testing NodeJS driver $VERSION_DESC"
43+
echo "TEST_COMMAND=$TEST_COMMAND"
44+
45+
export PROJECT_DIRECTORY=$(cd $(dirname ${BASH_SOURCE[0]}) && cd .. && pwd)
46+
export NODE_LTS_NAME=dubnium
47+
export SKIP_INSTALL=1
48+
49+
if [[ $OS == "Windows_NT" || $PLATFORM == "windows-64" ]]; then
50+
export PROJECT_DIRECTORY=`cygpath -w "$PROJECT_DIRECTORY"`
51+
fi
52+
53+
echo "PROJECT_DIRECTORY=$PROJECT_DIRECTORY NODE_LTS_NAME=$NODE_LTS_NAME"
54+
55+
cd $PROJECT_DIRECTORY
56+
57+
echo "1. Installing driver depenencies"
58+
bash .evergreen/install-dependencies.sh
59+
echo "2. Driver dependencies installed, running test suite"
60+
61+
git checkout $DRIVER_VERSION
62+
echo "3. Checked out version branch, running dependency installation"
63+
64+
npm install --unsafe-perm
65+
echo "4. Library dependencies installed, running test suite"
66+
$ADDITIONAL_DEPS
67+
$TEST_COMMAND

0 commit comments

Comments
 (0)