Skip to content

Commit be30371

Browse files
authored
chore(ci): run tests against enterprise server versions (#555)
This is required for FLE testing and makes mongocryptd bundling easier.
1 parent 83f6b7e commit be30371

File tree

4 files changed

+26
-15
lines changed

4 files changed

+26
-15
lines changed

package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@
122122
"lerna": "^3.10.7",
123123
"mocha": "^7.1.2",
124124
"mongodb": "github:mongodb/node-mongodb-native#62717a1d",
125-
"mongodb-download-url": "^0.6.1",
125+
"mongodb-download-url": "^0.6.3",
126126
"mongodb-js-precommit": "^2.0.0",
127127
"node-codesign": "^0.3.2",
128128
"node-fetch": "^2.6.1",

packages/node-runtime-worker-thread/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
},
1919
"scripts": {
2020
"pretest": "npm run webpack-build-dev -- --no-stats --no-devtool",
21-
"test": "cross-env TS_NODE_PROJECT=./tsconfig.test.json mocha --timeout 15000 --colors -r ts-node/register \"./src/**/*.spec.ts\"",
21+
"test": "cross-env TS_NODE_PROJECT=./tsconfig.test.json mocha -r \"../../scripts/import-expansions.js\" --timeout 15000 --colors -r ts-node/register \"./src/**/*.spec.ts\"",
2222
"pretest-ci": "npm run webpack-build -- --no-stats --no-devtool",
23-
"test-ci": "cross-env TS_NODE_PROJECT=./tsconfig.test.json mocha --timeout 15000 -r ts-node/register \"./src/**/*.spec.ts\"",
23+
"test-ci": "cross-env TS_NODE_PROJECT=./tsconfig.test.json mocha -r \"../../scripts/import-expansions.js\" --timeout 15000 -r ts-node/register \"./src/**/*.spec.ts\"",
2424
"lint": "eslint \"./src/**/*.{js,ts,tsx}\"",
2525
"check": "npm run lint",
2626
"webpack-build": "webpack --mode production",

testing/download-mongodb.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,27 +57,38 @@ type FullJSON = {
5757
// On Linux, getting the exact download variant to pick is hard, so we still
5858
// use mongodb-download-url for that. For macOS, either would probably be fine.
5959
// TODO: upstream all of this into mongodb-download-url :(
60-
async function lookupDownloadUrl(versionInfo: VersionInfo): Promise<string> {
61-
const knownDistroRegex = /^(?<name>rhel80|rhel7[0-9]|debian10)/;
60+
async function lookupDownloadUrl(versionInfo: VersionInfo, enterprise: boolean): Promise<string> {
61+
const knownDistroRegex = /^(?<name>rhel80|rhel7[0-9]|debian10|ubuntu(?:\d+))/;
6262
const { version } = versionInfo;
6363
const distroId = process.env.DISTRO_ID || '';
6464
if ((process.platform === 'win32' && semver.lt(version, '4.4.0')) ||
6565
(process.platform === 'linux' && semver.lt(version, '4.2.0')) ||
6666
(process.platform !== 'win32' && !knownDistroRegex.test(distroId))) {
67-
return (await promisify(getDownloadURL)({ version })).url;
67+
let { url } = (await promisify(getDownloadURL)({ version, enterprise }));
68+
if (semver.gte(version, '4.2.0')) {
69+
url = url.replace('mongodb-osx', 'mongodb-macos');
70+
}
71+
if (semver.lt(version, '4.2.0') && distroId) {
72+
url = url.replace('enterprise-linux_64', `enterprise-${distroId.split('-')[0]}`);
73+
}
74+
return url;
6875
}
6976

7077
let downloadInfo: DownloadInfo;
7178
if (process.platform === 'win32') {
7279
downloadInfo = versionInfo.downloads
7380
.find((downloadInfo: DownloadInfo) =>
74-
downloadInfo.target === 'windows' && downloadInfo.edition === 'base') as DownloadInfo;
81+
downloadInfo.target === 'windows' &&
82+
downloadInfo.edition === (enterprise ? 'enterprise' : 'base') &&
83+
downloadInfo.arch === 'x86_64') as DownloadInfo;
7584
} else {
7685
let distro = distroId.match(knownDistroRegex)!.groups!.name;
7786
if (distro.match(/rhel7[0-9]/)) distro = 'rhel70';
7887
downloadInfo = versionInfo.downloads
7988
.find((downloadInfo: DownloadInfo) =>
80-
downloadInfo.target === distro && downloadInfo.edition === 'targeted') as DownloadInfo;
89+
downloadInfo.target === distro &&
90+
downloadInfo.edition === (enterprise ? 'enterprise' : 'targeted') &&
91+
downloadInfo.arch === 'x86_64') as DownloadInfo;
8192
}
8293
return downloadInfo.archive.url;
8394
}
@@ -116,7 +127,7 @@ export async function downloadMongoDb(targetVersionSemverSpecifier = '*'): Promi
116127
.filter((info: VersionInfo) => semver.satisfies(info.version, targetVersionSemverSpecifier))
117128
.sort((a: VersionInfo, b: VersionInfo) => semver.rcompare(a.version, b.version));
118129
const versionInfo: VersionInfo = productionVersions[0];
119-
return await doDownload(versionInfo.version, () => lookupDownloadUrl(versionInfo));
130+
return await doDownload(versionInfo.version, () => lookupDownloadUrl(versionInfo, true));
120131
}
121132

122133
const downloadPromises: Record<string, Promise<string>> = {};

0 commit comments

Comments
 (0)