mirror of https://github.com/mongodb/mongo
765 lines
30 KiB
Python
765 lines
30 KiB
Python
"""Minimum and maximum dictionary declarations for the different randomized parameters (mongod and mongos)."""
|
|
|
|
"""
|
|
For context and maintenance, see:
|
|
https://github.com/10gen/mongo/blob/master/buildscripts/resmokelib/generate_fuzz_config/README.md#adding-new-mongo-parameters
|
|
"""
|
|
|
|
config_fuzzer_params = {
|
|
"mongod": {
|
|
"analyzeShardKeyNumRanges": {
|
|
"min": 2,
|
|
"max": 100,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"analyzeShardKeySplitPointExpirationSecs": {"min": 1, "max": 300, "fuzz_at": ["startup"]},
|
|
"collectionSamplingLogIntervalSeconds": {
|
|
"min": 5,
|
|
"max": 15,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"disableLogicalSessionCacheRefresh": {"choices": [True, False], "fuzz_at": ["startup"]},
|
|
"enableAutoCompaction": {"choices": [True, False], "fuzz_at": ["startup"]},
|
|
"ingressAdmissionControllerTicketPoolSize": {
|
|
"choices": [100, 1_000, 10_000, 100_000, 1_000_000],
|
|
"lower_bound": 100,
|
|
"upper_bound": 1_000_000,
|
|
"min": 100,
|
|
"max": 1_000_000,
|
|
"isRandomizedChoice": True,
|
|
"period": 5,
|
|
"fuzz_at": ["runtime"],
|
|
},
|
|
"ingressConnectionEstablishmentRateLimiterEnabled": {
|
|
"choices": [True, False],
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"ingressConnectionEstablishmentRatePerSec": {
|
|
"min": 20,
|
|
"max": 100_000,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"ingressConnectionEstablishmentBurstCapacitySecs": {
|
|
"min": 0.1,
|
|
"max": 100_000,
|
|
"isUniform": True,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"ingressConnectionEstablishmentMaxQueueDepth": {
|
|
"min": 100,
|
|
"max": 100_000,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"indexBuildMinAvailableDiskSpaceMB": {
|
|
"min": 250,
|
|
"max": 750,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"initialSyncMethod": {"choices": ["fileCopyBased", "logical"], "fuzz_at": ["startup"]},
|
|
# For `initialSyncSourceReadPreference`, the option `secondary` is excluded from the fuzzer
|
|
# because the generated mongod parameters are used for every node in the replica set, so the
|
|
# secondaries in the replica set will not be able to find a valid sync source.
|
|
"initialSyncSourceReadPreference": {
|
|
"choices": ["nearest", "primary", "primaryPreferred", "secondaryPreferred"],
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"initialSyncIndexBuildMemoryPercentage": {
|
|
"min": 0,
|
|
"max": 20,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"initialSyncIndexBuildMemoryMinMB": {
|
|
"min": 50,
|
|
"max": 1024,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"initialSyncIndexBuildMemoryMaxMB": {
|
|
"min": 50,
|
|
"max": 1024,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"internalInsertMaxBatchSize": {
|
|
"min": 1,
|
|
"max": 750,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# internalQueryExecYieldIterations takes a weighted random choice with a rand int generated betwen the lower_bound and upper_bound and 1.
|
|
"internalQueryExecYieldIterations": {
|
|
"min": 1,
|
|
"max": 1000,
|
|
"lower_bound": 1,
|
|
"upper_bound": 1000,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"internalQueryExecYieldPeriodMS": {"min": 1, "max": 100, "fuzz_at": ["startup"]},
|
|
"internalQueryFindCommandBatchSize": {"min": 1, "max": 500, "fuzz_at": ["startup"]},
|
|
"journalCommitInterval": {
|
|
"min": 50,
|
|
"max": 250,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"lockCodeSegmentsInMemory": {"choices": [True, False], "fuzz_at": ["startup"]},
|
|
"logicalSessionRefreshMillis": {
|
|
"choices": [100, 1000, 10_000, 100_000],
|
|
"min": 100,
|
|
"max": 100_000,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"maxNumActiveUserIndexBuilds": {
|
|
"min": 1,
|
|
"max": 5,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# maxNumberOfTransactionOperationsInSingleOplogEntry has two sources of randomization (rng.randint(1, 10) * rng.choice(mongod_param_choices["maxNumberOfTransactionOperationsInSingleOplogEntry"]))
|
|
# You need to manually update maxNumberOfTransactionOperationsInSingleOplogEntry min and max in the case that you change either randomized choices.
|
|
"maxNumberOfTransactionOperationsInSingleOplogEntry": {
|
|
"choices": [1, 10, 100],
|
|
"min": 1,
|
|
"max": 1000,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"maxShardStaleMetadataRetryAttempts": {
|
|
"min": 10,
|
|
"max": 100,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"operationMemoryPoolBlockMaxSizeKB": {
|
|
"min": 1024,
|
|
"max": 2048,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"oplogFetcherUsesExhaust": {"choices": [True, False], "fuzz_at": ["startup"]},
|
|
# Default value False; we are enabling more data integrity checks during timeseries compression.
|
|
"performTimeseriesCompressionIntermediateDataIntegrityCheckOnInsert": {
|
|
"choices": [True, False],
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# The actual maximum of `replBatchLimitOperations` is 1000 * 1000 but this range doesn't work
|
|
# for WINDOWS DEBUG, so that maximum is multiplied by 0.2, which is still a lot more than the
|
|
# default value of 5000. The reason why the full range [1, 1000*1000] doesn't work on WINDOWS
|
|
# DEBUG seems to be because it would wait for the batch to fill up to the batch limit
|
|
# operations, but when that number is too high it would just time out before reaching the
|
|
# batch limit operations.
|
|
"replBatchLimitOperations": {
|
|
"min": 1,
|
|
"max": 0.2 * 1000 * 1000,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"replBatchLimitBytes": {
|
|
"min": 16 * 1024 * 1024,
|
|
"max": 100 * 1024 * 1024,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"replWriterThreadCount": {
|
|
"min": 1,
|
|
"max": 256,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# Default value 1000; many tests don't insert enough measurements to rollover due to count, so we enable a larger range for this parameter.
|
|
"timeseriesBucketMaxCount": {
|
|
"min": 20,
|
|
"max": 2000,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
# Default value 10; maximum value is the lowest possible value of timeseriesBucketMaxCount.
|
|
"timeseriesBucketMinCount": {"min": 1, "max": 20, "fuzz_at": ["startup"]},
|
|
# Default value 128000 (125KB); many tests don't insert enough measurements to rollover due to size, so we enable a larger range for this parameter.
|
|
"timeseriesBucketMaxSize": {
|
|
"min": 5120, # 5KB
|
|
"max": 256000, # 250KB
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
# Default value 5120; maximum value is the lowest possible value of timeseriesBucketMaxSize.
|
|
"timeseriesBucketMinSize": {
|
|
"min": 3072, # 3KB
|
|
"max": 5120, # 5KB
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# Default value 3; Enables more bucket re-opening by increasing the number of buckets that we can expire when performing idle bucket expiry.
|
|
# Increasing bucket expiry was the most helpful way to increase re-opening because these buckets are still eligible for archived-based reopening, without side effects from doing more hard closes.
|
|
# We also extended the lower side of the range so we can test the theoretical minimum (2) that enables the system to make progress.
|
|
"timeseriesIdleBucketExpiryMaxCountPerAttempt": {
|
|
"min": 2,
|
|
"max": 32,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
# Default value 32; doesn't contribute to increasing re-opening when being fuzzed with other parameters.
|
|
# Having a lower value can increase rollover due to size because we have lower byte uncompressed size measurements having their uncompressed size being counted as the size in the bucket,
|
|
# but fuzzing timeseriesLargeMeasurementThreshold at a lower range led to less re-opening when fuzzing with other parameters.
|
|
"timeseriesLargeMeasurementThreshold": {
|
|
"min": 28,
|
|
"max": 36,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# Default value 16; can help us identify flaky tests that rely on having/not having WriteConflicts during bucket re-opening.
|
|
"timeseriesMaxRetriesForWriteConflictsOnReopening": {
|
|
"min": 1,
|
|
"max": 32,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# Default value 104857600 (100 MB); Enables more bucket re-opening by decreasing the side bucket catalog memory threshold so we can more aggressively expire buckets.
|
|
# Increasing bucket expiry was the most helpful way to increase re-opening because these buckets are still eligible for archived-based reopening, without side effects from doing more hard closes.
|
|
"timeseriesSideBucketCatalogMemoryUsageThreshold": {
|
|
"min": 200,
|
|
"max": 500,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"temporarilyUnavailableBackoffBaseMs": {"min": 1, "max": 1000, "fuzz_at": ["startup"]},
|
|
"temporarilyUnavailableMaxRetries": {"min": 1, "max": 10, "fuzz_at": ["startup"]},
|
|
# throughputProbingConcurrencyMovingAverageWeight is 1 - rng.random(), so the min is NOT inclusive.
|
|
"throughputProbingConcurrencyMovingAverageWeight": {
|
|
"min": 0.0,
|
|
"max": 1.0,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"throughputProbingInitialConcurrency": {"min": 8, "max": 256, "fuzz_at": ["startup"]},
|
|
"throughputProbingMinConcurrency": {
|
|
"min": 4,
|
|
"max": "throughputProbingInitialConcurrency",
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"throughputProbingMaxConcurrency": {
|
|
"min": "throughputProbingInitialConcurrency",
|
|
"max": 128,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"throughputProbingReadWriteRatio": {
|
|
"min": 0,
|
|
"max": 1,
|
|
"isUniform": True,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"throughputProbingStepMultiple": {
|
|
"min": 0.1,
|
|
"max": 0.5,
|
|
"isUniform": True,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"transactionTooLargeForCacheThreshold": {
|
|
"min": 0.5,
|
|
"max": 1,
|
|
"isUniform": True,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"wiredTigerCursorCacheSize": {"min": -100, "max": 0, "fuzz_at": ["startup"]},
|
|
"wiredTigerSessionCloseIdleTimeSecs": {"min": 0, "max": 300, "fuzz_at": ["startup"]},
|
|
"wiredTigerSizeStorerPeriodicSyncHits": {"min": 1, "max": 100_000, "fuzz_at": ["startup"]},
|
|
"wiredTigerSizeStorerPeriodicSyncPeriodMillis": {
|
|
"min": 1,
|
|
"max": 60_000,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"wiredTigerCheckpointCleanupPeriodSeconds": {
|
|
"min": 1,
|
|
"max": 600, # This can be as high as 100k but we fuzz it to be small because we mostly perform 0 cleanups in testing.
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"queryAnalysisWriterMaxMemoryUsageBytes": {
|
|
"min": 1024 * 1024,
|
|
"max": 1024 * 1024 * 100,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"mirrorReads": {
|
|
"choices": [0, 0.25, 0.50, 0.75, 1.0],
|
|
"min": 0,
|
|
"max": 1,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
# Flow control related parameters
|
|
"enableFlowControl": {"choices": [True, False], "fuzz_at": ["startup"]},
|
|
"flowControlTicketAdderConstant": {
|
|
"min": 500,
|
|
"max": 1000,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"flowControlDecayConstant": {
|
|
"min": 0.1,
|
|
"max": 1,
|
|
"isUniform": True,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"flowControlFudgeFactor": {
|
|
"min": 0.9,
|
|
"max": 1,
|
|
"isUniform": True,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"flowControlMaxSamples": {"min": 1, "max": 1000 * 1000, "fuzz_at": ["startup"]},
|
|
"flowControlMinTicketsPerSecond": {
|
|
"min": 1,
|
|
"max": 10 * 1000,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"flowControlSamplePeriod": {
|
|
"min": 1,
|
|
"max": 1000 * 1000,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"flowControlTargetLagSeconds": {
|
|
"min": 1,
|
|
"max": 1000,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"flowControlTicketMultiplierConstant": {
|
|
"min": 1.01,
|
|
"max": 1.09,
|
|
"isUniform": True,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# flowControlThresholdLagPercentage is found by calling rng.random(), which means the max is NOT inclusive.
|
|
"flowControlThresholdLagPercentage": {
|
|
"min": 0.0,
|
|
"max": 1.0,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"flowControlWarnThresholdSeconds": {
|
|
"min": 5,
|
|
"max": 15,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# We need a higher timeout to account for test slowness
|
|
"receiveChunkWaitForRangeDeleterTimeoutMS": {"default": 300_000, "fuzz_at": ["startup"]},
|
|
"defaultConfigCommandTimeoutMS": {"default": 90_000, "fuzz_at": ["startup"]},
|
|
# Disable the periodic thread to abort multi-document transactions when under cache
|
|
# pressure. As the storage engine parameters are fuzzed at runtime, it can make the thread
|
|
# fire unpredictably, resulting in test failures that expect transactions to succeed.
|
|
"cachePressureQueryPeriodMilliseconds": {"default": 0, "fuzz_at": ["startup"]},
|
|
"maxSizeOfBatchedInsertsForRenameAcrossDatabasesBytes": {
|
|
"min": 2_097_152,
|
|
"max": 6_291_456,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"maxNumberOfInsertsBatchInsertsForRenameAcrossDatabases": {
|
|
"min": 1,
|
|
"max": 1000,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
# These parameters have a min, max, and a choice with one value because we first find rng.randint(min, max)
|
|
# and then add this value to the choices array and call rng.choices(choices).
|
|
"minSnapshotHistoryWindowInSeconds": {
|
|
"choices": [300],
|
|
"lower_bound": 30,
|
|
"upper_bound": 600,
|
|
"min": 30,
|
|
"max": 600,
|
|
"isRandomizedChoice": True,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"syncdelay": {
|
|
"choices": [60],
|
|
"lower_bound": 15,
|
|
"upper_bound": 180,
|
|
"min": 15,
|
|
"max": 180,
|
|
"isRandomizedChoice": True,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"connPoolMaxInUseConnsPerHost": {"min": 50, "max": 100, "fuzz_at": ["startup"]},
|
|
"globalConnPoolIdleTimeoutMinutes": {"min": 1, "max": 10, "fuzz_at": ["startup"]},
|
|
"ShardingTaskExecutorPoolMaxConnecting": {"min": 1, "max": 2, "fuzz_at": ["startup"]},
|
|
"warmMinConnectionsInShardingTaskExecutorPoolOnStartup": {
|
|
"choices": [True, False],
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"oplogBatchDelayMillis": {"min": 0, "max": 50, "fuzz_at": ["startup"]},
|
|
# Test hanging a random amount of time during DDL commits. This widens the window of
|
|
# potential failure to have inconsistent CollectionCatalog instances with the WT snapshot.
|
|
"failpoint.hangAfterPreCommittingCatalogUpdates": {
|
|
"pauseEntireCommitMillis": {"min": 10, "max": 100},
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"failpoint.hangBeforePublishingCatalogUpdates": {
|
|
"pauseEntireCommitMillis": {"min": 10, "max": 100},
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
# Choose whether to shuffle the list command results or not.
|
|
"failpoint.shuffleListCommandResults": {
|
|
"choices": [{"mode": "off"}, {"mode": "alwaysOn"}],
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
# TODO(SERVER-98867): re-enable config fuzzer signal testing.
|
|
"failpoint.enableSignalTesting": {
|
|
"choices": [{"mode": "off"}],
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"enableDetailedConnectionHealthMetricLogLines": {
|
|
"choices": [True, False],
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"diagnosticDataCollectionEnabled": {
|
|
"choices": [True, False],
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"diagnosticDataCollectionVerboseTCMalloc": {
|
|
"choices": [True, False],
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"diagnosticDataCollectionEnableLatencyHistograms": {
|
|
"choices": [True, False],
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"rollbackRemoteOplogQueryBatchSize": {
|
|
"min": 1500,
|
|
"max": 2500,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"writePeriodicNoops": {
|
|
"choices": [True, False],
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"changeSyncSourceThresholdMillis": {
|
|
"min": 0,
|
|
"max": 20,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"maxNumSyncSourceChangesPerHour": {
|
|
"min": 1,
|
|
"max": 10,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"dbCheckMaxTotalIndexKeysPerSnapshot": {
|
|
"min": 1,
|
|
"max": 2000,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"writeConflictRetryLimit": {
|
|
"min": 1,
|
|
"max": 20000,
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"internalQueryStatsRateLimit": {
|
|
"min": -1,
|
|
"max": 1,
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"internalQueryStatsSampleRate": {
|
|
"choices": [0, 0.0001, 0.1, 1.0],
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"internalQueryStatsCacheSize": {
|
|
"choices": ["0.00001MB", "0MB", "1MB", "10MB"],
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# If we are enabling the above query stats flags in a test, we should also enable this one to catch any errors on collected queries.
|
|
"internalQueryStatsErrorsAreCommandFatal": {
|
|
"default": True,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"internalQueryPercentileExprSelectToSortThreshold": {
|
|
"min": 0,
|
|
"max": 30,
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlConcurrentWriteTransactions": {
|
|
"min": 5,
|
|
"max": 128,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlConcurrentWriteLowPriorityTransactions": {
|
|
"min": 3,
|
|
"max": 32,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlConcurrentReadTransactions": {
|
|
"min": 5,
|
|
"max": 128,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlConcurrentReadLowPriorityTransactions": {
|
|
"min": 3,
|
|
"max": 32,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlReadMaxQueueDepth": {
|
|
"min": 100,
|
|
"max": 100_000,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlReadLowPriorityMaxQueueDepth": {
|
|
"min": 100,
|
|
"max": 100_000,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlWriteMaxQueueDepth": {
|
|
"min": 100,
|
|
"max": 100_000,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlWriteLowPriorityMaxQueueDepth": {
|
|
"min": 100,
|
|
"max": 100_000,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"throughputProbingConcurrencyAdjustmentIntervalMillis": {
|
|
"min": 10,
|
|
"max": 1_000,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"executionControlConcurrencyAdjustmentAlgorithm": {
|
|
"choices": [
|
|
"fixedConcurrentTransactions",
|
|
"throughputProbing",
|
|
],
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlDeprioritizationGate": {
|
|
"choices": [True, False],
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlHeuristicDeprioritization": {
|
|
"choices": [True, False],
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlHeuristicNumAdmissionsDeprioritizeThreshold": {
|
|
"min": 1,
|
|
"max": 10,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"executionControlBackgroundTasksDeprioritization": {
|
|
"choices": [True, False],
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
},
|
|
"mongos": {
|
|
# We need a higher timeout to account for test slowness
|
|
"defaultConfigCommandTimeoutMS": {"default": 90_000, "fuzz_at": ["startup"]},
|
|
"internalQueryFindCommandBatchSize": {"min": 1, "max": 500, "fuzz_at": ["startup"]},
|
|
"opportunisticSecondaryTargeting": {"choices": [True, False], "fuzz_at": ["startup"]},
|
|
"ShardingTaskExecutorPoolReplicaSetMatching": {
|
|
"choices": ["disabled", "matchBusiestNode", "matchPrimaryNode"],
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"userCacheInvalidationIntervalSecs": {
|
|
"min": 1,
|
|
"max": 86400,
|
|
"period": 5,
|
|
"fuzz_at": ["runtime"],
|
|
},
|
|
"enableDetailedConnectionHealthMetricLogLines": {
|
|
"choices": [True, False],
|
|
"period": 5,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"warmMinConnectionsInShardingTaskExecutorPoolOnStartup": {
|
|
"choices": [True, False],
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"diagnosticDataCollectionEnabled": {
|
|
"choices": [True, False],
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"diagnosticDataCollectionVerboseTCMalloc": {
|
|
"choices": [True, False],
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"diagnosticDataCollectionEnableLatencyHistograms": {
|
|
"choices": [True, False],
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# TODO(SERVER-98867): re-enable config fuzzer signal testing.
|
|
"failpoint.enableSignalTesting": {
|
|
"choices": [{"mode": "off"}],
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
"ingressConnectionEstablishmentRateLimiterEnabled": {
|
|
"choices": [True, False],
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"ingressConnectionEstablishmentRatePerSec": {
|
|
"min": 20,
|
|
"max": 100_000,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"ingressConnectionEstablishmentBurstCapacitySecs": {
|
|
"min": 0.1,
|
|
"max": 100_000,
|
|
"isUniform": True,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"ingressConnectionEstablishmentMaxQueueDepth": {
|
|
"min": 100,
|
|
"max": 100_000,
|
|
"period": 60,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"internalQueryStatsRateLimit": {
|
|
"min": -1,
|
|
"max": 1,
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"internalQueryStatsSampleRate": {
|
|
"min": 0,
|
|
"max": 1,
|
|
"choices": [0, 0.0001, 0.1, 1.0],
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
"internalQueryStatsCacheSize": {
|
|
"choices": ["0.00001MB", "0MB", "1MB", "10MB"],
|
|
"period": 10,
|
|
"fuzz_at": ["startup", "runtime"],
|
|
},
|
|
# If we are enabling the above query stats flags in a test, we should also enable this one to catch any errors on collected queries.
|
|
"internalQueryStatsErrorsAreCommandFatal": {
|
|
"default": True,
|
|
"fuzz_at": ["startup"],
|
|
},
|
|
},
|
|
"cluster": {
|
|
"configServerReadPreferenceForCatalogQueries": {
|
|
"choices": [{"mustAlwaysUseNearest": True}, {"mustAlwaysUseNearest": False}, {}],
|
|
"period": 10,
|
|
"fuzz_at": ["cluster"],
|
|
},
|
|
"onlyTargetDataOwningShardsForMultiWrites": {
|
|
"choices": [{"enabled": True}, {"enabled": False}, {}],
|
|
"period": 10,
|
|
"fuzz_at": ["cluster"],
|
|
},
|
|
"fleCompactionOptions": {
|
|
"document": {
|
|
"maxCompactionSize": {
|
|
"exclude_prob": 0.5,
|
|
"min": 1,
|
|
"max": 2147483647, # int max
|
|
},
|
|
"maxAnchorCompactionSize": {"exclude_prob": 0.5, "min": 1, "max": 2147483647},
|
|
"maxESCEntriesPerCompactionDelete": {"exclude_prob": 0.5, "min": 1, "max": 350000},
|
|
"compactAnchorPaddingFactor": {
|
|
"exclude_prob": 0.5,
|
|
"min": 0,
|
|
"max": 1,
|
|
"isUniform": True,
|
|
},
|
|
},
|
|
"period": 10,
|
|
"fuzz_at": ["cluster"],
|
|
},
|
|
"fleAllowTotalTagOverheadToExceedBSONLimit": {
|
|
"choices": [{"shouldOverride": True}, {"shouldOverride": False}, {}],
|
|
"period": 10,
|
|
"fuzz_at": ["cluster"],
|
|
},
|
|
"fleDisableSubstringPreviewParameterLimits": {
|
|
"choices": [{"shouldOverride": True}, {"shouldOverride": False}, {}],
|
|
"period": 10,
|
|
"fuzz_at": ["cluster"],
|
|
},
|
|
"auditConfig": {
|
|
"document": {
|
|
"auditAuthorizationSuccess": {"choices": [True, False]},
|
|
"filter": {
|
|
"document": {
|
|
# Only a very small subset of possible filter expressions, since any match
|
|
# expression can be used.
|
|
"atype": {
|
|
"exclude_prob": 0.3,
|
|
"choices": [
|
|
"authenticate",
|
|
"authCheck",
|
|
"createCollection",
|
|
"dropCollection",
|
|
{"$in": ["authenticate", "createCollection"]},
|
|
],
|
|
},
|
|
"users.user": {"exclude_prob": 0.7, "choices": ["admin", "user", "abc"]},
|
|
"users.db": {"exclude_prob": 0.7, "choices": ["admin", "test", "db"]},
|
|
"roles.role": {"exclude_prob": 0.7, "choices": ["role1", "role2"]},
|
|
"roles.db": {"exclude_prob": 0.7, "choices": ["admin", "test", "db"]},
|
|
"result": {
|
|
"exclude_prob": 0.5,
|
|
"isRandomizedChoice": True,
|
|
"lower_bound": 0,
|
|
"upper_bound": 500,
|
|
"choices": [0, 13, 18, 26, 334],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"period": 10,
|
|
"fuzz_at": ["cluster"],
|
|
},
|
|
},
|
|
}
|
|
|
|
config_fuzzer_extra_configs = {
|
|
"mongod": {
|
|
"directoryperdb": {"choices": [True, False]},
|
|
"wiredTigerDirectoryForIndexes": {"choices": [True, False]},
|
|
"auditDestination": {"default": "console"},
|
|
"auditRuntimeConfiguration": {"choices": ["on", "off"]},
|
|
"auditSchema": {"choices": ["mongo", "OCSF"]},
|
|
},
|
|
"mongos": {
|
|
"auditDestination": {"default": "console"},
|
|
"auditRuntimeConfiguration": {"choices": ["on", "off"]},
|
|
"auditSchema": {"choices": ["mongo", "OCSF"]},
|
|
},
|
|
}
|