summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/sort_metrics.js
blob: 0883225b506d44ee737d5a9c96b8c64850f7e754 (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
// Test metrics.query.sort.* ServerStatus counters
(function() {
'use strict';

const conn = MongoRunner.runMongod();
assert.neq(null, conn, "mongod was unable to start up");

const db = conn.getDB(jsTestName());
assert.commandWorked(db.dropDatabase());
const coll = db.spill_to_disk;

const memoryLimitMB = 100;
const bigStr = Array(1024 * 1024 + 1).toString();  // 1MB of ','
for (let i = 0; i < memoryLimitMB + 1; i++)
    assert.commandWorked(coll.insert({_id: i, bigStr: i + bigStr, random: Math.random()}));
assert.gt(coll.stats().size, memoryLimitMB * 1024 * 1024);

const metricsBefore = db.serverStatus().metrics.query.sort;

const pipeline = [{$sort: {random: 1}}];
assert.eq(coll.aggregate(pipeline).itcount(), coll.count());

const metricsAfter = db.serverStatus().metrics.query.sort;
assert.gt(metricsAfter.spillToDisk,
          metricsBefore.spillToDisk,
          "Expect metric query.sort.spillToDisk to increment after pipeline " + tojson(pipeline));
assert.gt(
    metricsAfter.totalKeysSorted,
    metricsBefore.totalKeysSorted,
    "Expect metric query.sort.totalKeysSorted to increment after pipeline " + tojson(pipeline));
assert.gt(
    metricsAfter.totalKeysSorted,
    metricsBefore.totalKeysSorted,
    "Expect metric query.sort.totalKeysSorted to increment after pipeline " + tojson(pipeline));

MongoRunner.stopMongod(conn);
})();