summaryrefslogtreecommitdiff
path: root/jstests/noPassthroughWithMongod
diff options
context:
space:
mode:
authorJonathan Reams <jbreams@mongodb.com>2017-01-10 15:37:04 -0500
committerJonathan Reams <jbreams@mongodb.com>2017-01-12 11:26:24 -0500
commitf3d5da919580d6ab7a332fab604b056451994af3 (patch)
treea1a7275a102da72c8c1b7db7e963db8183cf3c9e /jstests/noPassthroughWithMongod
parente3cf6a7d9f6e0320c1e23b3d7d935f880d70869f (diff)
downloadmongo-f3d5da919580d6ab7a332fab604b056451994af3.tar.gz
SERVER-27576 Fix quit() in shell and all the tests that depend on it
Diffstat (limited to 'jstests/noPassthroughWithMongod')
-rw-r--r--jstests/noPassthroughWithMongod/host_connection_string_validation.js204
-rw-r--r--jstests/noPassthroughWithMongod/ipv6_connection_string_validation.js296
-rw-r--r--jstests/noPassthroughWithMongod/replset_host_connection_validation.js11
3 files changed, 255 insertions, 256 deletions
diff --git a/jstests/noPassthroughWithMongod/host_connection_string_validation.js b/jstests/noPassthroughWithMongod/host_connection_string_validation.js
index bb6bba625dd..a252ef39230 100644
--- a/jstests/noPassthroughWithMongod/host_connection_string_validation.js
+++ b/jstests/noPassthroughWithMongod/host_connection_string_validation.js
@@ -1,115 +1,115 @@
// 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"});
+ 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);
-// 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"});
- 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);
-
- // Stop the server we started
- jsTest.log("Outer mode test stopping server");
- MongoRunner.stopMongod(mongod.port, 15);
-
- // Pass the inner test's exit code back as the outer test's exit code
- quit(exitCode);
-}
-
-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.");
+ // 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 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 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 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:",
-];
+ 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://" + connectionString);
- testHost("mongodb://" + connectionString, isGood);
-}
+ 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://" + connectionString);
+ testHost("mongodb://" + connectionString, isGood);
+ }
-var i;
-jsTest.log("TESTING " + goodStrings.length + " good uri strings");
-for (i = 0; i < goodStrings.length; ++i) {
- runUriTestFor(i, goodStrings[i], true);
-}
+ 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);
+ 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("TESTING " + badStrings.length + " bad uri strings");
+ for (i = 0; i < badStrings.length; ++i) {
+ runUriTestFor(i, badStrings[i], false);
+ }
-jsTest.log("SUCCESSFUL test completion");
+ jsTest.log("SUCCESSFUL test completion");
+})();
diff --git a/jstests/noPassthroughWithMongod/ipv6_connection_string_validation.js b/jstests/noPassthroughWithMongod/ipv6_connection_string_validation.js
index 881c77c96d9..6d80b2aec70 100644
--- a/jstests/noPassthroughWithMongod/ipv6_connection_string_validation.js
+++ b/jstests/noPassthroughWithMongod/ipv6_connection_string_validation.js
@@ -4,162 +4,162 @@
// This file runs in two modes: outer and inner. This is to enable testing with --ipv6.
// The outer mode test starts a mongod with --ipv6 and then starts a mongo shell with --ipv6
// and a command line to run the test in inner_mode. The inner mode test is the actual test.
+(function() {
+ 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"});
+ var args = [
+ "mongo",
+ "--nodb",
+ "--ipv6",
+ "--host",
+ "::1",
+ "--port",
+ mongod.port,
+ "--eval",
+ "inner_mode=true;port=" + mongod.port + ";",
+ "jstests/noPassthroughWithMongod/ipv6_connection_string_validation.js"
+ ];
+ var exitCode = _runMongoProgram.apply(null, args);
+ jsTest.log("Inner mode test finished, exit code was " + exitCode);
-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"});
- var args = [
- "mongo",
- "--nodb",
- "--ipv6",
- "--host",
- "::1",
- "--port",
- mongod.port,
- "--eval",
- "inner_mode=true;port=" + mongod.port + ";",
- "jstests/noPassthroughWithMongod/ipv6_connection_string_validation.js"
- ];
- var exitCode = _runMongoProgram.apply(null, args);
- jsTest.log("Inner mode test finished, exit code was " + exitCode);
+ // 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;
+ }
- // Stop the server we started
- jsTest.log("Outer mode test stopping server");
- MongoRunner.stopMongod(mongod.port, 15);
+ var goodStrings = [
+ "localhost:27999/test",
+ "[::1]:27999/test",
+ "[0:0:0:0:0:0:0:1]:27999/test",
+ "[0000:0000:0000:0000:0000:0000:0000:0001]:27999/test",
+ "localhost:27999",
+ "[::1]:27999",
+ "[0:0:0:0:0:0:0:1]:27999",
+ "[0000:0000:0000:0000:0000:0000:0000:0001]:27999",
+ ];
- // Pass the inner test's exit code back as the outer test's exit code
- quit(exitCode);
-}
+ var missingConnString = /^Missing connection string$/;
+ var incorrectType = /^Incorrect type/;
+ var emptyConnString = /^Empty connection string$/;
+ var badHost = /^Failed to parse mongodb/;
+ var emptyHost = /^Empty host component/;
+ var noPort = /^No digits/;
+ var badPort = /^Bad digit/;
+ var invalidPort = /^Port number \d+ out of range/;
+ var moreThanOneColon = /^More than one ':' detected/;
+ var charBeforeSquareBracket = /^'\[' present, but not first character/;
+ var noCloseBracket = /^ipv6 address is missing closing '\]'/;
+ var noOpenBracket = /^'\]' present without '\['/;
+ var noColonPrePort = /^missing colon after '\]' before the port/;
+ var badStrings = [
+ {s: undefined, r: missingConnString},
+ {s: 7, r: incorrectType},
+ {s: null, r: incorrectType},
+ {s: "", r: emptyConnString},
+ {s: " ", r: emptyConnString},
+ {s: ":", r: emptyHost},
+ {s: "/", r: badHost},
+ {s: ":/", r: emptyHost},
+ {s: ":/test", r: emptyHost},
+ {s: ":27999/", r: emptyHost},
+ {s: ":27999/test", r: emptyHost},
+ {s: "/test", r: badHost},
+ {s: "localhost:/test", r: noPort},
+ {s: "[::1]:/test", r: noPort},
+ {s: "[::1]:cat/test", r: badPort},
+ {s: "[::1]:1cat/test", r: badPort},
+ {s: "[::1]:123456/test", r: invalidPort},
+ {s: "[::1]:65536/test", r: invalidPort},
+ {s: "127.0.0.1:65536/test", r: invalidPort},
+ {s: "::1:27999/test", r: moreThanOneColon},
+ {s: "0:0::0:0:1:27999/test", r: moreThanOneColon},
+ {s: "0000:0000:0000:0000:0000:0000:0000:0001:27999/test", r: moreThanOneColon},
+ {s: "a[127.0.0.1]:27999/", r: charBeforeSquareBracket},
+ {s: "a[::1:]27999/", r: charBeforeSquareBracket},
+ {s: "[::1:27999/", r: noCloseBracket},
+ {s: "[::1:]27999/", r: noColonPrePort},
+ {s: "::1]:27999/", r: noOpenBracket},
+ ];
-var goodStrings = [
- "localhost:27999/test",
- "[::1]:27999/test",
- "[0:0:0:0:0:0:0:1]:27999/test",
- "[0000:0000:0000:0000:0000:0000:0000:0001]:27999/test",
- "localhost:27999",
- "[::1]:27999",
- "[0:0:0:0:0:0:0:1]:27999",
- "[0000:0000:0000:0000:0000:0000:0000:0001]:27999",
-];
+ var substitutePort = function(connectionString) {
+ // This will be called with non-strings as well as strings, so we need to catch exceptions
+ try {
+ return connectionString.replace("27999", "" + port);
+ } catch (e) {
+ return connectionString;
+ }
+ };
-var missingConnString = /^Missing connection string$/;
-var incorrectType = /^Incorrect type/;
-var emptyConnString = /^Empty connection string$/;
-var badHost = /^Failed to parse mongodb/;
-var emptyHost = /^Empty host component/;
-var noPort = /^No digits/;
-var badPort = /^Bad digit/;
-var invalidPort = /^Port number \d+ out of range/;
-var moreThanOneColon = /^More than one ':' detected/;
-var charBeforeSquareBracket = /^'\[' present, but not first character/;
-var noCloseBracket = /^ipv6 address is missing closing '\]'/;
-var noOpenBracket = /^'\]' present without '\['/;
-var noColonPrePort = /^missing colon after '\]' before the port/;
-var badStrings = [
- {s: undefined, r: missingConnString},
- {s: 7, r: incorrectType},
- {s: null, r: incorrectType},
- {s: "", r: emptyConnString},
- {s: " ", r: emptyConnString},
- {s: ":", r: emptyHost},
- {s: "/", r: badHost},
- {s: ":/", r: emptyHost},
- {s: ":/test", r: emptyHost},
- {s: ":27999/", r: emptyHost},
- {s: ":27999/test", r: emptyHost},
- {s: "/test", r: badHost},
- {s: "localhost:/test", r: noPort},
- {s: "[::1]:/test", r: noPort},
- {s: "[::1]:cat/test", r: badPort},
- {s: "[::1]:1cat/test", r: badPort},
- {s: "[::1]:123456/test", r: invalidPort},
- {s: "[::1]:65536/test", r: invalidPort},
- {s: "127.0.0.1:65536/test", r: invalidPort},
- {s: "::1:27999/test", r: moreThanOneColon},
- {s: "0:0::0:0:1:27999/test", r: moreThanOneColon},
- {s: "0000:0000:0000:0000:0000:0000:0000:0001:27999/test", r: moreThanOneColon},
- {s: "a[127.0.0.1]:27999/", r: charBeforeSquareBracket},
- {s: "a[::1:]27999/", r: charBeforeSquareBracket},
- {s: "[::1:27999/", r: noCloseBracket},
- {s: "[::1:]27999/", r: noColonPrePort},
- {s: "::1]:27999/", r: noOpenBracket},
-];
+ var testGood = function(i, connectionString) {
+ print("\n---\nTesting good connection string " + i + " (\"" + connectionString + "\") ...");
+ var gotException = false;
+ var exception;
+ try {
+ var connectDB = connect(connectionString);
+ connectDB = null;
+ } catch (e) {
+ gotException = true;
+ exception = e;
+ }
+ if (!gotException) {
+ print("Good connection string " + i + " (\"" + connectionString +
+ "\") correctly validated");
+ return;
+ }
+ var message = "FAILED to correctly validate goodString " + i + " (\"" + connectionString +
+ "\"): exception was \"" + tojson(exception) + "\"";
+ doassert(message);
+ };
-var substitutePort = function(connectionString) {
- // This will be called with non-strings as well as strings, so we need to catch exceptions
- try {
- return connectionString.replace("27999", "" + port);
- } catch (e) {
- return connectionString;
- }
-};
+ var testBad = function(i, connectionString, errorRegex) {
+ print("\n---\nTesting bad connection string " + i + " (\"" + connectionString + "\") ...");
+ var gotException = false;
+ var gotCorrectErrorText = false;
+ var exception;
+ try {
+ var connectDB = connect(connectionString);
+ connectDB = null;
+ } catch (e) {
+ gotException = true;
+ exception = e;
+ if (errorRegex.test(e.message)) {
+ gotCorrectErrorText = true;
+ }
+ }
+ if (gotCorrectErrorText) {
+ print("Bad connection string " + i + " (\"" + connectionString +
+ "\") correctly rejected:\n" + tojson(exception));
+ return;
+ }
+ var message = "FAILED to generate correct exception for badString " + i + " (\"" +
+ connectionString + "\"): ";
+ if (gotException) {
+ message += "exception was \"" + tojson(exception) + "\", it should have matched \"" +
+ errorRegex.toString() + "\"";
+ } else {
+ message += "no exception was thrown";
+ }
+ doassert(message);
+ };
-var testGood = function(i, connectionString) {
- print("\n---\nTesting good connection string " + i + " (\"" + connectionString + "\") ...");
- var gotException = false;
- var exception;
- try {
- var connectDB = connect(connectionString);
- connectDB = null;
- } catch (e) {
- gotException = true;
- exception = e;
+ var i;
+ jsTest.log("TESTING " + goodStrings.length + " good connection strings");
+ for (i = 0; i < goodStrings.length; ++i) {
+ testGood(i, substitutePort(goodStrings[i]));
}
- if (!gotException) {
- print("Good connection string " + i + " (\"" + connectionString +
- "\") correctly validated");
- return;
- }
- var message = "FAILED to correctly validate goodString " + i + " (\"" + connectionString +
- "\"): exception was \"" + tojson(exception) + "\"";
- doassert(message);
-};
-var testBad = function(i, connectionString, errorRegex) {
- print("\n---\nTesting bad connection string " + i + " (\"" + connectionString + "\") ...");
- var gotException = false;
- var gotCorrectErrorText = false;
- var exception;
- try {
- var connectDB = connect(connectionString);
- connectDB = null;
- } catch (e) {
- gotException = true;
- exception = e;
- if (errorRegex.test(e.message)) {
- gotCorrectErrorText = true;
- }
+ jsTest.log("TESTING " + badStrings.length + " bad connection strings");
+ for (i = 0; i < badStrings.length; ++i) {
+ testBad(i, substitutePort(badStrings[i].s), badStrings[i].r);
}
- if (gotCorrectErrorText) {
- print("Bad connection string " + i + " (\"" + connectionString +
- "\") correctly rejected:\n" + tojson(exception));
- return;
- }
- var message = "FAILED to generate correct exception for badString " + i + " (\"" +
- connectionString + "\"): ";
- if (gotException) {
- message += "exception was \"" + tojson(exception) + "\", it should have matched \"" +
- errorRegex.toString() + "\"";
- } else {
- message += "no exception was thrown";
- }
- doassert(message);
-};
-
-var i;
-jsTest.log("TESTING " + goodStrings.length + " good connection strings");
-for (i = 0; i < goodStrings.length; ++i) {
- testGood(i, substitutePort(goodStrings[i]));
-}
-
-jsTest.log("TESTING " + badStrings.length + " bad connection strings");
-for (i = 0; i < badStrings.length; ++i) {
- testBad(i, substitutePort(badStrings[i].s), badStrings[i].r);
-}
-jsTest.log("SUCCESSFUL test completion");
+ jsTest.log("SUCCESSFUL test completion");
+})();
diff --git a/jstests/noPassthroughWithMongod/replset_host_connection_validation.js b/jstests/noPassthroughWithMongod/replset_host_connection_validation.js
index 076b5f931ae..7e48de363e2 100644
--- a/jstests/noPassthroughWithMongod/replset_host_connection_validation.js
+++ b/jstests/noPassthroughWithMongod/replset_host_connection_validation.js
@@ -19,17 +19,16 @@
"--nodb",
"--eval",
"inner_mode=true;port=" + primary.port + ";",
- "jstests/noPassthroughWithMongod/host_connection_string_validation.js"
+ "jstests/noPassthroughWithMongod/replset_host_connection_validation.js"
];
const exitCode = _runMongoProgram(...args);
jsTest.log("Inner mode test finished, exit code was " + exitCode);
- // Stop the server we started
- jsTest.log("Outer mode test stopping server");
- MongoRunner.stopMongod(primary.port, 15);
-
// Pass the inner test's exit code back as the outer test's exit code
- quit(exitCode);
+ if (exitCode != 0) {
+ doassert("inner test failed with exit code " + exitcode);
+ }
+ return;
}
const testHost = function(host) {