summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bradford <david.bradford@mongodb.com>2021-05-29 11:07:44 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-29 18:17:12 +0000
commitd431ce954b4f6153842316d8d05afc5ee73876d7 (patch)
treef77b76926a1934fed2011dbc84d87fb9c08df745
parenta0615f84f20279b68cc7c0a6a2c9f298fbb0b441 (diff)
downloadmongo-d431ce954b4f6153842316d8d05afc5ee73876d7.tar.gz
SERVER-57302: Name implicit multiversion tests correctly
-rwxr-xr-xbuildscripts/evergreen_gen_multiversion_tests.py22
-rwxr-xr-xbuildscripts/evergreen_generate_resmoke_tasks.py11
-rw-r--r--buildscripts/task_generation/suite_split.py10
-rw-r--r--buildscripts/tests/test_evergreen_generate_resmoke_tasks.py11
-rw-r--r--buildscripts/tests/util/test_taskname.py17
-rw-r--r--buildscripts/util/taskname.py14
-rw-r--r--etc/evergreen.yml1
7 files changed, 41 insertions, 45 deletions
diff --git a/buildscripts/evergreen_gen_multiversion_tests.py b/buildscripts/evergreen_gen_multiversion_tests.py
index 7095af871e6..976ed511896 100755
--- a/buildscripts/evergreen_gen_multiversion_tests.py
+++ b/buildscripts/evergreen_gen_multiversion_tests.py
@@ -26,8 +26,7 @@ from buildscripts.task_generation.gen_config import GenerationConfiguration
from buildscripts.task_generation.generated_config import GeneratedConfiguration
from buildscripts.task_generation.multiversion_util import MultiversionUtilService
from buildscripts.task_generation.resmoke_proxy import ResmokeProxyConfig
-from buildscripts.task_generation.suite_split import SuiteSplitConfig, SuiteSplitParameters, \
- remove_gen_suffix
+from buildscripts.task_generation.suite_split import SuiteSplitConfig, SuiteSplitParameters
from buildscripts.task_generation.suite_split_strategies import SplitStrategy, FallbackStrategy, \
greedy_division, round_robin_fallback
from buildscripts.task_generation.task_types.fuzzer_tasks import FuzzerGenTaskParams
@@ -40,6 +39,7 @@ import buildscripts.evergreen_gen_fuzzer_tests as gen_fuzzer
import buildscripts.ciconfig.tags as _tags
# pylint: disable=len-as-condition
+from buildscripts.util.taskname import remove_gen_suffix
LOGGER = structlog.getLogger(__name__)
@@ -58,7 +58,6 @@ RANDOM_REPLSETS_TAG = "random_multiversion_ds"
BACKPORT_REQUIRED_TAG = "backport_required_multiversion"
EXCLUDE_TAGS = f"{REQUIRES_FCV_TAG},multiversion_incompatible,{BACKPORT_REQUIRED_TAG}"
EXCLUDE_TAGS_FILE = "multiversion_exclude_tags.yml"
-GEN_SUFFIX = "_gen"
GEN_PARENT_TASK = "generator_tasks"
ASAN_SIGNATURE = "detect_leaks=1"
@@ -100,7 +99,7 @@ class EvgExpansions(BaseModel):
@property
def task(self) -> str:
"""Get the name of the task."""
- return self.task_name
+ return remove_gen_suffix(self.task_name)
@classmethod
def from_yaml_file(cls, path: str) -> "EvgExpansions":
@@ -160,12 +159,10 @@ class EvgExpansions(BaseModel):
def get_split_params(self) -> SuiteSplitParameters:
"""Get the parameters specified to split suites."""
- task = remove_gen_suffix(self.task)
-
return SuiteSplitParameters(
- task_name=self.task,
- suite_name=self.suite or task,
- filename=self.suite or task,
+ task_name=self.task_name,
+ suite_name=self.suite or self.task,
+ filename=self.suite or self.task,
test_file_filter=None,
build_variant=self.build_variant,
is_asan=self.is_asan_build(),
@@ -196,13 +193,12 @@ class EvgExpansions(BaseModel):
:return: Parameters to use for generating multiversion tasks.
"""
version_config_list = get_version_configs(is_sharded)
- task = remove_gen_suffix(self.task)
return MultiversionGenTaskParams(
mixed_version_configs=version_config_list,
is_sharded=is_sharded,
resmoke_args=self.resmoke_args,
- parent_task_name=task,
- origin_suite=self.suite or task,
+ parent_task_name=self.task,
+ origin_suite=self.suite or self.task,
use_large_distro=self.use_large_distro,
large_distro_name=self.large_distro_name,
config_location=self.config_location(),
@@ -315,7 +311,7 @@ class MultiVersionGenerateOrchestrator:
builder = EvgConfigBuilder() # pylint: disable=no-value-for-parameter
builder.add_multiversion_suite(split_params, gen_params)
- builder.add_display_task(GEN_PARENT_TASK, {f"{split_params.task_name}{GEN_SUFFIX}"},
+ builder.add_display_task(GEN_PARENT_TASK, {f"{split_params.task_name}"},
evg_expansions.build_variant)
return builder.build(f"{evg_expansions.task}.json")
diff --git a/buildscripts/evergreen_generate_resmoke_tasks.py b/buildscripts/evergreen_generate_resmoke_tasks.py
index 18e6682f353..16ff4ca96d3 100755
--- a/buildscripts/evergreen_generate_resmoke_tasks.py
+++ b/buildscripts/evergreen_generate_resmoke_tasks.py
@@ -19,6 +19,7 @@ from evergreen.api import EvergreenApi, RetryingEvergreenApi
# Get relative imports to work when the package is not installed on the PYTHONPATH.
from buildscripts.task_generation.gen_task_validation import GenTaskValidationService
+from buildscripts.util.taskname import remove_gen_suffix
if __name__ == "__main__" and __package__ is None:
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
@@ -30,8 +31,7 @@ from buildscripts.task_generation.gen_task_service import GenTaskOptions, Resmok
from buildscripts.task_generation.suite_split_strategies import SplitStrategy, FallbackStrategy, \
greedy_division, round_robin_fallback
from buildscripts.task_generation.resmoke_proxy import ResmokeProxyConfig
-from buildscripts.task_generation.suite_split import SuiteSplitConfig, \
- SuiteSplitParameters
+from buildscripts.task_generation.suite_split import SuiteSplitConfig, SuiteSplitParameters
from buildscripts.util.cmdutils import enable_logging
from buildscripts.util.fileops import read_yaml_file
# pylint: enable=wrong-import-position
@@ -165,13 +165,6 @@ class EvgExpansions(BaseModel):
)
-def remove_gen_suffix(task_name):
- """Remove '_gen' suffix from task_name."""
- if task_name.endswith(GEN_SUFFIX):
- return task_name[:-4]
- return task_name
-
-
class EvgGenResmokeTaskOrchestrator:
"""Orchestrator for generating an resmoke tasks."""
diff --git a/buildscripts/task_generation/suite_split.py b/buildscripts/task_generation/suite_split.py
index 4b929f7bd9c..a6c6976ba67 100644
--- a/buildscripts/task_generation/suite_split.py
+++ b/buildscripts/task_generation/suite_split.py
@@ -16,13 +16,12 @@ from buildscripts.task_generation.resmoke_proxy import ResmokeProxyService
from buildscripts.task_generation.suite_split_strategies import SplitStrategy, FallbackStrategy
from buildscripts.task_generation.timeout import TimeoutEstimate
from buildscripts.util import taskname
+from buildscripts.util.taskname import remove_gen_suffix
from buildscripts.util.teststats import HistoricTaskData, TestRuntime, normalize_test_name
LOGGER = structlog.getLogger(__name__)
-GEN_SUFFIX = "_gen"
CLEAN_EVERY_N_HOOK = "CleanEveryN"
-ASAN_SIGNATURE = "detect_leaks=1"
HEADER_TEMPLATE = """# DO NOT EDIT THIS FILE. All manual edits will be lost.
# This file was generated by {file} from
# {suite_file}.
@@ -31,13 +30,6 @@ HEADER_TEMPLATE = """# DO NOT EDIT THIS FILE. All manual edits will be lost.
# pylint: disable=too-many-arguments
-def remove_gen_suffix(task_name: str) -> str:
- """Remove '_gen' suffix from task_name."""
- if task_name.endswith(GEN_SUFFIX):
- return task_name[:-4]
- return task_name
-
-
def update_suite_config(suite_config, roots=None, excludes=None):
"""
Update suite config based on the roots and excludes passed in.
diff --git a/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py b/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py
index 5ff8e6ba1d2..6cf64389b34 100644
--- a/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py
+++ b/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py
@@ -230,14 +230,3 @@ class TestAcceptance(unittest.TestCase):
# Is there a task in the config for all the suites we created?
self.assertEqual(expected_suite_count, len(shrub_config["tasks"]))
-
-
-class TestHelperMethods(unittest.TestCase):
- 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 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))
diff --git a/buildscripts/tests/util/test_taskname.py b/buildscripts/tests/util/test_taskname.py
index 7fa4dbf5700..22ab279066a 100644
--- a/buildscripts/tests/util/test_taskname.py
+++ b/buildscripts/tests/util/test_taskname.py
@@ -2,14 +2,25 @@
import unittest
-from buildscripts.util import taskname
+import buildscripts.util.taskname as under_test
# pylint: disable=missing-docstring,protected-access
class TestNameTask(unittest.TestCase):
def test_name_task_with_width_one(self):
- self.assertEqual("name_3_var", taskname.name_generated_task("name", 3, 10, "var"))
+ self.assertEqual("name_3_var", under_test.name_generated_task("name", 3, 10, "var"))
def test_name_task_with_width_four(self):
- self.assertEqual("task_3141_var", taskname.name_generated_task("task", 3141, 5000, "var"))
+ self.assertEqual("task_3141_var", under_test.name_generated_task("task", 3141, 5000, "var"))
+
+
+class TestRemoveGenSuffix(unittest.TestCase):
+ 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 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))
diff --git a/buildscripts/util/taskname.py b/buildscripts/util/taskname.py
index c7b3141cf20..0f7de9bd32e 100644
--- a/buildscripts/util/taskname.py
+++ b/buildscripts/util/taskname.py
@@ -2,6 +2,8 @@
import math
+GEN_SUFFIX = "_gen"
+
def name_generated_task(parent_name, task_index, total_tasks, variant=None):
"""
@@ -19,3 +21,15 @@ def name_generated_task(parent_name, task_index, total_tasks, variant=None):
index_width = int(math.ceil(math.log10(total_tasks)))
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
diff --git a/etc/evergreen.yml b/etc/evergreen.yml
index 8e403878d6c..1573ffabea6 100644
--- a/etc/evergreen.yml
+++ b/etc/evergreen.yml
@@ -1409,6 +1409,7 @@ functions:
permissions: public-read
content_type: application/gzip
display_name: Generated Task Config - Execution ${execution}
+ optional: true
- command: timeout.update
params: