This is just a cleanup work to hide some of the private state of ReplSetTest so it is easier to encapsulate and add new logic. Also enables strict mode.
50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
// Tests tracing where a document was inserted
|
|
load('jstests/libs/trace_missing_docs.js');
|
|
|
|
(function() {
|
|
'use strict';
|
|
|
|
var testDocMissing = function(useReplicaSet) {
|
|
var options = { rs: useReplicaSet,
|
|
shardOptions: { master: "", oplogSize: 10 },
|
|
rsOptions: { nodes: 1, oplogSize: 10 } };
|
|
|
|
var st = new ShardingTest({ shards: 2, mongos: 1, other: options });
|
|
|
|
var mongos = st.s0;
|
|
var coll = mongos.getCollection("foo.bar");
|
|
var admin = mongos.getDB("admin");
|
|
var shards = mongos.getCollection("config.shards").find().toArray();
|
|
|
|
assert.commandWorked(admin.runCommand({ enableSharding: coll.getDB() + "" }));
|
|
st.ensurePrimaryShard(coll.getDB() + "", shards[0]._id);
|
|
|
|
coll.ensureIndex({ sk: 1 });
|
|
assert.commandWorked(admin.runCommand({ shardCollection: coll + "", key: { sk: 1 } }));
|
|
|
|
assert.writeOK(coll.insert({ _id: 12345, sk: 67890, hello: "world" }));
|
|
assert.writeOK(coll.update({ _id: 12345 }, { $set: { baz: 'biz' } }));
|
|
assert.writeOK(coll.update({ sk: 67890 }, { $set: { baz: 'boz' } }));
|
|
|
|
assert.commandWorked(admin.runCommand({ moveChunk: coll + "",
|
|
find: { sk: 0 },
|
|
to: shards[1]._id,
|
|
_waitForDelete: true }));
|
|
|
|
st.printShardingStatus();
|
|
|
|
var ops = traceMissingDoc(coll, { _id: 12345, sk: 67890 });
|
|
|
|
assert.eq(ops[0].op, 'i');
|
|
assert.eq(ops.length, 5);
|
|
|
|
jsTest.log("DONE! " + (useReplicaSet ? "(using rs)": "(using master/slave)"));
|
|
|
|
st.stop();
|
|
};
|
|
|
|
testDocMissing(true);
|
|
testDocMissing(false);
|
|
|
|
})();
|