63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
/**
|
|
* 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();
|
|
})();
|