65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
//
|
|
// 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);
|
|
|