diff options
Diffstat (limited to 'jstests/core/evalb.js')
-rw-r--r-- | jstests/core/evalb.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/jstests/core/evalb.js b/jstests/core/evalb.js new file mode 100644 index 00000000000..0caae39498b --- /dev/null +++ b/jstests/core/evalb.js @@ -0,0 +1,40 @@ +// 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; +} |