File: evalb.js

package info (click to toggle)
mongodb 1%3A2.4.10-5
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 82,464 kB
  • sloc: cpp: 740,225; ansic: 152,098; sh: 13,820; python: 11,864; makefile: 1,012; perl: 922; pascal: 617; java: 452; lisp: 222; asm: 174
file content (40 lines) | stat: -rw-r--r-- 1,007 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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.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;
}