diff options
author | Daniel Gottlieb <daniel.gottlieb@mongodb.com> | 2020-08-09 23:25:25 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-08-10 13:56:23 +0000 |
commit | d774ce166fc451274c518253007e825810de4e04 (patch) | |
tree | df6c740d2886458c0bd0e7a298c0b6004c6b17f4 /buildscripts | |
parent | bf48331b0343b191c0d94aef888cdec471a6508b (diff) | |
download | mongo-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.py | 11 | ||||
-rw-r--r-- | buildscripts/tests/resmoke_end2end/test_resmoke.py | 34 |
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()) |