def task_def_to_fuzzer_params(self, task_def: Task, build_variant: str) -> FuzzerGenTaskParams: """ Build parameters for how a fuzzer task should be generated based on its task definition. :param task_def: Task definition in evergreen project config. :param build_variant: Name of Build Variant being generated. :return: Parameters for how a fuzzer task should be generated. """ variant = self.evg_project_config.get_variant(build_variant) run_vars = task_def.generate_resmoke_tasks_command.get("vars", {}) run_vars = { k: translate_run_var(v, variant) for k, v in run_vars.items() } return FuzzerGenTaskParams( task_name=remove_gen_suffix(task_def.name), variant=build_variant, suite=run_vars.get("suite"), num_files=int(run_vars.get("num_files")), num_tasks=int(run_vars.get("num_tasks")), resmoke_args=run_vars.get("resmoke_args"), npm_command=run_vars.get("npm_command", "jstestfuzz"), jstestfuzz_vars=run_vars.get("jstestfuzz_vars", ""), continue_on_failure=run_vars.get("continue_on_failure"), resmoke_jobs_max=run_vars.get("resmoke_jobs_max"), should_shuffle=run_vars.get("should_shuffle"), timeout_secs=run_vars.get("timeout_secs"), require_multiversion_setup=task_def.require_multiversion_setup(), use_large_distro=run_vars.get("use_large_distro", False), large_distro_name=self.get_build_variant_expansion( build_variant, "large_distro_name"), config_location=self.evg_expansions.config_location(), )
def task_def_to_mv_gen_params( self, task_def: Task, build_variant: str, is_sharded: bool, version_config: List[str]) -> MultiversionGenTaskParams: """ Build parameters for how a task should be generated based on its task definition. :param task_def: Task definition in evergreen project config. :param build_variant: Name of Build Variant being generated. :param is_sharded: True if the tasks being generated are for a sharded config. :param version_config: List of version configurations to generate. :return: Parameters for how task should be generated. """ run_vars = task_def.generate_resmoke_tasks_command["vars"] task = remove_gen_suffix(task_def.name) return MultiversionGenTaskParams( mixed_version_configs=version_config, is_sharded=is_sharded, resmoke_args=run_vars.get("resmoke_args"), parent_task_name=task, origin_suite=run_vars.get("suite", task), use_large_distro=run_vars.get("use_large_distro"), large_distro_name=self.get_build_variant_expansion( build_variant, "large_distro_name"), config_location=self.evg_expansions.config_location(), )
def config_location(self) -> str: """Location where generated configuration is stored.""" generated_task_name = remove_gen_suffix(self.task_name) file = f"{self.build_variant}/{self.revision}/generate_tasks/{generated_task_name}_gen-{self.build_id}" # hash 'file' to shorten the file path dramatically sha1 = hashlib.sha1() sha1.update(file.encode('utf-8')) return f"gtcl/{sha1.hexdigest()}.tgz"
def get_suite_split_params(self) -> SuiteSplitParameters: """Get the parameters to use for splitting suites.""" task = remove_gen_suffix(self.task_name) return SuiteSplitParameters( build_variant=self.build_variant, task_name=task, suite_name=self.suite or task, filename=self.suite or task, test_file_filter=None, is_asan=self.is_asan_build(), )
def task_def_to_split_params(self, task_def: Task, build_variant_gen: str) -> SuiteSplitParameters: """ Build parameters for how a task should be split based on its task definition. :param task_def: Task definition in evergreen project config. :param build_variant_gen: Name of Build Variant being generated. :return: Parameters for how task should be split. """ build_variant = self.evg_project_config.get_variant(build_variant_gen) task_name = remove_gen_suffix(task_def.name) run_vars = task_def.generate_resmoke_tasks_command.get("vars", {}) suite_name = run_vars.get("suite", task_name) return SuiteSplitParameters( build_variant=build_variant_gen, task_name=task_name, suite_name=suite_name, filename=suite_name, is_asan=build_variant.is_asan_build(), )
def task(self) -> str: """Get the task being generated.""" return remove_gen_suffix(self.task_name)
def config_location(self) -> str: """Location where generated configuration is stored.""" generated_task_name = remove_gen_suffix(self.task_name) return f"{self.build_variant}/{self.revision}/generate_tasks/{generated_task_name}_gen-{self.build_id}.tgz"
def test_doesnt_remove_non_gen_suffix(self): input_task_name = "sharded_multi_stmt_txn_jscore_passthroug" self.assertEqual("sharded_multi_stmt_txn_jscore_passthroug", under_test.remove_gen_suffix(input_task_name))
def test_removes_gen_suffix(self): input_task_name = "sharding_auth_auditg_gen" self.assertEqual("sharding_auth_auditg", under_test.remove_gen_suffix(input_task_name))
def display_task_name(self) -> str: """Get the display name to use for this task.""" base_name = remove_gen_suffix(self.task_name) if self.include_build_variant_in_name: return f"{base_name}_{self.build_variant}" return base_name
def task(self) -> str: """Get the name of the task.""" return remove_gen_suffix(self.task_name)