summaryrefslogtreecommitdiff
path: root/jstests/concurrency/fsm_workloads/auth_privilege_cache_miss.js
blob: 54f9bd2369798b4abecda34dbb75083c8d944e62 (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
'use strict';

/**
 * auth_privilege_cache_miss.js
 *
 * Validate user permission consistency during cache miss and slow load.
 *
 * @tags: [requires_fcv_47]
 */

// Use the auth_privilege_consistency workload as a base.
load('jstests/concurrency/fsm_libs/extend_workload.js');
load('jstests/concurrency/fsm_workloads/auth_privilege_consistency.js');

var $config = extendWorkload($config, function($config, $super) {
    // Override setup() to also set cache-miss and slow load failpoints.
    const kResolveRolesDelayMS = 100;

    const originalSetup = $config.setup;
    $config.setup = function(db, collName, cluster) {
        originalSetup(db, collName, cluster);

        const cacheBypass = {configureFailPoint: 'authUserCacheBypass', mode: 'alwaysOn'};

        cluster.executeOnMongosNodes(function(nodeAdminDB) {
            assert.commandWorked(nodeAdminDB.runCommand(cacheBypass));
        });

        cluster.executeOnMongodNodes(function(nodeAdminDB) {
            assert.commandWorked(nodeAdminDB.runCommand(cacheBypass));
            assert.commandWorked(nodeAdminDB.runCommand({
                configureFailPoint: 'authLocalGetUser',
                mode: 'alwaysOn',
                data: {resolveRolesDelayMS: NumberInt(kResolveRolesDelayMS)}
            }));
        });
    };

    return $config;
});