// 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.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; }