// Verifies that we've fixed SERVER-33158 by creating large user lsid refresh records (via large // usernames) // This test makes assertions about the number of sessions, which are not compatible with // implicit sessions. TestData.disableImplicitSessions = true; const mongod = MongoRunner.runMongod({auth: ""}); const refresh = { refreshLogicalSessionCacheNow: 1, }; const startSession = { startSession: 1, }; const admin = mongod.getDB("admin"); const db = mongod.getDB("test"); const config = mongod.getDB("config"); admin.createUser({user: "admin", pwd: "pass", roles: jsTest.adminUserRoles}); assert(admin.auth("admin", "pass")); const longUserName = "x".repeat(1000); // Create a user with a long name, so that the refresh records have a chance to blow out the // 16MB limit, if all the sessions are flushed in one batch db.createUser({user: longUserName, pwd: "pass", roles: jsTest.basicUserRoles}); admin.logout(); assert(db.auth(longUserName, "pass")); // 20k * 1k = 20mb which is greater than 16mb const numSessions = 20000; for (let i = 0; i < numSessions; i++) { assert.commandWorked(admin.runCommand(startSession), "unable to start session"); } assert.commandWorked(admin.runCommand(refresh), "failed to refresh"); // Make sure we actually flushed the sessions assert.eq(numSessions, config.system.sessions.aggregate([{"$listSessions": {}}, {"$count": "count"}]).next().count); MongoRunner.stopMongod(mongod);