summaryrefslogtreecommitdiff
path: root/jstests/core/explain2.js
blob: a0a65de4fe998d5405aa9bae772ae523ba7f3ef2 (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
// Test calculation of the 'millis' field in explain output.

t = db.jstests_explain2;
t.drop();

t.ensureIndex({a: 1});
for (i = 1000; i < 4000; i += 1000) {
    t.save({a: i});
}

// Run a query with one $or clause per a-value, each of which sleeps for 'a' milliseconds.
function slow() {
    sleep(this.a);
    return true;
}
clauses = [];
for (i = 1000; i < 4000; i += 1000) {
    clauses.push({a: i, $where: slow});
}
explain = t.find({$or: clauses}).explain(true);
printjson(explain);

// Verify the duration of the whole query, and of each clause.
assert.gt(explain.executionStats.executionTimeMillis, 1000 - 500 + 2000 - 500 + 3000 - 500);