summaryrefslogtreecommitdiff
path: root/buildscripts/resmokelib/testing/fixtures/fixturelib.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildscripts/resmokelib/testing/fixtures/fixturelib.py')
-rw-r--r--buildscripts/resmokelib/testing/fixtures/fixturelib.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/buildscripts/resmokelib/testing/fixtures/fixturelib.py b/buildscripts/resmokelib/testing/fixtures/fixturelib.py
index d5c715b6b37..ef298296562 100644
--- a/buildscripts/resmokelib/testing/fixtures/fixturelib.py
+++ b/buildscripts/resmokelib/testing/fixtures/fixturelib.py
@@ -1,4 +1,5 @@
"""Facade wrapping the resmokelib dependencies used by fixtures."""
+from typing import Dict
from buildscripts.resmokelib import config
from buildscripts.resmokelib import core
@@ -6,6 +7,7 @@ from buildscripts.resmokelib import errors
from buildscripts.resmokelib import utils
from buildscripts.resmokelib import logging
from buildscripts.resmokelib.core import network
+from buildscripts.resmokelib.utils.dictionary import merge_dicts
from buildscripts.resmokelib.utils.history import make_historic as _make_historic
from buildscripts.resmokelib.testing.fixtures import _builder
@@ -94,6 +96,23 @@ class FixtureLib:
"""Return the next available port that fixture can use."""
return network.PortAllocator.next_fixture_port(job_num)
+ SET_PARAMETERS_KEY = "set_parameters"
+
+ def merge_mongo_option_dicts(self, original: Dict, override: Dict):
+ """
+ Merge mongod/s options such that --setParameter is merged recursively.
+
+ Values from `original` are replaced in-place with those of `override` where they exist.
+ """
+ original_set_parameters = original.get(self.SET_PARAMETERS_KEY, {})
+ override_set_parameters = override.get(self.SET_PARAMETERS_KEY, {})
+
+ merged_set_parameters = merge_dicts(original_set_parameters, override_set_parameters)
+ original.update(override)
+ original[self.SET_PARAMETERS_KEY] = merged_set_parameters
+
+ return original
+
class _FixtureConfig(object): # pylint: disable=too-many-instance-attributes
"""Class that stores fixture configuration info."""