// @tags: [does_not_support_stepdowns, requires_non_retryable_commands] // Check the return value of a db.eval function running a database query, and ensure the function's // contents are logged in the profile log. // Use a reserved database name to avoid a conflict in the parallel test suite. var stddb = db; var db = db.getSisterDB('evalb'); function profileCursor() { return db.system.profile.find({user: username + "@" + db.getName()}); } function lastOp() { return profileCursor().sort({$natural: -1}).next(); } try { username = 'jstests_evalb_user'; db.dropUser(username); db.createUser({user: username, pwd: 'password', roles: jsTest.basicUserRoles}); db.auth(username, 'password'); t = db.evalb; t.drop(); t.save({x: 3}); assert.eq(3, db.eval(function() { return db.evalb.findOne().x; }), 'A'); db.setProfilingLevel(2); assert.eq(3, db.eval(function() { return db.evalb.findOne().x; }), 'B'); o = lastOp(); assert(tojson(o).indexOf('findOne().x') > 0, 'C : ' + tojson(o)); } finally { db.setProfilingLevel(0); db = stddb; }