summaryrefslogtreecommitdiff
path: root/jstests/sharding/max_time_ms_sharded_new_commands.js
blob: c8072359ce1b9876cc7107a73f7fbcca90e60525 (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Make sure the setFeatureCompatibilityVersion command respects maxTimeMs.
(function() {
    'use strict';
    load("./jstests/libs/feature_compatibility_version.js");
    var st = new ShardingTest({shards: 2});

    var mongos = st.s0;
    var shards = [st.shard0, st.shard1];
    var coll = mongos.getCollection("foo.bar");
    var admin = mongos.getDB("admin");
    var cursor;
    var res;

    // Helper function to configure "maxTimeAlwaysTimeOut" fail point on shards, which forces mongod
    // to throw if it receives an operation with a max time.  See fail point declaration for
    // complete description.
    var configureMaxTimeAlwaysTimeOut = function(mode) {
        assert.commandWorked(shards[0].getDB("admin").runCommand(
            {configureFailPoint: "maxTimeAlwaysTimeOut", mode: mode}));
        assert.commandWorked(shards[1].getDB("admin").runCommand(
            {configureFailPoint: "maxTimeAlwaysTimeOut", mode: mode}));
    };

    // Positive test for "setFeatureCompatibilityVersion"
    configureMaxTimeAlwaysTimeOut("alwaysOn");
    assert.commandFailedWithCode(
        admin.runCommand(
            {setFeatureCompatibilityVersion: lastStableFCV, maxTimeMS: 1000 * 60 * 60 * 24}),
        ErrorCodes.MaxTimeMSExpired,
        "expected setFeatureCompatibilityVersion to fail due to maxTimeAlwaysTimeOut fail point");

    // Negative test for "setFeatureCompatibilityVersion"
    configureMaxTimeAlwaysTimeOut("off");
    assert.commandWorked(
        admin.runCommand(
            {setFeatureCompatibilityVersion: lastStableFCV, maxTimeMS: 1000 * 60 * 60 * 24}),
        "expected setFeatureCompatibilityVersion to not hit time limit in mongod");

    assert.commandWorked(
        admin.runCommand(
            {setFeatureCompatibilityVersion: latestFCV, maxTimeMS: 1000 * 60 * 60 * 24}),
        "expected setFeatureCompatibilityVersion to not hit time limit in mongod");

    st.stop();
})();