// // Tests write-concern-related batch write protocol functionality for master/slave replication // More general write concern tests in replsets/batch_write_command_wc.js // var request; var result; // NOTE: ALL TESTS BELOW SHOULD BE SELF-CONTAINED, FOR EASIER DEBUGGING jsTest.log("Starting legacy repl tests..."); // Start a master node // Allows testing legacy repl failures var mongod = MongoRunner.runMongod({ master : "", oplogSize : 40, smallfiles : "" }); var coll = mongod.getCollection("test.batch_write_command_wc_repl"); // // Basic insert, default WC coll.remove({}); printjson( request = {insert : coll.getName(), documents: [{a:1}]}); printjson( result = coll.runCommand(request) ); assert(result.ok); assert.eq(1, result.n); assert.eq(1, coll.count()); // // Basic insert, majority WC coll.remove({}); printjson( request = {insert : coll.getName(), documents: [{a:1}], writeConcern: {w: 'majority'}}); printjson( result = coll.runCommand(request) ); assert(result.ok); assert.eq(1, result.n); assert.eq(1, coll.count()); // // Basic insert, immediate bad wMode error coll.remove({}); printjson( request = {insert : coll.getName(), documents: [{a:1}], writeConcern: {w: 'invalid'}}); printjson( result = coll.runCommand(request) ); assert(!result.ok); assert.eq(0, coll.count()); // // Basic insert, error on WC with wtimeout coll.remove({}); printjson( request = {insert : coll.getName(), documents: [{a:1}], writeConcern: {w:2, wtimeout: 1}}); printjson( result = coll.runCommand(request) ); assert(result.ok); assert.eq(1, result.n); assert(result.writeConcernError); assert(result.writeConcernError.errInfo.wtimeout); assert.eq(1, coll.count()); jsTest.log("DONE legacy repl tests"); MongoRunner.stopMongod(mongod);