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(),
        )
Пример #2
0
    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"
Пример #4
0
 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(),
     )
Пример #5
0
    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(),
        )
Пример #6
0
 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"
Пример #8
0
 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))
Пример #9
0
 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))
Пример #10
0
 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
Пример #11
0
 def task(self) -> str:
     """Get the name of the task."""
     return remove_gen_suffix(self.task_name)