summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Marks <gabriel.marks@mongodb.com>2024-05-10 14:41:03 -0400
committerMongoDB Bot <mongo-bot@mongodb.com>2024-05-22 05:31:05 +0000
commitb8f25e66ee4f0d6a9283b9f32ba5a85249d4071b (patch)
tree74536c31ef79a660761860e36efb01e6f8ff76ad
parent73b6bac821f09fa7d59c4ec9f4636880f3408c2e (diff)
SERVER-90248 Add more testing for getClusterParameter: "*" (#22080)r8.0.0-rc5
GitOrigin-RevId: 5b97bb628ca94a80aeaec539db1b597c32e8fe3f
-rw-r--r--jstests/core/cluster_parameter_commands.js2
-rw-r--r--jstests/libs/cluster_server_parameter_utils.js50
-rw-r--r--jstests/multiVersion/genericSetFCVUsage/cluster_parameters_disabled_correctly_after_downgrade.js6
-rw-r--r--jstests/replsets/cluster_server_parameter_commands_replset.js6
-rw-r--r--jstests/serverless/cluster_server_parameter_commands_serverless_replset.js9
-rw-r--r--jstests/sharding/cluster_server_parameter_commands_sharded.js6
6 files changed, 73 insertions, 6 deletions
diff --git a/jstests/core/cluster_parameter_commands.js b/jstests/core/cluster_parameter_commands.js
index 0360078d996..07d758101d2 100644
--- a/jstests/core/cluster_parameter_commands.js
+++ b/jstests/core/cluster_parameter_commands.js
@@ -94,7 +94,7 @@ assert.commandFailed(conn.getDB("config").clusterParameters.insert({
clusterParameterTime: {"$timestamp": {t: 0, i: 0}}
}));
-// Assert that the results of getClusterParameter: '*' match the expected format, and that they are
+// Assert that the results of getClusterParameter: '*' all have an _id element, and that they are
// consistent with individual gets.
{
const allParameters =
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);
+ }
+}
diff --git a/jstests/multiVersion/genericSetFCVUsage/cluster_parameters_disabled_correctly_after_downgrade.js b/jstests/multiVersion/genericSetFCVUsage/cluster_parameters_disabled_correctly_after_downgrade.js
index 983aaad7445..a4a2fa00f03 100644
--- a/jstests/multiVersion/genericSetFCVUsage/cluster_parameters_disabled_correctly_after_downgrade.js
+++ b/jstests/multiVersion/genericSetFCVUsage/cluster_parameters_disabled_correctly_after_downgrade.js
@@ -5,7 +5,11 @@
// Note: Enabling new feature flags which aren't yet default-enabled will break this test,
// because such feature flags do not have a minimum FCV set and therefore will not be
// disabled when lowering the FCV, causing an incompatibility.
-// @tags: [all_feature_flags_incompatible]
+// Temporarily disabled; TODO SERVER-90735 Re-enable this test
+// @tags: [
+// __TEMPORARILY_DISABLED__,
+// all_feature_flags_incompatible
+// ]
// Ignore test parameters because they are not required to be consistent across versions.
const ignoredParams = [
diff --git a/jstests/replsets/cluster_server_parameter_commands_replset.js b/jstests/replsets/cluster_server_parameter_commands_replset.js
index bf1d3bca12b..6ad76a33cf5 100644
--- a/jstests/replsets/cluster_server_parameter_commands_replset.js
+++ b/jstests/replsets/cluster_server_parameter_commands_replset.js
@@ -9,6 +9,7 @@
*/
import {
setupReplicaSet,
+ testGetClusterParameterStar,
testInvalidClusterParameterCommands,
testValidClusterParameterCommands,
} from "jstests/libs/cluster_server_parameter_utils.js";
@@ -30,4 +31,7 @@ testInvalidClusterParameterCommands(rst);
// majority of the nodes in the replica set.
testValidClusterParameterCommands(rst);
-rst.stopSet(); \ No newline at end of file
+// Ensure that getClusterParameter: "*" works as expected.
+testGetClusterParameterStar(rst);
+
+rst.stopSet();
diff --git a/jstests/serverless/cluster_server_parameter_commands_serverless_replset.js b/jstests/serverless/cluster_server_parameter_commands_serverless_replset.js
index 4dcd4b3c7e8..a7498284380 100644
--- a/jstests/serverless/cluster_server_parameter_commands_serverless_replset.js
+++ b/jstests/serverless/cluster_server_parameter_commands_serverless_replset.js
@@ -4,12 +4,12 @@
* @tags: [
* does_not_support_stepdowns,
* requires_replication,
- * requires_fcv_62,
* serverless
* ]
*/
import {
setupReplicaSet,
+ testGetClusterParameterStar,
testInvalidClusterParameterCommands,
testValidServerlessClusterParameterCommands,
} from "jstests/libs/cluster_server_parameter_utils.js";
@@ -39,4 +39,9 @@ for (const tenantId of [undefined, ObjectId()]) {
// majority of the nodes in the replica set.
testValidServerlessClusterParameterCommands(rst);
-rst.stopSet(); \ No newline at end of file
+// Ensure that getClusterParameter: "*" works as expected.
+for (const tenantId of [undefined, ObjectId()]) {
+ testGetClusterParameterStar(rst, tenantId);
+}
+
+rst.stopSet();
diff --git a/jstests/sharding/cluster_server_parameter_commands_sharded.js b/jstests/sharding/cluster_server_parameter_commands_sharded.js
index 14a3145a7d9..71f8e607688 100644
--- a/jstests/sharding/cluster_server_parameter_commands_sharded.js
+++ b/jstests/sharding/cluster_server_parameter_commands_sharded.js
@@ -10,6 +10,7 @@
*/
import {
setupSharded,
+ testGetClusterParameterStar,
testInvalidClusterParameterCommands,
testValidClusterParameterCommands,
} from "jstests/libs/cluster_server_parameter_utils.js";
@@ -36,4 +37,7 @@ testInvalidClusterParameterCommands(st);
// and the majority of nodes on all replica sets in the cluster.
testValidClusterParameterCommands(st);
-st.stop(); \ No newline at end of file
+// Ensure that getClusterParameter: "*" works as expected.
+testGetClusterParameterStar(st);
+
+st.stop();