File: forget_mr_temp_ns.js

package info (click to toggle)
mongodb 1%3A3.2.11-2%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 196,404 kB
  • sloc: cpp: 1,412,793; ansic: 504,961; python: 78,522; perl: 5,837; sh: 5,661; java: 4,202; makefile: 1,784; pascal: 617; xml: 176; asm: 128
file content (48 lines) | stat: -rw-r--r-- 1,367 bytes parent folder | download
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
45
46
47
48
//
// Tests whether we forget M/R's temporary namespaces for sharded output
//

var st = new ShardingTest({shards: 1, mongos: 1, other: {enableAutoSplit: true}});

var mongos = st.s0;
var admin = mongos.getDB("admin");
var coll = mongos.getCollection("foo.bar");
var outputColl = mongos.getCollection((coll.getDB() + "") + ".mrOutput");

var bulk = coll.initializeUnorderedBulkOp();
for (var i = 0; i < 10; i++) {
    bulk.insert({_id: i, even: (i % 2 == 0)});
}
assert.writeOK(bulk.execute());

var map = function() {
    emit(this.even, 1);
};
var reduce = function(key, values) {
    return Array.sum(values);
};

out = coll.mapReduce(map, reduce, {out: {reduce: outputColl.getName(), sharded: true}});

printjson(out);
printjson(outputColl.find().toArray());

var mongodThreadStats = st.shard0.getDB("admin").runCommand({shardConnPoolStats: 1}).threads;
var mongosThreadStats = admin.runCommand({shardConnPoolStats: 1}).threads;

printjson(mongodThreadStats);
printjson(mongosThreadStats);

var checkForSeenNS = function(threadStats, regex) {
    for (var i = 0; i < threadStats.length; i++) {
        var seenNSes = threadStats[i].seenNS;
        for (var j = 0; j < seenNSes.length; j++) {
            assert(!(regex.test(seenNSes)));
        }
    }
};

checkForSeenNS(mongodThreadStats, /^foo.tmp/);
checkForSeenNS(mongosThreadStats, /^foo.tmp/);

st.stop();