mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 09:32:32 +01:00
62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""Functions for working with resmoke task names."""
|
|
|
|
import math
|
|
import re
|
|
|
|
GEN_SUFFIX = "_gen"
|
|
|
|
|
|
def name_generated_task(parent_name, task_index=None, total_tasks=0, variant=None):
|
|
"""
|
|
Create a zero-padded sub-task name.
|
|
|
|
:param parent_name: Name of the parent task.
|
|
:param task_index: Index of this sub-task.
|
|
:param total_tasks: Total number of sub-tasks being generated.
|
|
:param variant: Build variant to run task in.
|
|
:return: Zero-padded name of sub-task.
|
|
"""
|
|
suffix = ""
|
|
if variant:
|
|
suffix = f"_{variant}"
|
|
|
|
if task_index is None:
|
|
return f"{parent_name}_misc{suffix}"
|
|
else:
|
|
index_width = int(math.ceil(math.log10(total_tasks))) # pylint: disable=c-extension-no-member
|
|
return f"{parent_name}_{str(task_index).zfill(index_width)}{suffix}"
|
|
|
|
|
|
def remove_gen_suffix(task_name: str) -> str:
|
|
"""
|
|
Remove '_gen' suffix from task_name.
|
|
|
|
:param task_name: Original task name.
|
|
:return: Task name with '_gen' removed, if it exists.
|
|
"""
|
|
if task_name.endswith(GEN_SUFFIX):
|
|
return task_name[:-4]
|
|
return task_name
|
|
|
|
|
|
def determine_task_base_name(task_name: str, build_variant: str) -> str:
|
|
"""
|
|
Determine the base name of a task.
|
|
|
|
For generated tasks the base name will have the build variant and sub-task index
|
|
stripped off. For other tasks, it is the unmodified task_name.
|
|
|
|
:param task_name: Name of task to get base name of.
|
|
:param build_variant: Build variant that may be included in task name.
|
|
:return: Base name of given task.
|
|
"""
|
|
match = re.match(f"(.*)_([0-9]+|misc)_{build_variant}", task_name)
|
|
if match:
|
|
return match.group(1)
|
|
|
|
match = re.match(r"(.*)_([0-9]+|misc)", task_name)
|
|
if match:
|
|
return match.group(1)
|
|
|
|
return task_name
|