0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 09:32:32 +01:00

SERVER-37930 Add test coverage for createIndexes inside nested applyOps

This commit is contained in:
Xiangyu Yao 2018-11-07 14:36:51 -05:00
parent 8c3ff92b1a
commit f83f6dbfb0

View File

@ -0,0 +1,62 @@
/**
* Test createIndexes while recursively locked in a nested applyOps.
*/
(function() {
"use strict";
let ensureIndexExists = function(testDB, collName, indexName, expectedNumIndexes) {
let cmd = {listIndexes: collName};
let res = testDB.runCommand(cmd);
assert.commandWorked(res, "could not run " + tojson(cmd));
let indexes = testDB[collName].getIndexes();
assert.eq(indexes.length, expectedNumIndexes);
let foundIndex = indexes.some(index => index.name === indexName);
assert(foundIndex,
"did not find the index '" + indexName + "' amongst the collection indexes: " +
tojson(indexes));
};
let rst = new ReplSetTest({nodes: 3});
rst.startSet();
rst.initiate();
let collName = "col";
let dbName = "nested_apply_ops_create_indexes";
let primaryTestDB = rst.getPrimary().getDB(dbName);
let cmd = {"create": collName};
let res = primaryTestDB.runCommand(cmd);
assert.commandWorked(res, "could not run " + tojson(cmd));
rst.awaitReplication();
let uuid = primaryTestDB.getCollectionInfos()[0].info.uuid;
let cmdFormatIndexNameA = "a_1";
cmd = {
applyOps: [{
op: "c",
ns: dbName + ".$cmd",
ui: uuid,
o: {
applyOps: [{
op: "c",
ns: dbName + "." + collName,
ui: uuid,
o: {
createIndexes: collName,
v: 2,
key: {a: 1},
name: cmdFormatIndexNameA
}
}]
}
}]
};
res = primaryTestDB.runCommand(cmd);
assert.commandWorked(res, "could not run " + tojson(cmd));
rst.awaitReplication();
ensureIndexExists(primaryTestDB, collName, cmdFormatIndexNameA, 2);
rst.stopSet();
})();