summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Russell <gabriel.russell@mongodb.com>2016-05-25 11:24:15 -0400
committerGabriel Russell <gabriel.russell@mongodb.com>2016-06-02 14:04:41 -0400
commite7ab7280a24eb71f6915feb30f44050a54322a81 (patch)
tree154961413a1f890d4301fc5448e35703e64fa4cf
parent69d179fa2e15900431681e45394f155d69056f56 (diff)
downloadmongo-e7ab7280a24eb71f6915feb30f44050a54322a81.tar.gz
SERVER-23742 use dialTimeout with supported tools versions
-rw-r--r--src/mongo/shell/servers.js31
-rw-r--r--src/mongo/shell/servers_misc.js10
2 files changed, 39 insertions, 2 deletions
diff --git a/src/mongo/shell/servers.js b/src/mongo/shell/servers.js
index 6bfc15d945d..fc536a3cd82 100644
--- a/src/mongo/shell/servers.js
+++ b/src/mongo/shell/servers.js
@@ -825,7 +825,7 @@ var MongoRunner, _startMongod, startMongoProgram, runMongoProgram, startMongoPro
// connecting for up to 30 seconds to handle when the tests are run on a
// resource-constrained host machine.
if (!opts.hasOwnProperty('dialTimeout') &&
- MongoRunner.getBinVersionFor(opts.binVersion) === '') {
+ _toolVersionSupportsDialTimeout(opts.binVersion)) {
opts['dialTimeout'] = '30';
}
@@ -835,6 +835,35 @@ var MongoRunner, _startMongod, startMongoProgram, runMongoProgram, startMongoPro
};
+ var _toolVersionSupportsDialTimeout = function(version) {
+ if (version === "latest" || version === "") {
+ return true;
+ }
+ var versionParts =
+ convertVersionStringToArray(version).slice(0, 3).map(part => parseInt(part, 10));
+ if (versionParts.length === 2) {
+ versionParts.push(Infinity);
+ }
+
+ if (versionParts[0] > 3 || (versionParts[0] === 3 && versionParts[1] > 3)) {
+ // The --dialTimeout command line option is supported by the tools
+ // with a major version newer than 3.3.
+ return true;
+ }
+
+ for (var supportedVersion of["3.3.4", "3.2.5", "3.0.12"]) {
+ var supportedVersionParts = convertVersionStringToArray(supportedVersion)
+ .slice(0, 3)
+ .map(part => parseInt(part, 10));
+ if (versionParts[0] === supportedVersionParts[0] &&
+ versionParts[1] === supportedVersionParts[1] &&
+ versionParts[2] >= supportedVersionParts[2]) {
+ return true;
+ }
+ }
+ return false;
+ };
+
// Given a test name figures out a directory for that test to use for dump files and makes sure
// that directory exists and is empty.
MongoRunner.getAndPrepareDumpDirectory = function(testName) {
diff --git a/src/mongo/shell/servers_misc.js b/src/mongo/shell/servers_misc.js
index 6f3defc54a3..d4063d855ee 100644
--- a/src/mongo/shell/servers_misc.js
+++ b/src/mongo/shell/servers_misc.js
@@ -46,11 +46,14 @@ ToolTest.prototype.runTool = function() {
var a = ["mongo" + arguments[0]];
var hasdbpath = false;
+ var hasDialTimeout = false;
for (var i = 1; i < arguments.length; i++) {
a.push(arguments[i]);
- if (arguments[i] == "--dbpath")
+ if (arguments[i] === "--dbpath")
hasdbpath = true;
+ if (arguments[i] === "--dialTimeout")
+ hasDialTimeout = true;
}
if (!hasdbpath) {
@@ -58,6 +61,11 @@ ToolTest.prototype.runTool = function() {
a.push("127.0.0.1:" + this.port);
}
+ if (!hasDialTimeout) {
+ a.push("--dialTimeout");
+ a.push("30");
+ }
+
return runMongoProgram.apply(null, a);
};