40 lines
1,007 B
JavaScript
40 lines
1,007 B
JavaScript
// 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.addUser( username, 'password', false, 1 );
|
|
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;
|
|
}
|