summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/api_version_metrics.js
blob: cb57f133058438f962e0dcd921726092dcc0ba19 (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
45
46
47
48
49
50
51
52
53
54
/**
 * Checks that the API version metrics are properly stored and returned.
 *
 * @tags: [
 * ]
 */

(function() {
"use strict";

const apiVersionsFieldName = "apiVersions";
const appName = "apiVersionMetricsTest";
const defaultAppName = "MongoDB Shell";

const conn = MongoRunner.runMongod();
const uri = "mongodb://" + conn.host + "/test";

const testDB = new Mongo(uri + `?appName=${appName}`).getDB(jsTestName());

jsTestLog("Issuing cmd with no API version");
assert.commandWorked(testDB.runCommand({ping: 1}));

let serverStatus = testDB.serverStatus().metrics;
assert(serverStatus.hasOwnProperty(apiVersionsFieldName),
       () => `serverStatus should have an '${apiVersionsFieldName}' field: ${serverStatus}`);

let apiVersionMetrics = serverStatus[apiVersionsFieldName][appName];
assert.eq(["default"], apiVersionMetrics);

jsTestLog("Issuing cmd with API version 1");
assert.commandWorked(testDB.runCommand({ping: 1, apiVersion: "1"}));

serverStatus = testDB.serverStatus().metrics;
assert(serverStatus.hasOwnProperty(apiVersionsFieldName),
       () => `serverStatus should have an '${apiVersionsFieldName}' field: ${serverStatus}`);

apiVersionMetrics = serverStatus[apiVersionsFieldName][appName];
assert.eq(["default", "1"], apiVersionMetrics);

const testDBDefaultAppName = conn.getDB(jsTestName());

jsTestLog("Issuing cmd with default app name");
assert.commandWorked(testDBDefaultAppName.runCommand({ping: 1}));

serverStatus = testDB.serverStatus().metrics;
assert(serverStatus.hasOwnProperty(apiVersionsFieldName),
       () => `serverStatus should have an '${apiVersionsFieldName}' field: ${serverStatus}`);
assert(serverStatus[apiVersionsFieldName].hasOwnProperty(appName),
       () => `serverStatus should store metrics for '${appName}': ${serverStatus}`);
assert(serverStatus[apiVersionsFieldName].hasOwnProperty(defaultAppName),
       () => `serverStatus should store metrics for '${defaultAppName}': ${serverStatus}`);

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