diff options
| author | Gabriel Marks <gabriel.marks@mongodb.com> | 2024-05-10 14:41:03 -0400 |
|---|---|---|
| committer | MongoDB Bot <mongo-bot@mongodb.com> | 2024-05-22 05:31:05 +0000 |
| commit | b8f25e66ee4f0d6a9283b9f32ba5a85249d4071b (patch) | |
| tree | 74536c31ef79a660761860e36efb01e6f8ff76ad | |
| parent | 73b6bac821f09fa7d59c4ec9f4636880f3408c2e (diff) | |
SERVER-90248 Add more testing for getClusterParameter: "*" (#22080)r8.0.0-rc5
GitOrigin-RevId: 5b97bb628ca94a80aeaec539db1b597c32e8fe3f
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(); |
