summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/query_knobs_validation.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/noPassthrough/query_knobs_validation.js')
-rw-r--r--jstests/noPassthrough/query_knobs_validation.js313
1 files changed, 156 insertions, 157 deletions
diff --git a/jstests/noPassthrough/query_knobs_validation.js b/jstests/noPassthrough/query_knobs_validation.js
index 536f4d6f995..9bec3018c1d 100644
--- a/jstests/noPassthrough/query_knobs_validation.js
+++ b/jstests/noPassthrough/query_knobs_validation.js
@@ -6,166 +6,165 @@
*/
(function() {
- "use strict";
-
- const conn = MongoRunner.runMongod();
- const testDB = conn.getDB("admin");
- const expectedParamDefaults = {
- internalQueryPlanEvaluationWorks: 10000,
- internalQueryPlanEvaluationCollFraction: 0.3,
- internalQueryPlanEvaluationMaxResults: 101,
- internalQueryCacheSize: 5000,
- internalQueryCacheFeedbacksStored: 20,
- internalQueryCacheEvictionRatio: 10.0,
- internalQueryCacheWorksGrowthCoefficient: 2.0,
- internalQueryCacheDisableInactiveEntries: false,
- internalQueryCacheListPlansNewOutput: false,
- internalQueryPlannerMaxIndexedSolutions: 64,
- internalQueryEnumerationMaxOrSolutions: 10,
- internalQueryEnumerationMaxIntersectPerAnd: 3,
- internalQueryForceIntersectionPlans: false,
- internalQueryPlannerEnableIndexIntersection: true,
- internalQueryPlannerEnableHashIntersection: false,
- internalQueryPlanOrChildrenIndependently: true,
- internalQueryMaxScansToExplode: 200,
- internalQueryExecMaxBlockingSortBytes: 32 * 1024 * 1024,
- internalQueryExecYieldIterations: 128,
- internalQueryExecYieldPeriodMS: 10,
- internalQueryFacetBufferSizeBytes: 100 * 1024 * 1024,
- internalDocumentSourceCursorBatchSizeBytes: 4 * 1024 * 1024,
- internalDocumentSourceLookupCacheSizeBytes: 100 * 1024 * 1024,
- internalDocumentSourceSortMaxBlockingSortBytes: 100 * 1024 * 1024,
- internalLookupStageIntermediateDocumentMaxSizeBytes: 100 * 1024 * 1024,
- internalDocumentSourceGroupMaxMemoryBytes: 100 * 1024 * 1024,
- // Should be half the value of 'internalQueryExecYieldIterations' parameter.
- internalInsertMaxBatchSize: 64,
- internalQueryPlannerGenerateCoveredWholeIndexScans: false,
- internalQueryIgnoreUnknownJSONSchemaKeywords: false,
- internalQueryProhibitBlockingMergeOnMongoS: false,
- };
-
- function assertDefaultParameterValues() {
- // For each parameter in 'expectedParamDefaults' verify that the value returned by
- // 'getParameter' is same as the expected value.
- for (let paramName in expectedParamDefaults) {
- const expectedParamValue = expectedParamDefaults[paramName];
- const getParamRes =
- assert.commandWorked(testDB.adminCommand({getParameter: 1, [paramName]: 1}));
- assert.eq(getParamRes[paramName], expectedParamValue);
- }
- }
-
- function assertSetParameterSucceeds(paramName, value) {
- assert.commandWorked(testDB.adminCommand({setParameter: 1, [paramName]: value}));
- // Verify that the set parameter actually worked by doing a get and verifying the value.
+"use strict";
+
+const conn = MongoRunner.runMongod();
+const testDB = conn.getDB("admin");
+const expectedParamDefaults = {
+ internalQueryPlanEvaluationWorks: 10000,
+ internalQueryPlanEvaluationCollFraction: 0.3,
+ internalQueryPlanEvaluationMaxResults: 101,
+ internalQueryCacheSize: 5000,
+ internalQueryCacheFeedbacksStored: 20,
+ internalQueryCacheEvictionRatio: 10.0,
+ internalQueryCacheWorksGrowthCoefficient: 2.0,
+ internalQueryCacheDisableInactiveEntries: false,
+ internalQueryCacheListPlansNewOutput: false,
+ internalQueryPlannerMaxIndexedSolutions: 64,
+ internalQueryEnumerationMaxOrSolutions: 10,
+ internalQueryEnumerationMaxIntersectPerAnd: 3,
+ internalQueryForceIntersectionPlans: false,
+ internalQueryPlannerEnableIndexIntersection: true,
+ internalQueryPlannerEnableHashIntersection: false,
+ internalQueryPlanOrChildrenIndependently: true,
+ internalQueryMaxScansToExplode: 200,
+ internalQueryExecMaxBlockingSortBytes: 32 * 1024 * 1024,
+ internalQueryExecYieldIterations: 128,
+ internalQueryExecYieldPeriodMS: 10,
+ internalQueryFacetBufferSizeBytes: 100 * 1024 * 1024,
+ internalDocumentSourceCursorBatchSizeBytes: 4 * 1024 * 1024,
+ internalDocumentSourceLookupCacheSizeBytes: 100 * 1024 * 1024,
+ internalDocumentSourceSortMaxBlockingSortBytes: 100 * 1024 * 1024,
+ internalLookupStageIntermediateDocumentMaxSizeBytes: 100 * 1024 * 1024,
+ internalDocumentSourceGroupMaxMemoryBytes: 100 * 1024 * 1024,
+ // Should be half the value of 'internalQueryExecYieldIterations' parameter.
+ internalInsertMaxBatchSize: 64,
+ internalQueryPlannerGenerateCoveredWholeIndexScans: false,
+ internalQueryIgnoreUnknownJSONSchemaKeywords: false,
+ internalQueryProhibitBlockingMergeOnMongoS: false,
+};
+
+function assertDefaultParameterValues() {
+ // For each parameter in 'expectedParamDefaults' verify that the value returned by
+ // 'getParameter' is same as the expected value.
+ for (let paramName in expectedParamDefaults) {
+ const expectedParamValue = expectedParamDefaults[paramName];
const getParamRes =
assert.commandWorked(testDB.adminCommand({getParameter: 1, [paramName]: 1}));
- assert.eq(getParamRes[paramName], value);
- }
-
- function assertSetParameterFails(paramName, value) {
- assert.commandFailedWithCode(testDB.adminCommand({setParameter: 1, [paramName]: value}),
- ErrorCodes.BadValue);
+ assert.eq(getParamRes[paramName], expectedParamValue);
}
+}
+
+function assertSetParameterSucceeds(paramName, value) {
+ assert.commandWorked(testDB.adminCommand({setParameter: 1, [paramName]: value}));
+ // Verify that the set parameter actually worked by doing a get and verifying the value.
+ const getParamRes =
+ assert.commandWorked(testDB.adminCommand({getParameter: 1, [paramName]: 1}));
+ assert.eq(getParamRes[paramName], value);
+}
+
+function assertSetParameterFails(paramName, value) {
+ assert.commandFailedWithCode(testDB.adminCommand({setParameter: 1, [paramName]: value}),
+ ErrorCodes.BadValue);
+}
+
+// Verify that the default values are set as expected when the server starts up.
+assertDefaultParameterValues();
+
+assertSetParameterSucceeds("internalQueryPlanEvaluationWorks", 11);
+assertSetParameterFails("internalQueryPlanEvaluationWorks", 0);
+assertSetParameterFails("internalQueryPlanEvaluationWorks", -1);
+
+assertSetParameterSucceeds("internalQueryPlanEvaluationCollFraction", 0.0);
+assertSetParameterSucceeds("internalQueryPlanEvaluationCollFraction", 0.444);
+assertSetParameterSucceeds("internalQueryPlanEvaluationCollFraction", 1.0);
+assertSetParameterFails("internalQueryPlanEvaluationCollFraction", -0.1);
+assertSetParameterFails("internalQueryPlanEvaluationCollFraction", 1.0001);
+
+assertSetParameterSucceeds("internalQueryPlanEvaluationMaxResults", 11);
+assertSetParameterSucceeds("internalQueryPlanEvaluationMaxResults", 0);
+assertSetParameterFails("internalQueryPlanEvaluationMaxResults", -1);
+
+assertSetParameterSucceeds("internalQueryCacheSize", 1);
+assertSetParameterSucceeds("internalQueryCacheSize", 0);
+assertSetParameterFails("internalQueryCacheSize", -1);
+
+assertSetParameterSucceeds("internalQueryCacheFeedbacksStored", 1);
+assertSetParameterSucceeds("internalQueryCacheFeedbacksStored", 0);
+assertSetParameterFails("internalQueryCacheFeedbacksStored", -1);
+
+assertSetParameterSucceeds("internalQueryCacheEvictionRatio", 1.0);
+assertSetParameterSucceeds("internalQueryCacheEvictionRatio", 0.0);
+assertSetParameterFails("internalQueryCacheEvictionRatio", -0.1);
+
+assertSetParameterSucceeds("internalQueryCacheWorksGrowthCoefficient", 1.1);
+assertSetParameterFails("internalQueryCacheWorksGrowthCoefficient", 1.0);
+assertSetParameterFails("internalQueryCacheWorksGrowthCoefficient", 0.1);
+
+assertSetParameterSucceeds("internalQueryPlannerMaxIndexedSolutions", 11);
+assertSetParameterSucceeds("internalQueryPlannerMaxIndexedSolutions", 0);
+assertSetParameterFails("internalQueryPlannerMaxIndexedSolutions", -1);
+
+assertSetParameterSucceeds("internalQueryEnumerationMaxOrSolutions", 11);
+assertSetParameterSucceeds("internalQueryEnumerationMaxOrSolutions", 0);
+assertSetParameterFails("internalQueryEnumerationMaxOrSolutions", -1);
+
+assertSetParameterSucceeds("internalQueryEnumerationMaxIntersectPerAnd", 11);
+assertSetParameterSucceeds("internalQueryEnumerationMaxIntersectPerAnd", 0);
+assertSetParameterFails("internalQueryEnumerationMaxIntersectPerAnd", -1);
+
+assertSetParameterSucceeds("internalQueryMaxScansToExplode", 11);
+assertSetParameterSucceeds("internalQueryMaxScansToExplode", 0);
+assertSetParameterFails("internalQueryMaxScansToExplode", -1);
+
+assertSetParameterSucceeds("internalQueryExecMaxBlockingSortBytes", 11);
+assertSetParameterSucceeds("internalQueryExecMaxBlockingSortBytes", 0);
+assertSetParameterFails("internalQueryExecMaxBlockingSortBytes", -1);
+
+assertSetParameterSucceeds("internalQueryExecYieldIterations", 10);
+assertSetParameterSucceeds("internalQueryExecYieldIterations", 0);
+assertSetParameterSucceeds("internalQueryExecYieldIterations", -1);
+
+assertSetParameterSucceeds("internalQueryExecYieldPeriodMS", 1);
+assertSetParameterSucceeds("internalQueryExecYieldPeriodMS", 0);
+assertSetParameterFails("internalQueryExecYieldPeriodMS", -1);
+
+assertSetParameterSucceeds("internalQueryExecYieldPeriodMS", 11);
+assertSetParameterSucceeds("internalQueryExecYieldPeriodMS", 0);
+assertSetParameterFails("internalQueryExecYieldPeriodMS", -1);
+
+assertSetParameterSucceeds("internalQueryFacetBufferSizeBytes", 1);
+assertSetParameterFails("internalQueryFacetBufferSizeBytes", 0);
+assertSetParameterFails("internalQueryFacetBufferSizeBytes", -1);
+
+assertSetParameterSucceeds("internalDocumentSourceSortMaxBlockingSortBytes", 11);
+assertSetParameterFails("internalDocumentSourceSortMaxBlockingSortBytes", 0);
+assertSetParameterFails("internalDocumentSourceSortMaxBlockingSortBytes", -1);
+
+assertSetParameterSucceeds("internalDocumentSourceGroupMaxMemoryBytes", 11);
+assertSetParameterFails("internalDocumentSourceGroupMaxMemoryBytes", 0);
+assertSetParameterFails("internalDocumentSourceGroupMaxMemoryBytes", -1);
+
+// Internal BSON max object size is slightly larger than the max user object size, to
+// accommodate command metadata.
+const bsonUserSizeLimit = assert.commandWorked(testDB.isMaster()).maxBsonObjectSize;
+const bsonObjMaxInternalSize = bsonUserSizeLimit + 16 * 1024;
+
+assertSetParameterFails("internalLookupStageIntermediateDocumentMaxSizeBytes", 1);
+assertSetParameterSucceeds("internalLookupStageIntermediateDocumentMaxSizeBytes",
+ bsonObjMaxInternalSize);
+
+assertSetParameterSucceeds("internalInsertMaxBatchSize", 11);
+assertSetParameterFails("internalInsertMaxBatchSize", 0);
+assertSetParameterFails("internalInsertMaxBatchSize", -1);
+
+assertSetParameterSucceeds("internalDocumentSourceCursorBatchSizeBytes", 11);
+assertSetParameterSucceeds("internalDocumentSourceCursorBatchSizeBytes", 0);
+assertSetParameterFails("internalDocumentSourceCursorBatchSizeBytes", -1);
- // Verify that the default values are set as expected when the server starts up.
- assertDefaultParameterValues();
-
- assertSetParameterSucceeds("internalQueryPlanEvaluationWorks", 11);
- assertSetParameterFails("internalQueryPlanEvaluationWorks", 0);
- assertSetParameterFails("internalQueryPlanEvaluationWorks", -1);
-
- assertSetParameterSucceeds("internalQueryPlanEvaluationCollFraction", 0.0);
- assertSetParameterSucceeds("internalQueryPlanEvaluationCollFraction", 0.444);
- assertSetParameterSucceeds("internalQueryPlanEvaluationCollFraction", 1.0);
- assertSetParameterFails("internalQueryPlanEvaluationCollFraction", -0.1);
- assertSetParameterFails("internalQueryPlanEvaluationCollFraction", 1.0001);
-
- assertSetParameterSucceeds("internalQueryPlanEvaluationMaxResults", 11);
- assertSetParameterSucceeds("internalQueryPlanEvaluationMaxResults", 0);
- assertSetParameterFails("internalQueryPlanEvaluationMaxResults", -1);
-
- assertSetParameterSucceeds("internalQueryCacheSize", 1);
- assertSetParameterSucceeds("internalQueryCacheSize", 0);
- assertSetParameterFails("internalQueryCacheSize", -1);
-
- assertSetParameterSucceeds("internalQueryCacheFeedbacksStored", 1);
- assertSetParameterSucceeds("internalQueryCacheFeedbacksStored", 0);
- assertSetParameterFails("internalQueryCacheFeedbacksStored", -1);
-
- assertSetParameterSucceeds("internalQueryCacheEvictionRatio", 1.0);
- assertSetParameterSucceeds("internalQueryCacheEvictionRatio", 0.0);
- assertSetParameterFails("internalQueryCacheEvictionRatio", -0.1);
-
- assertSetParameterSucceeds("internalQueryCacheWorksGrowthCoefficient", 1.1);
- assertSetParameterFails("internalQueryCacheWorksGrowthCoefficient", 1.0);
- assertSetParameterFails("internalQueryCacheWorksGrowthCoefficient", 0.1);
-
- assertSetParameterSucceeds("internalQueryPlannerMaxIndexedSolutions", 11);
- assertSetParameterSucceeds("internalQueryPlannerMaxIndexedSolutions", 0);
- assertSetParameterFails("internalQueryPlannerMaxIndexedSolutions", -1);
-
- assertSetParameterSucceeds("internalQueryEnumerationMaxOrSolutions", 11);
- assertSetParameterSucceeds("internalQueryEnumerationMaxOrSolutions", 0);
- assertSetParameterFails("internalQueryEnumerationMaxOrSolutions", -1);
-
- assertSetParameterSucceeds("internalQueryEnumerationMaxIntersectPerAnd", 11);
- assertSetParameterSucceeds("internalQueryEnumerationMaxIntersectPerAnd", 0);
- assertSetParameterFails("internalQueryEnumerationMaxIntersectPerAnd", -1);
-
- assertSetParameterSucceeds("internalQueryMaxScansToExplode", 11);
- assertSetParameterSucceeds("internalQueryMaxScansToExplode", 0);
- assertSetParameterFails("internalQueryMaxScansToExplode", -1);
-
- assertSetParameterSucceeds("internalQueryExecMaxBlockingSortBytes", 11);
- assertSetParameterSucceeds("internalQueryExecMaxBlockingSortBytes", 0);
- assertSetParameterFails("internalQueryExecMaxBlockingSortBytes", -1);
-
- assertSetParameterSucceeds("internalQueryExecYieldIterations", 10);
- assertSetParameterSucceeds("internalQueryExecYieldIterations", 0);
- assertSetParameterSucceeds("internalQueryExecYieldIterations", -1);
-
- assertSetParameterSucceeds("internalQueryExecYieldPeriodMS", 1);
- assertSetParameterSucceeds("internalQueryExecYieldPeriodMS", 0);
- assertSetParameterFails("internalQueryExecYieldPeriodMS", -1);
-
- assertSetParameterSucceeds("internalQueryExecYieldPeriodMS", 11);
- assertSetParameterSucceeds("internalQueryExecYieldPeriodMS", 0);
- assertSetParameterFails("internalQueryExecYieldPeriodMS", -1);
-
- assertSetParameterSucceeds("internalQueryFacetBufferSizeBytes", 1);
- assertSetParameterFails("internalQueryFacetBufferSizeBytes", 0);
- assertSetParameterFails("internalQueryFacetBufferSizeBytes", -1);
-
- assertSetParameterSucceeds("internalDocumentSourceSortMaxBlockingSortBytes", 11);
- assertSetParameterFails("internalDocumentSourceSortMaxBlockingSortBytes", 0);
- assertSetParameterFails("internalDocumentSourceSortMaxBlockingSortBytes", -1);
-
- assertSetParameterSucceeds("internalDocumentSourceGroupMaxMemoryBytes", 11);
- assertSetParameterFails("internalDocumentSourceGroupMaxMemoryBytes", 0);
- assertSetParameterFails("internalDocumentSourceGroupMaxMemoryBytes", -1);
-
- // Internal BSON max object size is slightly larger than the max user object size, to
- // accommodate command metadata.
- const bsonUserSizeLimit = assert.commandWorked(testDB.isMaster()).maxBsonObjectSize;
- const bsonObjMaxInternalSize = bsonUserSizeLimit + 16 * 1024;
-
- assertSetParameterFails("internalLookupStageIntermediateDocumentMaxSizeBytes", 1);
- assertSetParameterSucceeds("internalLookupStageIntermediateDocumentMaxSizeBytes",
- bsonObjMaxInternalSize);
-
- assertSetParameterSucceeds("internalInsertMaxBatchSize", 11);
- assertSetParameterFails("internalInsertMaxBatchSize", 0);
- assertSetParameterFails("internalInsertMaxBatchSize", -1);
-
- assertSetParameterSucceeds("internalDocumentSourceCursorBatchSizeBytes", 11);
- assertSetParameterSucceeds("internalDocumentSourceCursorBatchSizeBytes", 0);
- assertSetParameterFails("internalDocumentSourceCursorBatchSizeBytes", -1);
-
- assertSetParameterSucceeds("internalDocumentSourceLookupCacheSizeBytes", 11);
- assertSetParameterSucceeds("internalDocumentSourceLookupCacheSizeBytes", 0);
- assertSetParameterFails("internalDocumentSourceLookupCacheSizeBytes", -1);
-
- MongoRunner.stopMongod(conn);
+assertSetParameterSucceeds("internalDocumentSourceLookupCacheSizeBytes", 11);
+assertSetParameterSucceeds("internalDocumentSourceLookupCacheSizeBytes", 0);
+assertSetParameterFails("internalDocumentSourceLookupCacheSizeBytes", -1);
+MongoRunner.stopMongod(conn);
})();