summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordwight <dwight@dwights-MacBook-Pro.local>2010-07-30 11:09:00 -0400
committerdwight <dwight@dwights-MacBook-Pro.local>2010-07-30 11:09:00 -0400
commit2b8634ff6e9414bf22f1812f624d8925f369b939 (patch)
tree174e977060c9655c2f72658771e9cac1da38a9ce
parent78fc92c7bcf7ca04427f8f049e6f8581fc7f26a5 (diff)
parentdb8b0eb35e935df858efccb9f5d5be1adc754ad1 (diff)
downloadmongo-2b8634ff6e9414bf22f1812f624d8925f369b939.tar.gz
Merge branch 'master' of git@github.com:mongodb/mongo
-rw-r--r--jstests/replsets/replsetrestart1.js (renamed from jstests/replsets/replsetrestart.js)0
-rw-r--r--jstests/replsets/replsetrestart2.js46
-rw-r--r--jstests/replsets/sync1.js3
-rw-r--r--shell/servers.js14
4 files changed, 61 insertions, 2 deletions
diff --git a/jstests/replsets/replsetrestart.js b/jstests/replsets/replsetrestart1.js
index 65adaf4ae4b..65adaf4ae4b 100644
--- a/jstests/replsets/replsetrestart.js
+++ b/jstests/replsets/replsetrestart1.js
diff --git a/jstests/replsets/replsetrestart2.js b/jstests/replsets/replsetrestart2.js
new file mode 100644
index 00000000000..a383b341b4f
--- /dev/null
+++ b/jstests/replsets/replsetrestart2.js
@@ -0,0 +1,46 @@
+// config saved on shutdown
+
+var compare_configs = function(c1, c2) {
+ assert(c1.version == c2.version, 'version same');
+ assert(c1._id == c2._id, '_id same');
+
+ printjson(c1);
+ printjson(c2);
+
+ for (var i in c1.members) {
+ assert(c2.members[i] !== undefined, 'field '+i+' exists in both configs');
+ assert(c1.members[i]._id == c2.members[i]._id, 'id is equal in both configs');
+ assert(c1.members[i].host == c2.members[i].host, 'id is equal in both configs');
+ }
+}
+
+doTest = function( signal ) {
+ var replTest = new ReplSetTest( {name: 'testSet', nodes: 3} );
+ replTest.startSet();
+
+ sleep(5000);
+
+ replTest.initiate();
+
+ sleep(5000);
+
+ var master = replTest.getMaster();
+ var config = master.getDB("local").system.replset.findOne();
+
+ replTest.stopSet( signal );
+
+ replTest.restart(0);
+ replTest.restart(1);
+ replTest.restart(2);
+
+ sleep(5000);
+
+ master = replTest.getMaster();
+ var config2 = master.getDB("local").system.replset.findOne();
+
+ compare_configs(config, config2);
+
+ replTest.stopSet( signal );
+}
+
+doTest( 15 );
diff --git a/jstests/replsets/sync1.js b/jstests/replsets/sync1.js
index 2732ea39739..a07bcf9782a 100644
--- a/jstests/replsets/sync1.js
+++ b/jstests/replsets/sync1.js
@@ -72,8 +72,7 @@ doTest = function( signal ) {
count++;
if (count == 100) {
- print("replsets/sync1.js fails timing out");
- assert(false);
+ assert(false, "replsets/sync1.js fails timing out");
break;
}
} while (max1.z != max2.z);
diff --git a/shell/servers.js b/shell/servers.js
index e6e03551bf6..1f66780b428 100644
--- a/shell/servers.js
+++ b/shell/servers.js
@@ -1158,6 +1158,14 @@ ReplSetTest.prototype.awaitReplication = function() {
});
}
+/**
+ * Starts up a server.
+ *
+ * @param {int} n server number (0, 1, 2, ...)
+ * @param {object} [options]
+ * @param {boolean} [restart] If false, the data directory will be cleared
+ * before the server starts. Defaults to false.
+ */
ReplSetTest.prototype.start = function( n , options , restart ){
var lockFile = this.getPath( n ) + "/mongod.lock";
removeFile( lockFile );
@@ -1172,6 +1180,12 @@ ReplSetTest.prototype.start = function( n , options , restart ){
}
}
+/**
+ * Restarts a db without clearing the data directory. If the server is not
+ * stopped first, this function will not work.
+ *
+ * @param {int} n server number (0, 1, 2, ...)
+ */
ReplSetTest.prototype.restart = function( n , options ){
return this.start( n , options , true );
}