summaryrefslogtreecommitdiff
path: root/jstests/_runner_leak.js
blob: 18d7fb256f388d6ed0ac420916ccc5b15c3c673d (plain)
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
41
42
43
44
//
// simple runner to run toplevel tests in jstests
//
var files = listFiles("jstests");

var dummyDb = db.getSisterDB( "dummyDBdummydummy" );

dummyDb.getSisterDB( "admin" ).runCommand( "closeAllDatabases" );
prev = dummyDb.serverStatus();

print( "START : " + tojson( prev ) );

files.forEach(
    function(x) {
        
        if ( /_runner/.test(x.name) ||
             /_lodeRunner/.test(x.name) ||
             ! /\.js$/.test(x.name ) ){ 
            print(" >>>>>>>>>>>>>>> skipping " + x.name);
            return;
        }
        
        
        print(" *******************************************");
        print("         Test : " + x.name + " ...");
        print("                " + Date.timeFunc( function() { load(x.name); }, 1) + "ms");
        
        assert( dummyDb.getSisterDB( "admin" ).runCommand( "closeAllDatabases" ).ok == 1 , "closeAllDatabases failed" );
        var now = dummyDb.serverStatus();
        var leaked = now.mem.virtual - prev.mem.virtual;
        if ( leaked > 0 ){
            print( "    LEAK : " + prev.mem.virtual + " -->> " + now.mem.virtual  );
            printjson( now );
            if ( leaked > 20 )
                throw -1;
        }
        prev = now;
    }
);



dummyDb.getSisterDB( "admin" ).runCommand( "closeAllDatabases" );
print( "END   : " + tojson( dummyDb.serverStatus() ) );