summaryrefslogtreecommitdiff
path: root/jstests/replsets/batch_write_command_wc.js
diff options
context:
space:
mode:
authorVesselina Ratcheva <vesselina.ratcheva@10gen.com>2018-01-18 14:51:55 -0500
committerVesselina Ratcheva <vesselina.ratcheva@10gen.com>2018-01-18 14:51:55 -0500
commit06b9e9ebf9778293b8425093ada0aa1eb83b594e (patch)
treeffbeaea0dbeff8e6fd2305e0269d7541a4794741 /jstests/replsets/batch_write_command_wc.js
parentb1ef36a8024055f1402a6566f3751b61500ccbc4 (diff)
downloadmongo-06b9e9ebf9778293b8425093ada0aa1eb83b594e.tar.gz
Revert "SERVER-30347 Fail startup when running wiredTiger with --nojournal as part of a replica set"
This reverts commit 35c44dbd37c0167cc07420c8ea286ad6edfac7ff.
Diffstat (limited to 'jstests/replsets/batch_write_command_wc.js')
-rw-r--r--jstests/replsets/batch_write_command_wc.js286
1 files changed, 149 insertions, 137 deletions
diff --git a/jstests/replsets/batch_write_command_wc.js b/jstests/replsets/batch_write_command_wc.js
index ce6adcd1cb6..fc9a1f5db61 100644
--- a/jstests/replsets/batch_write_command_wc.js
+++ b/jstests/replsets/batch_write_command_wc.js
@@ -4,153 +4,165 @@
// so cannot be run on the ephemeralForTest storage engine, as it accepts all journaled writes.
// @tags: [SERVER-21420]
-(function() {
+var request;
+var result;
- // Skip this test if running with the "wiredTiger" storage engine, since it requires
- // using 'nojournal' in a replica set, which is not supported when using WT.
- if (!jsTest.options().storageEngine || jsTest.options().storageEngine == "wiredTiger") {
- // WT is currently the default engine so it is used when 'storageEngine' is not set.
- jsTest.log("Skipping test because it is not applicable for the wiredTiger storage engine");
- return;
- }
+// NOTE: ALL TESTS BELOW SHOULD BE SELF-CONTAINED, FOR EASIER DEBUGGING
- var request;
- var result;
+jsTest.log("Starting no journal/repl set tests...");
- // NOTE: ALL TESTS BELOW SHOULD BE SELF-CONTAINED, FOR EASIER DEBUGGING
+// Start a single-node replica set with no journal
+// Allows testing immediate write concern failures and wc application failures
+var rst = new ReplSetTest({nodes: 2});
+rst.startSet({nojournal: ""});
+rst.initiate();
+var mongod = rst.getPrimary();
+var coll = mongod.getCollection("test.batch_write_command_wc");
- jsTest.log("Starting no journal/repl set tests...");
-
- // Start a single-node replica set with no journal
- // Allows testing immediate write concern failures and wc application failures
- var rst = new ReplSetTest({nodes: 2});
- rst.startSet({nojournal: ""});
- rst.initiate();
- var mongod = rst.getPrimary();
- var coll = mongod.getCollection("test.batch_write_command_wc");
-
- //
- // 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.find().itcount());
-
- //
- // 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.find().itcount());
-
- //
- // Basic insert, w:2 WC
- coll.remove({});
- printjson(request = {insert: coll.getName(), documents: [{a: 1}], writeConcern: {w: 2}});
- printjson(result = coll.runCommand(request));
- assert(result.ok);
- assert.eq(1, result.n);
- assert.eq(1, coll.find().itcount());
+//
+// 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.find().itcount());
- //
- // Basic insert, immediate nojournal error
- coll.remove({});
- printjson(request = {insert: coll.getName(), documents: [{a: 1}], writeConcern: {j: true}});
- printjson(result = coll.runCommand(request));
- assert(!result.ok);
- assert.eq(0, coll.find().itcount());
+//
+// 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.find().itcount());
- //
- // Basic insert, timeout wc error
- coll.remove({});
- printjson(
- request = {insert: coll.getName(), documents: [{a: 1}], writeConcern: {w: 3, wtimeout: 1}});
- printjson(result = coll.runCommand(request));
- assert(result.ok);
- assert.eq(1, result.n);
- assert(result.writeConcernError);
- assert.eq(100, result.writeConcernError.code);
- assert.eq(1, coll.find().itcount());
+//
+// Basic insert, w:2 WC
+coll.remove({});
+printjson(request = {
+ insert: coll.getName(),
+ documents: [{a: 1}],
+ writeConcern: {w: 2}
+});
+printjson(result = coll.runCommand(request));
+assert(result.ok);
+assert.eq(1, result.n);
+assert.eq(1, coll.find().itcount());
- //
- // Basic insert, wmode wc error
- coll.remove({});
- printjson(
- request = {insert: coll.getName(), documents: [{a: 1}], writeConcern: {w: 'invalid'}});
- printjson(result = coll.runCommand(request));
- assert(result.ok);
- assert.eq(1, result.n);
- assert(result.writeConcernError);
- assert.eq(1, coll.find().itcount());
+//
+// Basic insert, immediate nojournal error
+coll.remove({});
+printjson(request = {
+ insert: coll.getName(),
+ documents: [{a: 1}],
+ writeConcern: {j: true}
+});
+printjson(result = coll.runCommand(request));
+assert(!result.ok);
+assert.eq(0, coll.find().itcount());
- //
- // Two ordered inserts, write error and wc error both reported
- coll.remove({});
- printjson(request = {
- insert: coll.getName(),
- documents: [{a: 1}, {$invalid: 'doc'}],
- writeConcern: {w: 'invalid'}
- });
- printjson(result = coll.runCommand(request));
- assert(result.ok);
- assert.eq(1, result.n);
- assert.eq(result.writeErrors.length, 1);
- assert.eq(result.writeErrors[0].index, 1);
- assert(result.writeConcernError);
- assert.eq(1, coll.find().itcount());
+//
+// Basic insert, timeout wc error
+coll.remove({});
+printjson(request = {
+ insert: coll.getName(),
+ documents: [{a: 1}],
+ writeConcern: {w: 3, wtimeout: 1}
+});
+printjson(result = coll.runCommand(request));
+assert(result.ok);
+assert.eq(1, result.n);
+assert(result.writeConcernError);
+assert.eq(100, result.writeConcernError.code);
+assert.eq(1, coll.find().itcount());
- //
- // Two unordered inserts, write error and wc error reported
- coll.remove({});
- printjson(request = {
- insert: coll.getName(),
- documents: [{a: 1}, {$invalid: 'doc'}],
- writeConcern: {w: 'invalid'},
- ordered: false
- });
- printjson(result = coll.runCommand(request));
- assert(result.ok);
- assert.eq(1, result.n);
- assert.eq(result.writeErrors.length, 1);
- assert.eq(result.writeErrors[0].index, 1);
- assert(result.writeConcernError);
- assert.eq(1, coll.find().itcount());
+//
+// Basic insert, wmode wc error
+coll.remove({});
+printjson(request = {
+ insert: coll.getName(),
+ documents: [{a: 1}],
+ writeConcern: {w: 'invalid'}
+});
+printjson(result = coll.runCommand(request));
+assert(result.ok);
+assert.eq(1, result.n);
+assert(result.writeConcernError);
+assert.eq(1, coll.find().itcount());
- //
- // Write error with empty writeConcern object.
- coll.remove({});
- request =
- {insert: coll.getName(), documents: [{_id: 1}, {_id: 1}], writeConcern: {}, ordered: false};
- result = coll.runCommand(request);
- assert(result.ok);
- assert.eq(1, result.n);
- assert.eq(result.writeErrors.length, 1);
- assert.eq(result.writeErrors[0].index, 1);
- assert.eq(null, result.writeConcernError);
- assert.eq(1, coll.find().itcount());
+//
+// Two ordered inserts, write error and wc error both reported
+coll.remove({});
+printjson(request = {
+ insert: coll.getName(),
+ documents: [{a: 1}, {$invalid: 'doc'}],
+ writeConcern: {w: 'invalid'}
+});
+printjson(result = coll.runCommand(request));
+assert(result.ok);
+assert.eq(1, result.n);
+assert.eq(result.writeErrors.length, 1);
+assert.eq(result.writeErrors[0].index, 1);
+assert(result.writeConcernError);
+assert.eq(1, coll.find().itcount());
- //
- // Write error with unspecified w.
- coll.remove({});
- request = {
- insert: coll.getName(),
- documents: [{_id: 1}, {_id: 1}],
- writeConcern: {wtimeout: 1},
- ordered: false
- };
- result = assert.commandWorkedIgnoringWriteErrors(coll.runCommand(request));
- assert.eq(1, result.n);
- assert.eq(result.writeErrors.length, 1);
- assert.eq(result.writeErrors[0].index, 1);
- assert.eq(null, result.writeConcernError);
- assert.eq(1, coll.find().itcount());
+//
+// Two unordered inserts, write error and wc error reported
+coll.remove({});
+printjson(request = {
+ insert: coll.getName(),
+ documents: [{a: 1}, {$invalid: 'doc'}],
+ writeConcern: {w: 'invalid'},
+ ordered: false
+});
+printjson(result = coll.runCommand(request));
+assert(result.ok);
+assert.eq(1, result.n);
+assert.eq(result.writeErrors.length, 1);
+assert.eq(result.writeErrors[0].index, 1);
+assert(result.writeConcernError);
+assert.eq(1, coll.find().itcount());
- jsTest.log("DONE no journal/repl tests");
- rst.stopSet();
+//
+// Write error with empty writeConcern object.
+coll.remove({});
+request = {
+ insert: coll.getName(),
+ documents: [{_id: 1}, {_id: 1}],
+ writeConcern: {},
+ ordered: false
+};
+result = coll.runCommand(request);
+assert(result.ok);
+assert.eq(1, result.n);
+assert.eq(result.writeErrors.length, 1);
+assert.eq(result.writeErrors[0].index, 1);
+assert.eq(null, result.writeConcernError);
+assert.eq(1, coll.find().itcount());
-})();
+//
+// Write error with unspecified w.
+coll.remove({});
+request = {
+ insert: coll.getName(),
+ documents: [{_id: 1}, {_id: 1}],
+ writeConcern: {wtimeout: 1},
+ ordered: false
+};
+result = assert.commandWorkedIgnoringWriteErrors(coll.runCommand(request));
+assert.eq(1, result.n);
+assert.eq(result.writeErrors.length, 1);
+assert.eq(result.writeErrors[0].index, 1);
+assert.eq(null, result.writeConcernError);
+assert.eq(1, coll.find().itcount());
+
+jsTest.log("DONE no journal/repl tests");
+rst.stopSet();