mirror of
https://github.com/mongodb/mongo.git
synced 2024-11-30 17:10:48 +01:00
120 lines
3.6 KiB
JavaScript
120 lines
3.6 KiB
JavaScript
// Test --host.
|
|
(function() {
|
|
// This "inner_mode" method of spawning a mongod and re-running was copied from
|
|
// ipv6_connection_string_validation.js
|
|
if ("undefined" == typeof inner_mode) {
|
|
// Start a mongod with --ipv6
|
|
jsTest.log("Outer mode test starting mongod with --ipv6");
|
|
// NOTE: bind_ip arg is present to test if it can parse ipv6 addresses (::1 in this case).
|
|
// Unfortunately, having bind_ip = ::1 won't work in the test framework (But does work when
|
|
// tested manually), so 127.0.0.1 is also present so the test mongo shell can connect
|
|
// with that address.
|
|
var mongod = MongoRunner.runMongod({ipv6: "", bind_ip: "::1,127.0.0.1"});
|
|
if (mongod == null) {
|
|
jsTest.log("Unable to run test because ipv6 is not on machine, see BF-10990");
|
|
return;
|
|
}
|
|
var args = [
|
|
"mongo",
|
|
"--nodb",
|
|
"--ipv6",
|
|
"--host",
|
|
"::1",
|
|
"--port",
|
|
mongod.port,
|
|
"--eval",
|
|
"inner_mode=true;port=" + mongod.port + ";",
|
|
"jstests/noPassthroughWithMongod/host_connection_string_validation.js"
|
|
];
|
|
var exitCode = _runMongoProgram.apply(null, args);
|
|
jsTest.log("Inner mode test finished, exit code was " + exitCode);
|
|
|
|
MongoRunner.stopMongod(mongod);
|
|
// Pass the inner test's exit code back as the outer test's exit code
|
|
if (exitCode != 0) {
|
|
doassert("inner test failed with exit code " + exitCode);
|
|
}
|
|
return;
|
|
}
|
|
|
|
var testHost = function(host, shouldSucceed) {
|
|
var exitCode = runMongoProgram('mongo', '--ipv6', '--eval', ';', '--host', host);
|
|
if (shouldSucceed) {
|
|
if (exitCode !== 0) {
|
|
doassert("failed to connect with `--host " + host +
|
|
"`, but expected success. Exit code: " + exitCode);
|
|
}
|
|
} else {
|
|
if (exitCode === 0) {
|
|
doassert("successfully connected with `--host " + host + "`, but expected to fail.");
|
|
}
|
|
}
|
|
};
|
|
|
|
var goodStrings = [
|
|
"[::1]:27999",
|
|
"localhost:27999",
|
|
"127.0.0.1:27999",
|
|
"[0:0:0:0:0:0:0:1]:27999",
|
|
"[0000:0000:0000:0000:0000:0000:0000:0001]:27999",
|
|
];
|
|
|
|
var goodSocketStrings = [
|
|
"/tmp/mongodb-27999.sock",
|
|
];
|
|
|
|
var badStrings = [
|
|
"::1:27999",
|
|
"::1:65536",
|
|
"::1]:27999",
|
|
":",
|
|
":27999",
|
|
"[::1:]27999",
|
|
"[::1:27999",
|
|
"[::1]:",
|
|
"[::1]:123456",
|
|
"[::1]:1cat",
|
|
"[::1]:65536",
|
|
"[::1]:cat",
|
|
"0:0::0:0:1:27999",
|
|
"0000:0000:0000:0000:0000:0000:0000:0001:27999",
|
|
"127.0.0.1:",
|
|
"127.0.0.1:123456",
|
|
"127.0.0.1:1cat",
|
|
"127.0.0.1:65536",
|
|
"127.0.0.1:cat",
|
|
"a[::1:]27999",
|
|
"a[127.0.0.1]:27999",
|
|
"localhost:",
|
|
];
|
|
|
|
function runUriTestFor(i, connectionString, isGood) {
|
|
connectionString = connectionString.replace("27999", "" + port);
|
|
print("Testing " + (isGood ? "good" : "bad") + " connection string " + i + "...");
|
|
print(" * testing " + connectionString);
|
|
testHost(connectionString, isGood);
|
|
print(" * testing mongodb://" + encodeURIComponent(connectionString));
|
|
testHost("mongodb://" + encodeURIComponent(connectionString), isGood);
|
|
}
|
|
|
|
var i;
|
|
jsTest.log("TESTING " + goodStrings.length + " good uri strings");
|
|
for (i = 0; i < goodStrings.length; ++i) {
|
|
runUriTestFor(i, goodStrings[i], true);
|
|
}
|
|
|
|
if (!_isWindows()) {
|
|
jsTest.log("TESTING " + goodSocketStrings.length + " good uri socket strings");
|
|
for (i = 0; i < goodSocketStrings.length; ++i) {
|
|
runUriTestFor(i, goodSocketStrings[i], true);
|
|
}
|
|
}
|
|
|
|
jsTest.log("TESTING " + badStrings.length + " bad uri strings");
|
|
for (i = 0; i < badStrings.length; ++i) {
|
|
runUriTestFor(i, badStrings[i], false);
|
|
}
|
|
|
|
jsTest.log("SUCCESSFUL test completion");
|
|
})();
|