47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
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.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;
|
|
}
|