summaryrefslogtreecommitdiff
path: root/jstests/replsets/replset5.js
diff options
context:
space:
mode:
authorKyle Banker <kylebanker@gmail.com>2010-08-10 13:31:42 -0400
committerKyle Banker <kylebanker@gmail.com>2010-08-10 13:31:42 -0400
commitb3f64d75e761c8badf2f9f9da0729f0224178963 (patch)
tree073f40dbe523be31bfed3acbc48812d623a0b5dc /jstests/replsets/replset5.js
parent4d42a72c3d24a3102e35c55aaf495cb999e134b6 (diff)
downloadmongo-b3f64d75e761c8badf2f9f9da0729f0224178963.tar.gz
SERVER-1598 test getLastErrorDefaults
Diffstat (limited to 'jstests/replsets/replset5.js')
-rw-r--r--jstests/replsets/replset5.js69
1 files changed, 65 insertions, 4 deletions
diff --git a/jstests/replsets/replset5.js b/jstests/replsets/replset5.js
index dbc2b149b21..8ebd50db331 100644
--- a/jstests/replsets/replset5.js
+++ b/jstests/replsets/replset5.js
@@ -1,14 +1,75 @@
doTest = function( signal ) {
- // Test startup with seed list
- var replTest = new ReplSetTest( {name: 'testSet', nodes: 3, useSeedList: true} );
+ // Test getLastError defaults
+ var replTest = new ReplSetTest( {name: 'testSet', nodes: 3} );
var nodes = replTest.startSet();
- replTest.initiate();
+
+ // Initiate set with default for getLastError
+ var config = replTest.getReplSetConfig();
+ config.getLastErrorDefaults = {'w': 3, 'wtimeout': 10000};
+
+ replTest.initiate( config );
+
+ //
+ var master = replTest.getMaster();
+ replTest.awaitSecondaryNodes();
+ var testDB = "foo";
+
+ // Initial replication
+ master.getDB(testDB).bar.save({a: 1});
+ replTest.awaitReplication();
+
+ var slaves = replTest.liveNodes.slaves;
+
+ // These writes should be replicated immediately
+ master.getDB(testDB).foo.insert({n: 1});
+ master.getDB(testDB).foo.insert({n: 2});
+ master.getDB(testDB).foo.insert({n: 3});
+
+ // *** NOTE ***: The slaves have the data when I run this:
+ master.getDB("admin").runCommand({getlasterror: 1, w: 3, wtimeout: 5000});
+
+ // But when I run the test with no defaults, they don't:
+ // master.getDB("admin").runCommand({getlasterror: 1});
+
+ slaves[0].setSlaveOk();
+ slaves[1].setSlaveOk();
+
+ print("Testing slave I");
+
+ var s0 = slaves[0].getDB(testDB).foo.find();
+ assert(s0.next()['n']);
+ assert(s0.next()['n']);
+ assert(s0.next()['n']);
+
+ print("Testing slave II");
+
+ var s1 = slaves[1].getDB(testDB).foo.find();
+ assert(s1.next()['n']);
+ assert(s1.next()['n']);
+ assert(s1.next()['n']);
+
+ // Let's re-initialize the replica set with a new getlasterror
+ var config = replTest.getReplSetConfig();
+ var c = master.getDB("local")['system.replset'].findOne();
+ printjson( c );
+ config.getLastErrorDefaults = {'w': 5, 'wtimeout': 1000000};
+ config.version = c.version + 1;
+
+
+ print("Reinitiating");
+ replTest.initiate( config , 'replSetReconfig' );
+
var master = replTest.getMaster();
+ master.getDB(testDB).baz.insert({n: 3});
+
+ // *** NOTE ***: This should never return given the timeout set above, but it returns right away.
+ master.getDB(testDB).runCommand({getlasterror: 1, w: 5, wtimeout: 5000000});
+
// End test
replTest.stopSet( signal );
}
-doTest( 15 );
+// doTest( 15 );