diff options
Diffstat (limited to 'jstests/concurrency/fsm_workloads/auth_drop_user.js')
-rw-r--r-- | jstests/concurrency/fsm_workloads/auth_drop_user.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/jstests/concurrency/fsm_workloads/auth_drop_user.js b/jstests/concurrency/fsm_workloads/auth_drop_user.js new file mode 100644 index 00000000000..96f41eb4160 --- /dev/null +++ b/jstests/concurrency/fsm_workloads/auth_drop_user.js @@ -0,0 +1,65 @@ +'use strict'; + +/** + * auth_drop_user.js + * + * Repeatedly creates a new user on a database, and subsequently + * drops the user from the database. + */ +var $config = (function() { + + var data = { + // Use the workload name as a prefix for the username, + // since the workload name is assumed to be unique. + prefix: 'auth_drop_user' + }; + + var states = (function() { + + function uniqueUsername(prefix, tid, num) { + return prefix + tid + '_' + num; + } + + function init(db, collName) { + this.num = 0; + } + + function createAndDropUser(db, collName) { + var username = uniqueUsername(this.prefix, this.tid, this.num++); + db.createUser({ + user: username, + pwd: 'password', + roles: ['readWrite', 'dbAdmin'] + }); + + var res = db.getUser(username); + assertAlways(res !== null, "user '" + username + "' should exist"); + assertAlways.eq(username, res.user); + assertAlways.eq(db.getName(), res.db); + + assertAlways(db.dropUser(username)); + assertAlways.isnull(db.getUser(username), + "user '" + username + "' should not exist"); + } + + return { + init: init, + createAndDropUser: createAndDropUser + }; + + })(); + + var transitions = { + init: { createAndDropUser: 1 }, + createAndDropUser: { createAndDropUser: 1 } + }; + + return { + threadCount: 10, + iterations: 20, + data: data, + states: states, + transitions: transitions + }; + +})(); |