summaryrefslogtreecommitdiff
path: root/jstests/libs/collection_drop_recreate.js
blob: 80044a5bc69999966103f26ffd5c0b24edfa9d8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
 * Attempts to drop the given collection and asserts either that the drop succeeded or the
 * collection did not exist. Avoids automatically recreating the collection in the case of test
 * suites where accessing or dropping the collection implicitly recreates it.
 */
function assertDropCollection(db, collName) {
    var cmdRes = db.runCommand({drop: collName, writeConcern: {w: "majority"}});
    assert(cmdRes.ok === 1 || cmdRes.code === ErrorCodes.NamespaceNotFound, tojson(cmdRes));
}

/**
 * Attempts to create a collection with the given name and options, if any, and asserts on failure.
 * Returns the newly-created collection on success. When running under a sharded collections
 * passthrough, the new collection will be implicitly sharded.
 */
function assertCreateCollection(db, collName, collOpts) {
    assert.commandWorked(db.createCollection(collName, collOpts));
    return db.getCollection(collName);
}

/**
 * Attempts to drop a collection with the given name and recreate it with the specified options, if
 * any. Asserts if either step fails. Returns the newly-created collection on success. When running
 * under a sharded collections passthrough, the new collection will be implicitly sharded.
 */
function assertDropAndRecreateCollection(db, collName, collOpts) {
    assertDropCollection(db, collName);
    return assertCreateCollection(db, collName, collOpts);
}