summaryrefslogtreecommitdiff
path: root/buildscripts
diff options
context:
space:
mode:
authorDaniel Gottlieb <daniel.gottlieb@mongodb.com>2020-08-09 23:25:25 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-08-10 13:56:23 +0000
commitd774ce166fc451274c518253007e825810de4e04 (patch)
treedf6c740d2886458c0bd0e7a298c0b6004c6b17f4 /buildscripts
parentbf48331b0343b191c0d94aef888cdec471a6508b (diff)
downloadmongo-d774ce166fc451274c518253007e825810de4e04.tar.gz
SERVER-50188: Allow multiple setParameters for the same key if their value is also identical.
Diffstat (limited to 'buildscripts')
-rw-r--r--buildscripts/resmokelib/configure_resmoke.py11
-rw-r--r--buildscripts/tests/resmoke_end2end/test_resmoke.py34
2 files changed, 35 insertions, 10 deletions
diff --git a/buildscripts/resmokelib/configure_resmoke.py b/buildscripts/resmokelib/configure_resmoke.py
index b8ab910f716..8dc953bb535 100644
--- a/buildscripts/resmokelib/configure_resmoke.py
+++ b/buildscripts/resmokelib/configure_resmoke.py
@@ -51,8 +51,15 @@ def _validate_options(parser, args):
errors = []
for key, values in agg_set_params.items():
- if len(values) > 1:
- errors.append(f"setParameter has multiple values. Key: {key} Values: {values}")
+ if len(values) == 1:
+ continue
+
+ for left, _ in enumerate(values):
+ for right in range(left + 1, len(values)):
+ if values[left] != values[right]:
+ errors.append(
+ f"setParameter has multiple distinct values. Key: {key} Values: {values}"
+ )
return errors
diff --git a/buildscripts/tests/resmoke_end2end/test_resmoke.py b/buildscripts/tests/resmoke_end2end/test_resmoke.py
index 48b095f7dc3..f4f7b1642b5 100644
--- a/buildscripts/tests/resmoke_end2end/test_resmoke.py
+++ b/buildscripts/tests/resmoke_end2end/test_resmoke.py
@@ -267,12 +267,7 @@ class TestTestSelection(_ResmokeSelftest):
class TestSetParameters(_ResmokeSelftest):
def setUp(self):
- self.shell_output_file = f"{self.test_dir}/output.json"
- try:
- os.remove(self.shell_output_file)
- except OSError:
- pass
-
+ self.shell_output_file = None
super().setUp()
def parse_output_json(self):
@@ -299,12 +294,18 @@ class TestSetParameters(_ResmokeSelftest):
def generate_suite_and_execute_resmoke(self, suite_template, resmoke_args):
"""Generates a resmoke suite with the appropriate `outputLocation` and runs resmoke against that suite with the `fixture_info` test. Input `resmoke_args` are appended to the run command."""
+ self.shell_output_file = f"{self.test_dir}/output.json"
+ try:
+ os.remove(self.shell_output_file)
+ except OSError:
+ pass
+
suite_file = f"{self.test_dir}/suite.yml"
self.generate_suite(suite_file, suite_template)
self.logger.info(
- "Running test. Template suite: {suite_template} Rewritten suite: {self.suite_file} Resmoke Args: {resmoke_args} Test output file: {self.shell_output_file}."
- )
+ "Running test. Template suite: %s Rewritten suite: %s Resmoke Args: %s Test output file: %s.",
+ suite_template, suite_file, resmoke_args, self.shell_output_file)
resmoke_process = core.programs.make_process(self.logger, [
sys.executable, "buildscripts/resmoke.py", "run", f"--suites={suite_file}",
@@ -384,3 +385,20 @@ class TestSetParameters(_ResmokeSelftest):
"""--mongosSetParameter={"maxTimeMSForHedgedReads": 100}""",
"""--mongosSetParameter={"maxTimeMSForHedgedReads": 1000}"""
]).wait())
+
+ def test_allow_duplicate_set_parameter_values(self):
+ self.assertEqual(
+ 0,
+ self.generate_suite_and_execute_resmoke(
+ f"{self.suites_root}/resmoke_selftest_set_parameters.yml", [
+ """--mongodSetParameter={"enableFlowControl": false}""",
+ """--mongodSetParameter={"enableFlowControl": false}"""
+ ]).wait())
+
+ self.assertEqual(
+ 0,
+ self.generate_suite_and_execute_resmoke(
+ f"{self.suites_root}/resmoke_selftest_set_parameters.yml", [
+ """--mongodSetParameter={"mirrorReads": {samplingRate: 1.0}}""",
+ """--mongodSetParameter={"mirrorReads": {samplingRate: 1.0}}"""
+ ]).wait())