// Verifies that we've fixed SERVER-33158 by creating large user lsid refresh records (via large // usernames) (function() { 'use strict'; // 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 (var 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); })();