summaryrefslogtreecommitdiff
path: root/jstests/libs/cluster_server_parameter_utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/libs/cluster_server_parameter_utils.js')
-rw-r--r--jstests/libs/cluster_server_parameter_utils.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/jstests/libs/cluster_server_parameter_utils.js b/jstests/libs/cluster_server_parameter_utils.js
index 7a0149cc7f9..4f84d5f42a6 100644
--- a/jstests/libs/cluster_server_parameter_utils.js
+++ b/jstests/libs/cluster_server_parameter_utils.js
@@ -763,3 +763,53 @@ export function testInvalidClusterParameterCommands(conn, tenantId) {
}));
}
}
+
+// name => name of cluster parameter to get
+// expectedValue => document that should be equal to document describing CP's value, excluding the
+// _id
+function checkGetClusterParameterMatch(db, tenantToken, name, expectedValue) {
+ const cps = assert
+ .commandWorked(
+ runCommandWithSecurityToken(tenantToken, db, {getClusterParameter: name}))
+ .clusterParameters;
+ // confirm we got the document we were looking for.
+ assert.eq(cps.length, 1);
+ let actualCp = cps[0];
+ assert.eq(actualCp._id, name);
+ // confirm the value is expected.
+ // remove the id and clusterParameterTime fields
+ delete actualCp._id;
+ delete actualCp.clusterParameterTime;
+ assert(bsonWoCompare(actualCp, expectedValue) !== 0,
+ 'Server parameter mismatch for parameter ' +
+ '\n' +
+ 'Expected: ' + tojson(expectedValue) + '\n' +
+ 'Actual: ' + tojson(actualCp));
+}
+
+// Tests that getClusterParameter: "*" all have an _id element, and that all the parameters
+// it returns match the result of directly querying with getClusterParameter: <paramName>.
+export function testGetClusterParameterStar(conn, tenantId) {
+ let adminDB, getClusterParameterFn;
+ if (conn instanceof ReplSetTest) {
+ adminDB = conn.getPrimary().getDB('admin');
+ } else if (conn instanceof ShardingTest) {
+ adminDB = conn.s0.getDB('admin');
+ } else {
+ adminDB = conn.getDB('admin');
+ }
+
+ const tenantToken =
+ tenantId ? makeUnsignedSecurityToken(tenantId, {expectPrefix: false}) : undefined;
+
+ const allParameters = assert
+ .commandWorked(runCommandWithSecurityToken(
+ tenantToken, adminDB, {getClusterParameter: '*'}))
+ .clusterParameters;
+ for (const param of allParameters) {
+ assert(param.hasOwnProperty("_id"),
+ 'Entry in {getClusterParameter: "*"} result is missing _id key:\n' + tojson(param));
+ const name = param["_id"];
+ checkGetClusterParameterMatch(adminDB, tenantToken, name, param);
+ }
+}