summaryrefslogtreecommitdiff
path: root/jstests/replsets/rslib.js
diff options
context:
space:
mode:
authorAntonin Kral <a.kral@bobek.cz>2011-09-14 17:08:06 +0200
committerAntonin Kral <a.kral@bobek.cz>2011-09-14 17:08:06 +0200
commit5d342a758c6095b4d30aba0750b54f13b8916f51 (patch)
tree762e9aa84781f5e3b96db2c02d356c29cf0217c0 /jstests/replsets/rslib.js
parentcbe2d992e9cd1ea66af9fa91df006106775d3073 (diff)
downloadmongodb-5d342a758c6095b4d30aba0750b54f13b8916f51.tar.gz
Imported Upstream version 2.0.0
Diffstat (limited to 'jstests/replsets/rslib.js')
-rw-r--r--jstests/replsets/rslib.js44
1 files changed, 42 insertions, 2 deletions
diff --git a/jstests/replsets/rslib.js b/jstests/replsets/rslib.js
index c072829..19271c9 100644
--- a/jstests/replsets/rslib.js
+++ b/jstests/replsets/rslib.js
@@ -2,7 +2,7 @@
var count = 0;
var w = 0;
-var wait = function(f) {
+var wait = function(f,msg) {
w++;
var n = 0;
while (!f()) {
@@ -11,7 +11,7 @@ var wait = function(f) {
if (++n == 4) {
print("" + f);
}
- assert(n < 200, 'tried 200 times, giving up');
+ assert(n < 200, 'tried 200 times, giving up on ' + msg );
sleep(1000);
}
};
@@ -61,3 +61,43 @@ var getLatestOp = function(server) {
}
return null;
};
+
+
+var waitForAllMembers = function(master) {
+ var ready = false;
+ var count = 0;
+
+ outer:
+ while (count < 60) {
+ count++;
+ var state = master.getSisterDB("admin").runCommand({replSetGetStatus:1});
+ occasionally(function() { printjson(state); }, 10);
+
+ for (var m in state.members) {
+ if (state.members[m].state != 2 && state.members[m].state != 1) {
+ sleep(1000);
+ continue outer;
+ }
+ }
+ return;
+ }
+
+ assert(false, "all members not ready");
+};
+
+var reconfig = function(rs, config) {
+ var admin = rs.getMaster().getDB("admin");
+
+ try {
+ var ok = admin.runCommand({replSetReconfig : config});
+ assert.eq(ok.ok,1);
+ }
+ catch(e) {
+ print(e);
+ }
+
+ master = rs.getMaster().getDB("admin");
+ waitForAllMembers(master);
+
+ return master;
+};