From 5d342a758c6095b4d30aba0750b54f13b8916f51 Mon Sep 17 00:00:00 2001 From: Antonin Kral Date: Wed, 14 Sep 2011 17:08:06 +0200 Subject: Imported Upstream version 2.0.0 --- jstests/replsets/rslib.js | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'jstests/replsets/rslib.js') 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; +}; -- cgit v1.2.3