summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bradford <david.bradford@mongodb.com>2022-06-21 14:33:43 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-07-12 13:47:15 +0000
commit08077e4d703ad72257163add689561914b7ebe63 (patch)
tree72e1244acd3d2a11f84d082c196f40646af5a4c7
parent4f9e10bb3019091f565188285db6717b65e4d74d (diff)
downloadmongo-v5.3.tar.gz
SERVER-67405: Fix is_patch lookup for build_variant_genv5.3
(cherry picked from commit 1260ae9d6480d37019c4c8bed7921e1d2cd40dd5)
-rw-r--r--buildscripts/evergreen_gen_build_variant.py17
-rw-r--r--buildscripts/tests/test_evergreen_gen_build_variant.py58
2 files changed, 70 insertions, 5 deletions
diff --git a/buildscripts/evergreen_gen_build_variant.py b/buildscripts/evergreen_gen_build_variant.py
index bac61f8156b..4311585bcef 100644
--- a/buildscripts/evergreen_gen_build_variant.py
+++ b/buildscripts/evergreen_gen_build_variant.py
@@ -59,7 +59,7 @@ class EvgExpansions(BaseModel):
build_id: str
build_variant: str
exec_timeout_secs: Optional[int] = None
- is_patch: Optional[bool]
+ is_patch: Optional[str]
project: str
max_tests_per_suite: Optional[int] = 100
max_sub_suites: Optional[int] = 5
@@ -83,10 +83,21 @@ class EvgExpansions(BaseModel):
def get_max_sub_suites(self) -> int:
"""Get the max_sub_suites to use."""
- if not self.is_patch:
+ if not self.determine_is_patch():
return self.mainline_max_sub_suites
return self.max_sub_suites
+ def determine_is_patch(self) -> bool:
+ """
+ Determine if expansions indicate whether the script is being run in a patch build.
+
+ In a patch build, the `is_patch` expansion will be the string value of "true". In a
+ non-patch setting, it will not exist, or be an empty string.
+
+ :return: True if task is being run in a patch build.
+ """
+ return self.is_patch is not None and self.is_patch.lower() == "true"
+
def build_suite_split_config(self, start_date: datetime,
end_date: datetime) -> SuiteSplitConfig:
"""
@@ -113,7 +124,7 @@ class EvgExpansions(BaseModel):
"""
return GenTaskOptions(
create_misc_suite=True,
- is_patch=self.is_patch,
+ is_patch=self.determine_is_patch(),
generated_config_dir=GENERATED_CONFIG_DIR,
use_default_timeouts=False,
timeout_secs=self.timeout_secs,
diff --git a/buildscripts/tests/test_evergreen_gen_build_variant.py b/buildscripts/tests/test_evergreen_gen_build_variant.py
index b5575707371..ea4a309d50e 100644
--- a/buildscripts/tests/test_evergreen_gen_build_variant.py
+++ b/buildscripts/tests/test_evergreen_gen_build_variant.py
@@ -87,7 +87,7 @@ def build_mock_orchestrator(build_expansions=None, task_def_list=None, build_tas
class TestEvgExpansions(unittest.TestCase):
def test_get_max_sub_suites_should_use_patch_value_in_patches(self):
evg_expansions = under_test.EvgExpansions(
- is_patch=True,
+ is_patch="true",
max_sub_suites=5,
mainline_max_sub_suites=1,
build_id="build_id",
@@ -102,7 +102,7 @@ class TestEvgExpansions(unittest.TestCase):
def test_get_max_sub_suites_should_use_mainline_value_in_non_patches(self):
evg_expansions = under_test.EvgExpansions(
- is_patch=False,
+ is_patch="false",
max_sub_suites=5,
mainline_max_sub_suites=1,
build_id="build_id",
@@ -133,6 +133,60 @@ class TestEvgExpansions(unittest.TestCase):
evg_expansions.mainline_max_sub_suites)
+class TestDetermineIsPatch(unittest.TestCase):
+ def test_is_patch_is_none_should_return_false(self):
+ evg_expansions = under_test.EvgExpansions(
+ is_patch=None,
+ build_id="build_id",
+ build_variant="build variant",
+ project="project",
+ revision="abc123",
+ task_name="task name",
+ task_id="task_314",
+ )
+
+ self.assertFalse(evg_expansions.determine_is_patch())
+
+ def test_is_patch_is_false_should_return_false(self):
+ evg_expansions = under_test.EvgExpansions(
+ is_patch="false",
+ build_id="build_id",
+ build_variant="build variant",
+ project="project",
+ revision="abc123",
+ task_name="task name",
+ task_id="task_314",
+ )
+
+ self.assertFalse(evg_expansions.determine_is_patch())
+
+ def test_is_patch_is_empty_string_should_return_false(self):
+ evg_expansions = under_test.EvgExpansions(
+ is_patch="",
+ build_id="build_id",
+ build_variant="build variant",
+ project="project",
+ revision="abc123",
+ task_name="task name",
+ task_id="task_314",
+ )
+
+ self.assertFalse(evg_expansions.determine_is_patch())
+
+ def test_is_patch_is_true_should_return_true(self):
+ evg_expansions = under_test.EvgExpansions(
+ is_patch="true",
+ build_id="build_id",
+ build_variant="build variant",
+ project="project",
+ revision="abc123",
+ task_name="task name",
+ task_id="task_314",
+ )
+
+ self.assertTrue(evg_expansions.determine_is_patch())
+
+
class TestTranslateRunVar(unittest.TestCase):
def test_normal_value_should_be_returned(self):
run_var = "some value"