Files
meteor/tools/tests/mongo.js
Gabriel Grubba 78737e93d2 Merge branch 'devel' into updating-3.0-with-devel
# Conflicts:
#	docs/history.md
#	meteor
#	npm-packages/eslint-plugin-meteor/scripts/dev-bundle-tool-package.js
#	npm-packages/meteor-babel/package-lock.json
#	npm-packages/meteor-babel/package.json
#	packages/babel-compiler/.npm/package/npm-shrinkwrap.json
#	packages/babel-compiler/package.js
#	packages/mongo/collection.js
#	packages/webapp/.npm/package/npm-shrinkwrap.json
#	tools/cli/commands.js
#	tools/static-assets/skel-apollo/server/apollo.js
#	tools/tests/mongo.js
2023-03-21 11:02:43 -03:00

101 lines
2.9 KiB
JavaScript

var selftest = require('../tool-testing/selftest.js');
var Sandbox = selftest.Sandbox;
// Tests that observeChanges continues to work even over a mongo failover.
selftest.define("mongo failover", ["slow"], async function () {
var s = new Sandbox();
await s.init();
s.set('METEOR_TEST_MULTIPLE_MONGOD_REPLSET', 't');
await s.createApp("failover-test", "failover-test");
s.cd("failover-test");
var run = s.run("--once", "--raw-logs");
run.waitSecs(120);
await run.match("SUCCESS\n");
await run.expectEnd();
await run.expectExit(0);
});
async function testMeteorMongo(appDir) {
var s = new Sandbox();
await s.init();
await s.createApp(appDir, 'standard-app');
s.cd(appDir);
var run = s.run();
await run.match(appDir);
await run.match('proxy');
run.waitSecs(15);
await run.match('Started MongoDB');
run.waitSecs(15);
await run.match('App running');
run.waitSecs(15);
var mongoRun = s.run('mongo');
mongoRun.waitSecs(15);
// Make sure we match the DB version that's printed as part of the
// non-quiet shell startup text, so that we don't confuse it with the
// output of the db.version() command below.
await mongoRun.match(/mongosh/);
// Make sure the shell does not display the banner about Mongo's free
// monitoring service.
mongoRun.forbidAll("free cloud-based monitoring service");
// Note: when mongo shell's input is not a tty, there is no prompt.
mongoRun.write('db.version()\n');
await mongoRun.match(/v5\.\d+\.\d+/);
await mongoRun.stop();
await run.stop();
}
selftest.define("meteor mongo", function () {
return testMeteorMongo('asdfzasdf');
});
// Regression test for #3999. Note the Cyrillic character in the pathname.
//
// XXX This test fails on Windows for two different reasons:
// - With the Unicode directory name, `meteor run` fails to start mongod
// - If you change appDir to not have the Unicode character, the reads
// from the mongo shell process seem to be randomly corrupted
// https://github.com/meteor/windows-preview/issues/145
selftest.define("meteor mongo in unicode dir", function () {
return testMeteorMongo('asdf\u0442asdf');
});
selftest.define("mongo with multiple --port numbers (#7563)", async function () {
var s = new Sandbox();
await s.init();
await s.createApp("mongo-multiple-ports", "mongo-sanity");
s.cd("mongo-multiple-ports");
async function check(args, matches) {
const run = s.run(...args);
run.waitSecs(30);
for (const m of matches) {
run.waitSecs(10);
await run.match(m);
}
await run.stop();
}
// Make absolutely sure we're creating the database for the first time.
await check(["reset"], ["Project reset."]);
let count = 0;
function next() {
return ["Started MongoDB", "count: " + (++count)];
}
await check(["run"], next());
await check(["--port", "4321"], next());
await check(["--port", "4123"], next());
await check([], next());
});