summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron <aaron@10gen.com>2009-04-03 15:06:08 -0400
committerAaron <aaron@10gen.com>2009-04-03 15:06:08 -0400
commitebaf4292d6a78eb84ef027380beedb829b278082 (patch)
treeb82d2a3a8553fccd2f55701fa9358cb193ce9416
parent15abe0c3887c77d780ee6d9bae0731c04ab8bbb0 (diff)
downloadmongo-ebaf4292d6a78eb84ef027380beedb829b278082.tar.gz
disconnect / reconnect one node at a time
-rw-r--r--jstests/repl/pair3.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/jstests/repl/pair3.js b/jstests/repl/pair3.js
index e406223864b..eb7038a7bba 100644
--- a/jstests/repl/pair3.js
+++ b/jstests/repl/pair3.js
@@ -107,6 +107,80 @@ doTest = function() {
return ( lm == -3 );
} );
+ // reconnect
+ connect();
+ assert.soon( function() {
+ lm = ismaster( l );
+ rm = ismaster( r );
+
+ assert( lm == -3 || lm == 0, "lm value invalid" );
+ assert( rm == -3 || rm == 1, "rm value invalid" );
+
+ return ( lm == 0 && rm == 1 );
+ } );
+
+ // disconnect l ( slave )
+
+ stopMongoProgram( alPort );
+ stopMongoProgram( lpPort );
+ stopMongoProgram( rpPort );
+
+ assert.soon( function() {
+ lm = ismaster( l );
+ rm = ismaster( r );
+
+ assert( lm == 0 || lm == -3, "lm value invalid" );
+ assert( rm == 1, "rm value invalid" );
+
+ return ( lm == -3 );
+ } );
+
+ // reconnect l
+
+ startMongoProgram( "mongobridge", "--port", alPort, "--dest", "localhost:" + aPort );
+ startMongoProgram( "mongobridge", "--port", lpPort, "--dest", "localhost:" + lPort );
+ startMongoProgram( "mongobridge", "--port", rpPort, "--dest", "localhost:" + rPort );
+
+ assert.soon( function() {
+ lm = ismaster( l );
+ rm = ismaster( r );
+
+ assert( lm == 0 || lm == -3, "lm value invalid" );
+ assert( rm == 1, "rm value invalid" );
+
+ return ( lm == 0 );
+ } );
+
+ // disconnect r ( master )
+ stopMongoProgram( arPort );
+ stopMongoProgram( lpPort );
+ stopMongoProgram( rpPort );
+
+ assert.soon( function() {
+ lm = ismaster( l );
+ rm = ismaster( r );
+
+ assert( lm == 0 || lm == 1, "lm value invalid" );
+ assert( rm == 1 || rm == -3, "rm value invalid" );
+
+ return ( rm == -3 && lm == 1 );
+ } );
+
+ // reconnect r
+ startMongoProgram( "mongobridge", "--port", arPort, "--dest", "localhost:" + aPort );
+ startMongoProgram( "mongobridge", "--port", lpPort, "--dest", "localhost:" + lPort );
+ startMongoProgram( "mongobridge", "--port", rpPort, "--dest", "localhost:" + rPort );
+
+ assert.soon( function() {
+ lm = ismaster( l );
+ rm = ismaster( r );
+
+ assert( rm == 0 || rm == -3, "lm value invalid" );
+ assert( lm == 1, "rm value invalid" );
+
+ return ( rm == 0 );
+ } );
+
}
doTest();