diff options
author | Kyle Banker <kylebanker@gmail.com> | 2010-08-10 13:31:42 -0400 |
---|---|---|
committer | Kyle Banker <kylebanker@gmail.com> | 2010-08-10 13:31:42 -0400 |
commit | b3f64d75e761c8badf2f9f9da0729f0224178963 (patch) | |
tree | 073f40dbe523be31bfed3acbc48812d623a0b5dc /jstests/replsets/replset5.js | |
parent | 4d42a72c3d24a3102e35c55aaf495cb999e134b6 (diff) | |
download | mongo-b3f64d75e761c8badf2f9f9da0729f0224178963.tar.gz |
SERVER-1598 test getLastErrorDefaults
Diffstat (limited to 'jstests/replsets/replset5.js')
-rw-r--r-- | jstests/replsets/replset5.js | 69 |
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 ); |