diff options
author | Robert Guo <robert.guo@mongodb.com> | 2021-06-10 19:36:11 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-06-15 22:28:00 +0000 |
commit | c940646a2bda05b6e6ba1c84be9d3c52a6426559 (patch) | |
tree | cbc1468e9a5004b5333b517cb97e387eddfc57f5 | |
parent | b8ffbe6748bcb150d2c818bce72d19fdcd4787d4 (diff) | |
download | mongo-c940646a2bda05b6e6ba1c84be9d3c52a6426559.tar.gz |
SERVER-57580 combine task_path_suffix and use_multiversion into
require_multiversion
24 files changed, 96 insertions, 136 deletions
diff --git a/buildscripts/burn_in_tests.py b/buildscripts/burn_in_tests.py index b44284e8022..e7ca49ce25a 100755 --- a/buildscripts/burn_in_tests.py +++ b/buildscripts/burn_in_tests.py @@ -257,14 +257,14 @@ class TaskInfo(NamedTuple): display_task_name: Display name of task. resmoke_args: Arguments to provide to resmoke on task invocation. tests: List of tests to run as part of task. - use_multiversion: If running under multiversion, path to multiversion binaries. + require_multiversion: Requires downloading Multiversion binaries. distro: Evergreen distro task runs on. """ display_task_name: str resmoke_args: str tests: List[str] - use_multiversion: Optional[str] + require_multiversion: Optional[bool] distro: str @classmethod @@ -281,8 +281,9 @@ class TaskInfo(NamedTuple): """ return cls( display_task_name=_get_task_name(task), resmoke_args=_set_resmoke_args(task), - tests=tests_by_suite[task.resmoke_suite], use_multiversion=task.multiversion_path, - distro=_distro_to_run_task_on(task, evg_proj_config, build_variant)) + tests=tests_by_suite[task.resmoke_suite], + require_multiversion=task.require_multiversion, distro=_distro_to_run_task_on( + task, evg_proj_config, build_variant)) def create_task_list(evergreen_conf: EvergreenProjectConfig, build_variant: str, diff --git a/buildscripts/burn_in_tests_multiversion.py b/buildscripts/burn_in_tests_multiversion.py index e382ca83ac3..18891b90b6c 100644 --- a/buildscripts/burn_in_tests_multiversion.py +++ b/buildscripts/burn_in_tests_multiversion.py @@ -40,7 +40,6 @@ MULTIVERSION_CONFIG_KEY = gen_multiversion.MULTIVERSION_CONFIG_KEY MULTIVERSION_PASSTHROUGH_TAG = gen_multiversion.PASSTHROUGH_TAG RANDOM_MULTIVERSION_REPLSETS_TAG = gen_multiversion.RANDOM_REPLSETS_TAG BURN_IN_MULTIVERSION_TASK = gen_multiversion.BURN_IN_TASK -TASK_PATH_SUFFIX = "/data/multiversion" DEFAULT_CONFIG_DIR = "generated_resmoke_config" DEFAULT_TEST_SUITE_DIR = os.path.join("buildscripts", "resmokeconfig", "suites") diff --git a/buildscripts/ciconfig/evergreen.py b/buildscripts/ciconfig/evergreen.py index e4e517a9647..877acf42026 100644 --- a/buildscripts/ciconfig/evergreen.py +++ b/buildscripts/ciconfig/evergreen.py @@ -164,11 +164,6 @@ class Task(object): return self.find_func_command("do multiversion setup") @property - def is_multiversion_task(self): - """Return True if a multiversion path is found.""" - return self.multiversion_setup_command is not None or self.multiversion_path is not None - - @property def generated_task_name(self): """ Get basename of the tasks generated by this _gen task. @@ -192,15 +187,16 @@ class Task(object): return suite_name @property - def multiversion_path(self): + def require_multiversion(self): """Get the multiversion path if task uses multiversion setup, or None.""" + command_obj = None if self.is_run_tests_task: - return self.run_tests_command.get("vars", {}).get("task_path_suffix") + command_obj = self.run_tests_command if self.is_generate_resmoke_task: - return self.generate_resmoke_tasks_command.get("vars", {}).get("use_multiversion") + command_obj = self.generate_resmoke_tasks_command - return None + return command_obj.get("vars", {}).get("require_multiversion") @property def resmoke_args(self): diff --git a/buildscripts/evergreen_burn_in_tests.py b/buildscripts/evergreen_burn_in_tests.py index 14fd46672cc..b19ef681a7a 100644 --- a/buildscripts/evergreen_burn_in_tests.py +++ b/buildscripts/evergreen_burn_in_tests.py @@ -227,7 +227,6 @@ class TaskGenerator: :param test_name: Name of test that should be executed. :return: Configuration for generating the specified task. """ - multiversion_path = self.task_info.use_multiversion resmoke_args = self.task_info.resmoke_args sub_task_name = self.generate_name(index) @@ -238,11 +237,10 @@ class TaskGenerator: "resmoke_args": f"{resmoke_args} {self.repeat_config.generate_resmoke_options()} {test_unix_style}" } - if multiversion_path: - run_tests_vars["task_path_suffix"] = multiversion_path timeout = self.generate_timeouts(test_name) - commands = resmoke_commands("run tests", run_tests_vars, timeout, multiversion_path) + commands = resmoke_commands("run tests", run_tests_vars, timeout, + self.task_info.require_multiversion) dependencies = {TaskDependency(TASK_WITH_ARTIFACTS)} return Task(sub_task_name, commands, dependencies) diff --git a/buildscripts/evergreen_gen_fuzzer_tests.py b/buildscripts/evergreen_gen_fuzzer_tests.py index ddaf298df92..b0c41011741 100755 --- a/buildscripts/evergreen_gen_fuzzer_tests.py +++ b/buildscripts/evergreen_gen_fuzzer_tests.py @@ -45,7 +45,7 @@ class EvgExpansions(BaseModel): should_shuffle: Should remove shuffle tests before executing. suite: Resmoke suite to run the tests. task_id: ID of task currently being executed. - task_path_suffix: Multiversion configuration if needed. + require_multiversion: Requires downloading Multiversion binaries. timeout_secs: Timeout to set for task execution. use_large_distro: Should tasks be generated to run on a large distro. """ @@ -68,7 +68,7 @@ class EvgExpansions(BaseModel): task_id: str timeout_secs: int use_large_distro: Optional[bool] - task_path_suffix: Optional[str] + require_multiversion: Optional[bool] @classmethod def from_yaml_file(cls, path: str) -> "EvgExpansions": @@ -97,7 +97,7 @@ class EvgExpansions(BaseModel): jstestfuzz_vars=self.jstestfuzz_vars, variant=self.build_variant, continue_on_failure=self.continue_on_failure, resmoke_jobs_max=self.resmoke_jobs_max, should_shuffle=self.should_shuffle, timeout_secs=self.timeout_secs, - use_multiversion=self.task_path_suffix, suite=self.suite, + require_multiversion=self.require_multiversion, suite=self.suite, use_large_distro=self.use_large_distro, large_distro_name=self.large_distro_name, config_location= f"{self.build_variant}/{self.revision}/generate_tasks/{self.name}_gen-{self.build_id}.tgz" diff --git a/buildscripts/evergreen_gen_multiversion_tests.py b/buildscripts/evergreen_gen_multiversion_tests.py index 54de6eba659..2a6686fa95c 100755 --- a/buildscripts/evergreen_gen_multiversion_tests.py +++ b/buildscripts/evergreen_gen_multiversion_tests.py @@ -88,7 +88,7 @@ class EvgExpansions(BaseModel): resmoke_jobs_max: Optional[int] should_shuffle: Optional[bool] timeout_secs: Optional[int] - use_multiversion: Optional[str] + require_multiversion: Optional[bool] use_large_distro: Optional[bool] large_distro_name: Optional[str] revision: str @@ -151,7 +151,7 @@ class EvgExpansions(BaseModel): resmoke_jobs_max=self.resmoke_jobs_max, should_shuffle=self.should_shuffle, timeout_secs=self.timeout_secs, - use_multiversion=self.use_multiversion, + require_multiversion=self.require_multiversion, suite=self.suite or self.task, use_large_distro=self.use_large_distro, large_distro_name=self.large_distro_name, diff --git a/buildscripts/evergreen_generate_resmoke_tasks.py b/buildscripts/evergreen_generate_resmoke_tasks.py index 16ff4ca96d3..9a05eb14ca7 100755 --- a/buildscripts/evergreen_generate_resmoke_tasks.py +++ b/buildscripts/evergreen_generate_resmoke_tasks.py @@ -73,7 +73,7 @@ class EvgExpansions(BaseModel): task_id: ID of task creating the generated configuration. task_name: Name of task creating the generated configuration. use_large_distro: Should the generated tasks run on "large" distros. - use_multiversion: Multiversion configuration if generated tasks are multiversion. + require_multiversion: Requires downloading Multiversion binaries. """ build_id: str @@ -93,7 +93,7 @@ class EvgExpansions(BaseModel): task_id: str task_name: str use_large_distro: bool = False - use_multiversion: Optional[str] + require_multiversion: Optional[bool] @classmethod def from_yaml_file(cls, path: str) -> "EvgExpansions": @@ -159,8 +159,9 @@ class EvgExpansions(BaseModel): """Get the parameters to use for generating tasks.""" return ResmokeGenTaskParams( use_large_distro=self.use_large_distro, large_distro_name=self.large_distro_name, - use_multiversion=self.use_multiversion, repeat_suites=self.resmoke_repeat_suites, - resmoke_args=self.resmoke_args, resmoke_jobs_max=self.resmoke_jobs_max, config_location= + require_multiversion=self.require_multiversion, + repeat_suites=self.resmoke_repeat_suites, resmoke_args=self.resmoke_args, + resmoke_jobs_max=self.resmoke_jobs_max, config_location= f"{self.build_variant}/{self.revision}/generate_tasks/{self.task}_gen-{self.build_id}.tgz" ) diff --git a/buildscripts/patch_builds/task_generation.py b/buildscripts/patch_builds/task_generation.py index c4ad822fc0e..b5933a5c4f9 100644 --- a/buildscripts/patch_builds/task_generation.py +++ b/buildscripts/patch_builds/task_generation.py @@ -13,21 +13,21 @@ MAX_SHRUB_TASKS_FOR_SINGLE_TASK = 1000 def resmoke_commands(run_tests_fn_name: str, run_tests_vars: Dict[str, Any], timeout_info: TimeoutInfo, - use_multiversion: Optional[str] = None) -> List[ShrubCommand]: + require_multiversion: Optional[bool] = None) -> List[ShrubCommand]: """ Create a list of commands to run a resmoke task. :param run_tests_fn_name: Name of function to run resmoke tests. :param run_tests_vars: Dictionary of variables to pass to run_tests function. :param timeout_info: Timeout info for task. - :param use_multiversion: If True include multiversion setup. + :param require_multiversion: Requires downloading Multiversion binaries. :return: List of commands to run a resmoke task. """ commands = [ timeout_info.cmd, FunctionCall("do setup"), - FunctionCall("configure evergreen api credentials") if use_multiversion else None, - FunctionCall("do multiversion setup") if use_multiversion else None, + FunctionCall("configure evergreen api credentials") if require_multiversion else None, + FunctionCall("do multiversion setup") if require_multiversion else None, FunctionCall(run_tests_fn_name, run_tests_vars), ] diff --git a/buildscripts/selected_tests.py b/buildscripts/selected_tests.py index ffdec868bae..bbb6e4fbbfd 100644 --- a/buildscripts/selected_tests.py +++ b/buildscripts/selected_tests.py @@ -419,7 +419,7 @@ class SelectedTestsOrchestrator: gen_params = ResmokeGenTaskParams( use_large_distro=task_config.get("use_large_distro", False), large_distro_name=task_config.get("large_distro_name"), - use_multiversion=task_config.get("use_multiversion"), + require_multiversion=task_config.get("require_multiversion"), repeat_suites=task_config.get("repeat_suites", 1), resmoke_args=task_config["resmoke_args"], resmoke_jobs_max=task_config.get("resmoke_jobs_max"), diff --git a/buildscripts/task_generation/task_types/fuzzer_tasks.py b/buildscripts/task_generation/task_types/fuzzer_tasks.py index f7ece45c0b7..883b8ca814c 100644 --- a/buildscripts/task_generation/task_types/fuzzer_tasks.py +++ b/buildscripts/task_generation/task_types/fuzzer_tasks.py @@ -34,7 +34,7 @@ class FuzzerGenTaskParams(NamedTuple): resmoke_jobs_max: Maximum number of jobs resmoke should execute in parallel. should_shuffle: Should tests be executed out of order. timeout_secs: Timeout before test execution is considered hung. - use_multiversion: Multiversion configuration if tests should run in multiversion mode. + require_multiversion: Requires downloading Multiversion binaries. use_large_distro: Should tests be generated on a large distro. add_to_display_task: Should generated tasks be grouped in a display task. """ @@ -51,7 +51,7 @@ class FuzzerGenTaskParams(NamedTuple): resmoke_jobs_max: int should_shuffle: bool timeout_secs: int - use_multiversion: Optional[str] + require_multiversion: Optional[bool] use_large_distro: Optional[bool] large_distro_name: Optional[str] config_location: str @@ -96,7 +96,7 @@ class FuzzerGenTaskService: "resmoke_args": f"{suite_arg} {params.resmoke_args}", "resmoke_jobs_max": params.resmoke_jobs_max, "should_shuffle": params.should_shuffle, - "task_path_suffix": params.use_multiversion, + "require_multiversion": params.require_multiversion, "timeout_secs": params.timeout_secs, "task": params.task_name, "gen_task_config_location": params.config_location, @@ -105,8 +105,8 @@ class FuzzerGenTaskService: commands = [ FunctionCall("do setup"), FunctionCall("configure evergreen api credentials") - if params.use_multiversion else None, - FunctionCall("do multiversion setup") if params.use_multiversion else None, + if params.require_multiversion else None, + FunctionCall("do multiversion setup") if params.require_multiversion else None, FunctionCall("setup jstestfuzz"), FunctionCall("run jstestfuzz", params.jstestfuzz_params()), FunctionCall("run generated tests", run_tests_vars) diff --git a/buildscripts/task_generation/task_types/resmoke_tasks.py b/buildscripts/task_generation/task_types/resmoke_tasks.py index c583364426e..8bb0063edd3 100644 --- a/buildscripts/task_generation/task_types/resmoke_tasks.py +++ b/buildscripts/task_generation/task_types/resmoke_tasks.py @@ -32,7 +32,7 @@ class ResmokeGenTaskParams(NamedTuple): Parameters describing how a specific resmoke suite should be generated. use_large_distro: Whether generated tasks should be run on a "large" distro. - use_multiversion: Multiversion configuration if generated tasks are multiversion. + require_multiversion: Requires downloading Multiversion binaries. repeat_suites: How many times generated suites should be repeated. resmoke_args: Arguments to pass to resmoke in generated tasks. resmoke_jobs_max: Max number of jobs that resmoke should execute in parallel. @@ -41,7 +41,7 @@ class ResmokeGenTaskParams(NamedTuple): use_large_distro: bool large_distro_name: Optional[str] - use_multiversion: Optional[str] + require_multiversion: Optional[bool] repeat_suites: int resmoke_args: str resmoke_jobs_max: Optional[int] @@ -136,12 +136,12 @@ class ResmokeGenTaskService: run_tests_vars = self._get_run_tests_vars(target_suite_file, suite.suite_name, params, suite.build_variant) - use_multiversion = params.use_multiversion + require_multiversion = params.require_multiversion timeout_cmd = timeout_est.generate_timeout_cmd(self.gen_task_options.is_patch, params.repeat_suites, self.gen_task_options.use_default_timeouts) commands = resmoke_commands("run generated tests", run_tests_vars, timeout_cmd, - use_multiversion) + require_multiversion) return Task(sub_task_name, commands, self._get_dependencies()) @@ -165,8 +165,8 @@ class ResmokeGenTaskService: if params.resmoke_jobs_max: variables["resmoke_jobs_max"] = params.resmoke_jobs_max - if params.use_multiversion: - variables["task_path_suffix"] = params.use_multiversion + if params.require_multiversion: + variables["require_multiversion"] = params.require_multiversion return variables diff --git a/buildscripts/tests/ciconfig/test_evergreen.py b/buildscripts/tests/ciconfig/test_evergreen.py index e1734016023..40d473c0f47 100644 --- a/buildscripts/tests/ciconfig/test_evergreen.py +++ b/buildscripts/tests/ciconfig/test_evergreen.py @@ -156,20 +156,19 @@ class TestTask(unittest.TestCase): # pylint: disable=too-many-public-methods self.assertDictEqual(task_commands[0], task.run_tests_command) def test_run_tests_multiversion(self): - multiversion_path = "/data/multiversion" + require_multiversion = True task_commands = [{"func": "do multiversion setup"}, { "func": "run tests", "vars": { - "task_path_suffix": multiversion_path, + "require_multiversion": True, "resmoke_args": "--suites=core --shellWriteMode=commands" } }] task_dict = {"name": "jsCore", "commands": task_commands} task = _evergreen.Task(task_dict) - self.assertTrue(task.is_multiversion_task) self.assertEqual(task.multiversion_setup_command, {"func": "do multiversion setup"}) - self.assertEqual(multiversion_path, task.multiversion_path) + self.assertEqual(require_multiversion, task.require_multiversion) def test_run_tests_no_multiversion(self): task_commands = [{ @@ -179,9 +178,9 @@ class TestTask(unittest.TestCase): # pylint: disable=too-many-public-methods task_dict = {"name": "jsCore", "commands": task_commands} task = _evergreen.Task(task_dict) - self.assertFalse(task.is_multiversion_task) + self.assertIsNone(task.require_multiversion) self.assertIsNone(task.multiversion_setup_command) - self.assertIsNone(task.multiversion_path) + self.assertIsNone(task.require_multiversion) def test_resmoke_args_gen(self): task_commands = [{ @@ -271,19 +270,18 @@ class TestTask(unittest.TestCase): # pylint: disable=too-many-public-methods self.assertEqual("jsCore", task.generated_task_name) def test_gen_resmoke_multiversion(self): - multiversion_path = "/data/multiversion" + require_multiversion = True task_name = "core" task_commands = [{ "func": "generate resmoke tasks", "vars": { "task": task_name, "resmoke_args": "--shellWriteMode=commands", - "use_multiversion": multiversion_path + "require_multiversion": require_multiversion } }] task_dict = {"name": "jsCore", "commands": task_commands} task = _evergreen.Task(task_dict) - self.assertTrue(task.is_multiversion_task) - self.assertEqual(multiversion_path, task.multiversion_path) + self.assertEqual(require_multiversion, task.require_multiversion) def test_gen_resmoke_no_multiversion(self): task_name = "core" @@ -294,8 +292,7 @@ class TestTask(unittest.TestCase): # pylint: disable=too-many-public-methods task_dict = {"name": "jsCore", "commands": task_commands} task = _evergreen.Task(task_dict) - self.assertFalse(task.is_multiversion_task) - self.assertIsNone(task.multiversion_path) + self.assertIsNone(task.require_multiversion) def test_get_vars_suite_name_generate_resmoke_tasks(self): task_name = "jsCore" diff --git a/buildscripts/tests/patch_builds/test_task_generation.py b/buildscripts/tests/patch_builds/test_task_generation.py index e0609d1d6f3..11e12f7cb2e 100644 --- a/buildscripts/tests/patch_builds/test_task_generation.py +++ b/buildscripts/tests/patch_builds/test_task_generation.py @@ -23,7 +23,7 @@ class TestResmokeCommand(unittest.TestCase): timeout_info = under_test.TimeoutInfo.default_timeout() commands = under_test.resmoke_commands(run_tests, test_vars, timeout_info, - use_multiversion="multiversion") + require_multiversion="multiversion") # 4 expected command = 1 for setup + 1 for running tests + 2 for multiversion setup. self.assertEqual(4, len(commands)) @@ -44,7 +44,7 @@ class TestResmokeCommand(unittest.TestCase): timeout_info = under_test.TimeoutInfo.overridden(timeout=5) commands = under_test.resmoke_commands(run_tests, test_vars, timeout_info, - use_multiversion="multiversion") + require_multiversion="multiversion") # 5 expected command = 1 for setup + 1 for running tests + 2 for multiversion setup + # 1 for timeout. diff --git a/buildscripts/tests/task_generation/task_types/test_fuzzer_tasks.py b/buildscripts/tests/task_generation/task_types/test_fuzzer_tasks.py index 7af8157e2da..10f556e9311 100644 --- a/buildscripts/tests/task_generation/task_types/test_fuzzer_tasks.py +++ b/buildscripts/tests/task_generation/task_types/test_fuzzer_tasks.py @@ -21,7 +21,7 @@ def build_mock_fuzzer_params(multi_version=None, jstestfuzz_vars="vars for jstes resmoke_jobs_max=5, should_shuffle=True, timeout_secs=100, - use_multiversion=multi_version, + require_multiversion=multi_version, use_large_distro=None, add_to_display_task=True, large_distro_name="large distro", diff --git a/buildscripts/tests/task_generation/task_types/test_resmoke_tasks.py b/buildscripts/tests/task_generation/task_types/test_resmoke_tasks.py index a6f9b2670bd..82425354f1c 100644 --- a/buildscripts/tests/task_generation/task_types/test_resmoke_tasks.py +++ b/buildscripts/tests/task_generation/task_types/test_resmoke_tasks.py @@ -34,7 +34,7 @@ def build_mock_gen_options(use_default_timeouts=False): def build_mock_gen_params(repeat_suites=1, resmoke_args="resmoke args"): return under_test.ResmokeGenTaskParams( use_large_distro=False, - use_multiversion=None, + require_multiversion=None, repeat_suites=repeat_suites, resmoke_args=resmoke_args, resmoke_jobs_max=None, diff --git a/buildscripts/tests/task_generation/test_gen_task_service.py b/buildscripts/tests/task_generation/test_gen_task_service.py index 611d15b0029..c8d268e4b76 100644 --- a/buildscripts/tests/task_generation/test_gen_task_service.py +++ b/buildscripts/tests/task_generation/test_gen_task_service.py @@ -26,7 +26,7 @@ def build_mock_fuzzer_params(multi_version=None, use_large_distro=None, add_to_d resmoke_jobs_max=5, should_shuffle=True, timeout_secs=100, - use_multiversion=multi_version, + require_multiversion=multi_version, use_large_distro=use_large_distro, add_to_display_task=add_to_display, large_distro_name=large_distro_name, diff --git a/buildscripts/tests/test_burn_in_tags.py b/buildscripts/tests/test_burn_in_tags.py index dc8672bc350..9738ffa7d0b 100644 --- a/buildscripts/tests/test_burn_in_tags.py +++ b/buildscripts/tests/test_burn_in_tags.py @@ -126,7 +126,7 @@ class TestGenerateEvgTasks(unittest.TestCase): display_task_name="aggregation_mongos_passthrough", resmoke_args="--suites=aggregation_mongos_passthrough --storageEngine=wiredTiger", tests=["jstests/aggregation/ifnull.js"], - use_multiversion=None, + require_multiversion=None, distro="", ) } # yapf: disable diff --git a/buildscripts/tests/test_burn_in_tests.py b/buildscripts/tests/test_burn_in_tests.py index 58cea86203b..009749f5fc3 100644 --- a/buildscripts/tests/test_burn_in_tests.py +++ b/buildscripts/tests/test_burn_in_tests.py @@ -24,7 +24,7 @@ def create_tests_by_task_mock(n_tasks, n_tests): f"task_{i}_gen": under_test.TaskInfo(display_task_name=f"task_{i}", resmoke_args=f"--suites=suite_{i}", tests=[f"jstests/tests_{j}" for j in range(n_tests)], - use_multiversion=None, distro=f"distro_{i}") + require_multiversion=None, distro=f"distro_{i}") for i in range(n_tasks) } @@ -321,7 +321,7 @@ def create_variant_task_mock(task_name, suite_name, distro="distro"): variant_task.resmoke_suite = suite_name variant_task.get_vars_suite_name.return_value = suite_name variant_task.combined_resmoke_args = f"--suites={suite_name}" - variant_task.multiversion_path = None + variant_task.require_multiversion = None variant_task.run_on = [distro] return variant_task @@ -346,7 +346,7 @@ class TestTaskInfo(unittest.TestCase): self.assertIn(suite_name, task_info.resmoke_args) for test in test_list: self.assertIn(test, task_info.tests) - self.assertIsNone(task_info.use_multiversion) + self.assertIsNone(task_info.require_multiversion) self.assertEqual(distro_name, task_info.distro) def test_generated_task_no_large_on_task(self): @@ -370,7 +370,7 @@ class TestTaskInfo(unittest.TestCase): self.assertIn(suite_name, task_info.resmoke_args) for test in test_list: self.assertIn(test, task_info.tests) - self.assertIsNone(task_info.use_multiversion) + self.assertIsNone(task_info.require_multiversion) self.assertEqual(distro_name, task_info.distro) def test_generated_task_no_large_on_build_variant(self): @@ -394,7 +394,7 @@ class TestTaskInfo(unittest.TestCase): self.assertIn(suite_name, task_info.resmoke_args) for test in test_list: self.assertIn(test, task_info.tests) - self.assertIsNone(task_info.use_multiversion) + self.assertIsNone(task_info.require_multiversion) self.assertEqual(distro_name, task_info.distro) def test_generated_task_large_distro(self): @@ -424,7 +424,7 @@ class TestTaskInfo(unittest.TestCase): self.assertIn(suite_name, task_info.resmoke_args) for test in test_list: self.assertIn(test, task_info.tests) - self.assertIsNone(task_info.use_multiversion) + self.assertIsNone(task_info.require_multiversion) self.assertEqual(large_distro_name, task_info.distro) @@ -472,7 +472,7 @@ class TestCreateTaskList(unittest.TestCase): self.assertIn("suite_1", task_info.resmoke_args) for i in range(3): self.assertIn(f"test{i}.js", task_info.tests) - self.assertIsNone(task_info.use_multiversion) + self.assertIsNone(task_info.require_multiversion) self.assertEqual("distro 1", task_info.distro) def test_create_task_list_with_excludes(self): diff --git a/buildscripts/tests/test_burn_in_tests_multiversion.py b/buildscripts/tests/test_burn_in_tests_multiversion.py index d5bcf373ef5..5d63fe76015 100644 --- a/buildscripts/tests/test_burn_in_tests_multiversion.py +++ b/buildscripts/tests/test_burn_in_tests_multiversion.py @@ -42,7 +42,7 @@ def create_tests_by_task_mock(n_tasks, n_tests, multiversion_values=None): display_task_name=f"task_{i}", resmoke_args=f"--suites=suite_{i}", tests=[f"jstests/tests_{j}" for j in range(n_tests)], - use_multiversion=multiversion_values[i], + require_multiversion=multiversion_values[i], distro="", ) for i in range(n_tasks) @@ -75,7 +75,7 @@ def create_multiversion_tests_by_task_mock(n_tasks, n_tests): display_task_name=f"task_{i}", resmoke_args=f"--suites=suite_{i}", tests=[f"jstests/{MV_MOCK_TESTS[MV_MOCK_SUITES[i]][j]}" for j in range(n_tests)], - use_multiversion=None, + require_multiversion=None, distro="", ) for i in range(n_tasks) @@ -130,7 +130,7 @@ def create_variant_task_mock(task_name, suite_name, distro="distro"): variant_task.resmoke_suite = suite_name variant_task.get_vars_suite_name.return_value = suite_name variant_task.combined_resmoke_args = f"--suites={suite_name}" - variant_task.multiversion_path = None + variant_task.require_multiversion = None variant_task.run_on = [distro] return variant_task @@ -334,36 +334,12 @@ class TestCreateMultiversionGenerateTasksConfig(unittest.TestCase): class TestGenerateConfig(unittest.TestCase): - def test_validate_use_multiversion(self): + def test_validate_multiversion(self): evg_conf_mock = MagicMock() - gen_config = under_test.GenerateConfig("build_variant", "project") - gen_config.validate(evg_conf_mock) -class TestCreateGenerateTasksConfig(unittest.TestCase): - @unittest.skipIf(sys.platform.startswith("win"), "not supported on windows") - def test_multiversion_path_is_used(self): - n_tasks = 1 - n_tests = 1 - build_variant = BuildVariant("variant") - gen_config = MagicMock(run_build_variant="variant", distro=None) - repeat_config = MagicMock() - multiversion_path = "multiversion_path" - tests_by_task = create_tests_by_task_mock(n_tasks, n_tests, [multiversion_path]) - mock_evg_api = MagicMock() - - executor = GenerateBurnInExecutor(gen_config, repeat_config, mock_evg_api) - executor.add_config_for_build_variant(build_variant, tests_by_task) - - shrub_project = ShrubProject.empty().add_build_variant(build_variant) - evg_config_dict = shrub_project.as_dict() - tasks = evg_config_dict["tasks"] - self.assertEqual(n_tasks * n_tests, len(tasks)) - self.assertEqual(multiversion_path, tasks[0]["commands"][3]["vars"]["task_path_suffix"]) - - class TestGatherTaskInfo(unittest.TestCase): def test_multiversion_task(self): suite_name = "suite_1" @@ -372,7 +348,7 @@ class TestGatherTaskInfo(unittest.TestCase): evg_conf_mock = MagicMock() evg_conf_mock.get_task.return_value.is_generate_resmoke_task = False task_mock = create_variant_task_mock("task 1", suite_name, distro_name) - task_mock.multiversion_path = "/path/to/multiversion" + task_mock.require_multiversion = True test_list = [f"test{i}.js" for i in range(3)] tests_by_suite = { suite_name: test_list, @@ -385,5 +361,5 @@ class TestGatherTaskInfo(unittest.TestCase): self.assertIn(suite_name, task_info.resmoke_args) for test in test_list: self.assertIn(test, task_info.tests) - self.assertEqual(task_mock.multiversion_path, task_info.use_multiversion) + self.assertEqual(task_mock.require_multiversion, task_info.require_multiversion) self.assertEqual(distro_name, task_info.distro) diff --git a/buildscripts/tests/test_evergreen_burn_in_tests.py b/buildscripts/tests/test_evergreen_burn_in_tests.py index e78f915797b..87624813cab 100644 --- a/buildscripts/tests/test_evergreen_burn_in_tests.py +++ b/buildscripts/tests/test_evergreen_burn_in_tests.py @@ -304,7 +304,7 @@ def create_tests_by_task_mock(n_tasks, n_tests): f"task_{i}_gen": under_test.TaskInfo(display_task_name=f"task_{i}", resmoke_args=f"--suites=suite_{i}", tests=[f"jstests/tests_{j}" for j in range(n_tests)], - use_multiversion=None, distro=f"distro_{i}") + require_multiversion=None, distro=f"distro_{i}") for i in range(n_tasks) } @@ -369,7 +369,7 @@ class TestCreateGenerateTasksFile(unittest.TestCase): @patch(ns("sys.exit")) @patch(ns("validate_task_generation_limit")) def test_cap_on_task_generate(self, validate_mock, exit_mock): - gen_config = MagicMock(use_multiversion=False) + gen_config = MagicMock(require_multiversion=False) repeat_config = MagicMock() tests_by_task = MagicMock() mock_evg_api = MagicMock() diff --git a/buildscripts/tests/test_selected_tests.py b/buildscripts/tests/test_selected_tests.py index 6f34cfff60d..9d8efdeb4aa 100644 --- a/buildscripts/tests/test_selected_tests.py +++ b/buildscripts/tests/test_selected_tests.py @@ -282,7 +282,7 @@ class TestGetTaskConfigsForTestMappings(unittest.TestCase): "jstests/core/latch_analyzer.js", ], resmoke_args="", - use_multiversion=None, + require_multiversion=None, distro="", ), "auth_gen": @@ -290,7 +290,7 @@ class TestGetTaskConfigsForTestMappings(unittest.TestCase): display_task_name="task 2", tests=["jstests/auth/auth3.js"], resmoke_args="", - use_multiversion=None, + require_multiversion=None, distro="", ), } @@ -323,7 +323,7 @@ class TestGetTaskConfigsForTestMappings(unittest.TestCase): "jstests/core/latch_analyzer.js", ], resmoke_args="", - use_multiversion=None, + require_multiversion=None, distro="", ), } @@ -346,7 +346,7 @@ class TestGetTaskConfigsForTestMappings(unittest.TestCase): "jstests/core/latch_analyzer.js", ], resmoke_args="", - use_multiversion=None, + require_multiversion=None, distro="", ), } diff --git a/etc/evergreen.yml b/etc/evergreen.yml index 66f0deace1e..572f8e11a0d 100644 --- a/etc/evergreen.yml +++ b/etc/evergreen.yml @@ -3111,7 +3111,7 @@ tasks: suite: initial_sync_multiversion_fuzzer resmoke_args: "--mongodSetParameters='{logComponentVerbosity: {command: 2}}'" name: initial_sync_multiversion_fuzzer - task_path_suffix: "/data/multiversion" + require_multiversion: true ## initial sync generational fuzzer ## - <<: *jstestfuzz_template @@ -3145,7 +3145,7 @@ tasks: resmoke_args: "--mongodSetParameters='{logComponentVerbosity: {command: 2}}'" npm_command: agg-fuzzer name: aggregation_multiversion_fuzzer - task_path_suffix: "/data/multiversion" + require_multiversion: true ## Standalone generational fuzzer for multiversion aggregation expressions ## - <<: *jstestfuzz_template @@ -3164,7 +3164,7 @@ tasks: resmoke_args: "--mongodSetParameters='{logComponentVerbosity: {command: 2}}'" npm_command: agg-expr-fuzzer name: aggregation_expression_multiversion_fuzzer - task_path_suffix: "/data/multiversion" + require_multiversion: true ## Standalone generational fuzzer for checking optimized and unoptimized expression equivalence - <<: *jstestfuzz_template @@ -3294,7 +3294,7 @@ tasks: suite: generational_fuzzer resmoke_args: "--mongodSetParameters='{logComponentVerbosity: {command: 2}}'" name: update_fuzzer - task_path_suffix: "/data/multiversion" + require_multiversion: true ## jstestfuzz replication update generational fuzzer ## - <<: *jstestfuzz_template @@ -3310,7 +3310,7 @@ tasks: suite: generational_fuzzer_replication resmoke_args: "--mongodSetParameters='{logComponentVerbosity: {command: 2}}'" name: update_fuzzer_replication - task_path_suffix: "/data/multiversion" + require_multiversion: true ## rollback multiversion fuzzer ## - <<: *jstestfuzz_template @@ -3328,7 +3328,7 @@ tasks: # index build commit quorum. resmoke_args: "--mongodSetParameters='{logComponentVerbosity: {command: 2}, enableIndexBuildCommitQuorum: false}'" name: rollback_multiversion_fuzzer - task_path_suffix: "/data/multiversion" + require_multiversion: true ## rollback generational fuzzer ## - <<: *jstestfuzz_template @@ -3666,8 +3666,7 @@ tasks: resmoke_args: "--storageEngine=wiredTiger --mongodSetParameters='{logComponentVerbosity: {command: 2}}'" suite: jstestfuzz_replication is_jstestfuzz: true - use_multiversion: /data/multiversion - task_path_suffix: /data/multiversion + require_multiversion: true npm_command: jstestfuzz ## jstestfuzz initial sync replica set ## @@ -3723,8 +3722,7 @@ tasks: resmoke_args: "--storageEngine=wiredTiger --mongodSetParameters='{logComponentVerbosity: {command: 2}}'" suite: jstestfuzz_sharded is_jstestfuzz: true - use_multiversion: /data/multiversion - task_path_suffix: /data/multiversion + require_multiversion: true npm_command: jstestfuzz ## jstestfuzz sharded cluster causal consistency ## @@ -3853,7 +3851,7 @@ tasks: vars: suite: replica_sets_jscore_passthrough resmoke_args: --storageEngine=wiredTiger --includeWithAnyTags=multiversion_sanity_check - task_path_suffix: /data/multiversion + require_multiversion: true - name: replica_sets_jscore_multiversion_passthrough_gen tags: ["multiversion_passthrough"] @@ -3862,7 +3860,7 @@ tasks: vars: suite: replica_sets_jscore_passthrough resmoke_args: --storageEngine=wiredTiger - task_path_suffix: /data/multiversion + require_multiversion: true # Check that the mutational fuzzer can parse JS files modified in a patch build. - name: lint_fuzzer_sanity_patch @@ -4098,7 +4096,7 @@ tasks: vars: suite: change_streams resmoke_args: --storageEngine=wiredTiger - task_path_suffix: /data/multiversion + require_multiversion: true - <<: *task_template name: change_streams_update_v1_oplog @@ -4163,7 +4161,7 @@ tasks: vars: suite: change_streams_sharded_collections_passthrough resmoke_args: --storageEngine=wiredTiger - task_path_suffix: /data/multiversion + require_multiversion: true - <<: *task_template name: change_streams_whole_db_passthrough @@ -4808,7 +4806,7 @@ tasks: - func: "generate resmoke tasks" vars: resmoke_args: "--storageEngine=wiredTiger" - use_multiversion: /data/multiversion + require_multiversion: true - name: multiversion_gen tags: [] @@ -4816,7 +4814,7 @@ tasks: - func: "generate resmoke tasks" vars: resmoke_args: "--storageEngine=wiredTiger" - use_multiversion: /data/multiversion + require_multiversion: true # Tests the runFeatureFlagMultiversionTest helper. # This requires the 'featureFlagToaster' and 'featureFlagSpoon' parameters to be set to true on @@ -4827,7 +4825,7 @@ tasks: - func: "generate resmoke tasks" vars: resmoke_args: "--storageEngine=wiredTiger" - use_multiversion: /data/multiversion + require_multiversion: true - name: unittest_shell_hang_analyzer_gen tags: [] @@ -4900,7 +4898,7 @@ tasks: vars: suite: sharded_collections_jscore_passthrough resmoke_args: --storageEngine=wiredTiger - task_path_suffix: /data/multiversion + require_multiversion: true - <<: *task_template name: sharding_jscore_passthrough @@ -4919,7 +4917,7 @@ tasks: vars: suite: sharding_jscore_passthrough resmoke_args: --storageEngine=wiredTiger - task_path_suffix: /data/multiversion + require_multiversion: true - name: sharding_api_version_jscore_passthrough_gen tags: ["sharding", "jscore"] @@ -5091,7 +5089,7 @@ tasks: vars: suite: concurrency_replication resmoke_args: --storageEngine=wiredTiger - task_path_suffix: /data/multiversion + require_multiversion: true - name: concurrency_replication_causal_consistency_gen tags: ["concurrency", "repl", "large", "non_live_record"] @@ -5174,7 +5172,7 @@ tasks: vars: suite: concurrency_sharded_replication resmoke_args: --storageEngine=wiredTiger - task_path_suffix: /data/multiversion + require_multiversion: true - name: concurrency_sharded_replication_with_balancer_gen tags: ["concurrency", "common", "read_concern_maj", "large", "sharded"] @@ -5490,7 +5488,7 @@ tasks: - func: "generate randomized multiversion tasks" vars: resmoke_args: --storageEngine=wiredTiger --tagFile=generated_resmoke_config/multiversion_exclude_tags.yml - use_multiversion: /data/multiversion + require_multiversion: true suite: replica_sets_multiversion - <<: *task_template @@ -5517,7 +5515,7 @@ tasks: vars: use_large_distro: "true" resmoke_args: --storageEngine=wiredTiger --tagFile=generated_resmoke_config/multiversion_exclude_tags.yml - use_multiversion: /data/multiversion + require_multiversion: true suite: sharding_multiversion - name: sharding_max_mirroring_gen @@ -5575,7 +5573,7 @@ tasks: - func: "generate explicit multiversion tasks" vars: use_large_distro: "true" - use_multiversion: /data/multiversion + require_multiversion: true resmoke_args: --tagFile=generated_resmoke_config/multiversion_exclude_tags.yml - name: sharding_update_v1_oplog_gen diff --git a/evergreen/prelude.sh b/evergreen/prelude.sh index a44b69e7a0a..81bacd45325 100755 --- a/evergreen/prelude.sh +++ b/evergreen/prelude.sh @@ -1,5 +1,5 @@ if [[ "$0" == *"/evergreen/prelude.sh" ]]; then - echo "ERROR: do not execute this script. source it instead. ie: . prelude.sh" + echo "ERROR: do not execute this script. source it instead. i.e.: . prelude.sh" exit 1 fi set -o errexit diff --git a/evergreen/resmoke_tests_execute.sh b/evergreen/resmoke_tests_execute.sh index 5031b478980..561feb9c620 100644 --- a/evergreen/resmoke_tests_execute.sh +++ b/evergreen/resmoke_tests_execute.sh @@ -92,13 +92,7 @@ if [[ ${disable_unit_tests} = "false" && ! -f ${skip_tests} ]]; then extra_args="$extra_args --mongodSetParameter \"{'jsHeapLimitMB':10}\"" fi - path_value="$PATH" - if [ ${variant_path_suffix} ]; then - path_value="$path_value:${variant_path_suffix}" - fi - if [ ${task_path_suffix} ]; then - path_value="$path_value:${task_path_suffix}" - fi + path_value="$PATH:/data/multiversion" # The "resmoke_wrapper" expansion is used by the 'burn_in_tests' task to wrap the resmoke.py # invocation. It doesn't set any environment variables and should therefore come last in |