summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Shchatko <mikhail.shchatko@mongodb.com>2022-06-20 06:45:26 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-06-20 07:14:30 +0000
commit17cbfe0780d6252b06ed863c943bf03ba775f18c (patch)
tree5d03a66a4ad163dcdac68358052fc752dcdb332c
parente95a58a5a163ae61843ba159eea701e6bac271e6 (diff)
downloadmongo-17cbfe0780d6252b06ed863c943bf03ba775f18c.tar.gz
SERVER-64112 Stop running applicable multiversion tests as soon as a release is EOL
-rw-r--r--buildscripts/resmokelib/multiversion/__init__.py12
-rw-r--r--buildscripts/resmokelib/multiversion/multiversion_service.py34
-rw-r--r--buildscripts/resmokelib/multiversionconstants.py58
-rw-r--r--buildscripts/tests/resmokelib/multiversion/test_multiversion_service.py32
4 files changed, 76 insertions, 60 deletions
diff --git a/buildscripts/resmokelib/multiversion/__init__.py b/buildscripts/resmokelib/multiversion/__init__.py
index 2c9bae45766..713dedf0f82 100644
--- a/buildscripts/resmokelib/multiversion/__init__.py
+++ b/buildscripts/resmokelib/multiversion/__init__.py
@@ -49,14 +49,14 @@ class MultiversionConfigSubcommand(Subcommand):
mongo_version=MongoVersion.from_yaml_file(multiversionconstants.MONGO_VERSION_YAML),
mongo_releases=MongoReleases.from_yaml_file(multiversionconstants.RELEASES_YAML),
)
- fcv_constants = multiversion_service.calculate_fcv_constants()
+ version_constants = multiversion_service.calculate_version_constants()
return MultiversionConfig(
last_versions=multiversionconstants.OLD_VERSIONS,
- requires_fcv_tag=fcv_constants.get_fcv_tag_list(),
- requires_fcv_tag_lts=fcv_constants.get_lts_fcv_tag_list(),
- requires_fcv_tag_continuous=fcv_constants.get_continuous_fcv_tag_list(),
- last_lts_fcv=fcv_constants.get_last_lts_fcv(),
- last_continuous_fcv=fcv_constants.get_last_continuous_fcv(),
+ requires_fcv_tag=version_constants.get_fcv_tag_list(),
+ requires_fcv_tag_lts=version_constants.get_lts_fcv_tag_list(),
+ requires_fcv_tag_continuous=version_constants.get_continuous_fcv_tag_list(),
+ last_lts_fcv=version_constants.get_last_lts_fcv(),
+ last_continuous_fcv=version_constants.get_last_continuous_fcv(),
)
diff --git a/buildscripts/resmokelib/multiversion/multiversion_service.py b/buildscripts/resmokelib/multiversion/multiversion_service.py
index 3597cc2177f..621d5ade9ae 100644
--- a/buildscripts/resmokelib/multiversion/multiversion_service.py
+++ b/buildscripts/resmokelib/multiversion/multiversion_service.py
@@ -25,9 +25,9 @@ def version_str(version: Version) -> str:
return f"{version.major}.{version.minor}"
-class FcvConstantValues(NamedTuple):
+class VersionConstantValues(NamedTuple):
"""
- Object to hold the calculated FCV constants.
+ Object to hold the calculated Version constants.
* latest: Latest FCV.
* last_continuous: Last continuous FCV.
@@ -36,6 +36,7 @@ class FcvConstantValues(NamedTuple):
* requires_fcv_tag_list_continuous: List of FCVs that we need to generate a tag for against
continuous versions.
* fcvs_less_than_latest: List of all FCVs that are less than latest, starting from v4.0.
+ * eols: List of stable MongoDB versions since v2.0 that have been EOL'd.
"""
latest: Version
@@ -44,6 +45,7 @@ class FcvConstantValues(NamedTuple):
requires_fcv_tag_list: List[Version]
requires_fcv_tag_list_continuous: List[Version]
fcvs_less_than_latest: List[Version]
+ eols: List[Version]
def get_fcv_tag_list(self) -> str:
"""Get a comma joined string of all the fcv tags."""
@@ -96,6 +98,10 @@ class FcvConstantValues(NamedTuple):
last_continuous = self.get_last_continuous_fcv()
return f"{base_name}-{last_continuous}"
+ def get_eols(self) -> List[str]:
+ """Get EOL'd versions as list of strings."""
+ return [version_str(eol) for eol in self.eols]
+
class MongoVersion(BaseModel):
"""
@@ -132,12 +138,14 @@ class MongoReleases(BaseModel):
* feature_compatibility_version: All FCVs starting with 4.0.
* long_term_support_releases: All LTS releases starting with 4.0.
+ * eol_versions: List of stable MongoDB versions since 2.0 that have been EOL'd.
* generate_fcv_lower_bound_override: Extend FCV generation down to the previous value of last
LTS.
"""
feature_compatibility_versions: List[str] = Field(alias="featureCompatibilityVersions")
long_term_support_releases: List[str] = Field(alias="longTermSupportReleases")
+ eol_versions: List[str] = Field(alias="eolVersions")
generate_fcv_lower_bound_override: Optional[str] = Field(None,
alias="generateFCVLowerBoundOverride")
@@ -159,7 +167,11 @@ class MongoReleases(BaseModel):
def get_lts_versions(self) -> List[Version]:
"""Get the Version representation of the lts versions."""
- return [Version(fcv) for fcv in self.long_term_support_releases]
+ return [Version(lts) for lts in self.long_term_support_releases]
+
+ def get_eol_versions(self) -> List[Version]:
+ """Get the Version representation of the EOL versions."""
+ return [Version(eol) for eol in self.eol_versions]
class MultiversionService:
@@ -175,11 +187,12 @@ class MultiversionService:
self.mongo_version = mongo_version
self.mongo_releases = mongo_releases
- def calculate_fcv_constants(self) -> FcvConstantValues:
+ def calculate_version_constants(self) -> VersionConstantValues:
"""Calculate multiversion constants from data files."""
latest = self.mongo_version.get_version()
fcvs = self.mongo_releases.get_fcv_versions()
lts = self.mongo_releases.get_lts_versions()
+ eols = self.mongo_releases.get_eol_versions()
lower_bound_override = self.mongo_releases.generate_fcv_lower_bound_override
# Highest release less than latest.
@@ -200,7 +213,12 @@ class MultiversionService:
# All FCVs less than latest.
fcvs_less_than_latest = fcvs[:bisect_left(fcvs, latest)]
- return FcvConstantValues(latest=latest, last_continuous=last_continuous, last_lts=last_lts,
- requires_fcv_tag_list=requires_fcv_tag_list,
- requires_fcv_tag_list_continuous=requires_fcv_tag_list_continuous,
- fcvs_less_than_latest=fcvs_less_than_latest)
+ return VersionConstantValues(
+ latest=latest,
+ last_continuous=last_continuous,
+ last_lts=last_lts,
+ requires_fcv_tag_list=requires_fcv_tag_list,
+ requires_fcv_tag_list_continuous=requires_fcv_tag_list_continuous,
+ fcvs_less_than_latest=fcvs_less_than_latest,
+ eols=eols,
+ )
diff --git a/buildscripts/resmokelib/multiversionconstants.py b/buildscripts/resmokelib/multiversionconstants.py
index 0cac4fbc95b..56381531f72 100644
--- a/buildscripts/resmokelib/multiversionconstants.py
+++ b/buildscripts/resmokelib/multiversionconstants.py
@@ -5,22 +5,15 @@ from subprocess import DEVNULL, STDOUT, CalledProcessError, call, check_output
import structlog
-try:
- # when running resmoke
- from buildscripts.resmokelib.multiversion.multiversion_service import (
- MongoReleases, MongoVersion, MultiversionService)
- from buildscripts.resmokelib.multiversionsetupconstants import \
- USE_EXISTING_RELEASES_FILE
-except ImportError:
- # when running db-contrib-tool
- from multiversion.multiversion_service import (MongoReleases, MongoVersion, MultiversionService)
- from multiversionsetupconstants import USE_EXISTING_RELEASES_FILE
+from buildscripts.resmokelib.multiversion.multiversion_service import (
+ MongoReleases, MongoVersion, MultiversionService, MONGO_VERSION_YAML, RELEASES_YAML)
+from buildscripts.resmokelib.multiversionsetupconstants import \
+ USE_EXISTING_RELEASES_FILE
-LOGGER = structlog.getLogger(__name__)
+LAST_LTS = "last_lts"
+LAST_CONTINUOUS = "last_continuous"
-# These values must match the include paths for artifacts.tgz in evergreen.yml.
-MONGO_VERSION_YAML = ".resmoke_mongo_version.yml"
-RELEASES_YAML = ".resmoke_mongo_release_values.yml"
+LOGGER = structlog.getLogger(__name__)
def generate_mongo_version_file():
@@ -86,33 +79,34 @@ multiversion_service = MultiversionService(
mongo_releases=MongoReleases.from_yaml_file(RELEASES_YAML),
)
-fcv_constants = multiversion_service.calculate_fcv_constants()
+version_constants = multiversion_service.calculate_version_constants()
-LAST_LTS_BIN_VERSION = fcv_constants.get_last_lts_fcv()
-LAST_CONTINUOUS_BIN_VERSION = fcv_constants.get_last_continuous_fcv()
+LAST_LTS_BIN_VERSION = version_constants.get_last_lts_fcv()
+LAST_CONTINUOUS_BIN_VERSION = version_constants.get_last_continuous_fcv()
-LAST_LTS_FCV = fcv_constants.get_last_lts_fcv()
-LAST_CONTINUOUS_FCV = fcv_constants.get_last_continuous_fcv()
-LATEST_FCV = fcv_constants.get_latest_fcv()
+LAST_LTS_FCV = version_constants.get_last_lts_fcv()
+LAST_CONTINUOUS_FCV = version_constants.get_last_continuous_fcv()
+LATEST_FCV = version_constants.get_latest_fcv()
-LAST_CONTINUOUS_MONGO_BINARY = fcv_constants.build_last_continuous_binary("mongo")
-LAST_CONTINUOUS_MONGOD_BINARY = fcv_constants.build_last_continuous_binary("mongod")
-LAST_CONTINUOUS_MONGOS_BINARY = fcv_constants.build_last_continuous_binary("mongos")
+LAST_CONTINUOUS_MONGO_BINARY = version_constants.build_last_continuous_binary("mongo")
+LAST_CONTINUOUS_MONGOD_BINARY = version_constants.build_last_continuous_binary("mongod")
+LAST_CONTINUOUS_MONGOS_BINARY = version_constants.build_last_continuous_binary("mongos")
-LAST_LTS_MONGO_BINARY = fcv_constants.build_last_lts_binary("mongo")
-LAST_LTS_MONGOD_BINARY = fcv_constants.build_last_lts_binary("mongod")
-LAST_LTS_MONGOS_BINARY = fcv_constants.build_last_lts_binary("mongos")
+LAST_LTS_MONGO_BINARY = version_constants.build_last_lts_binary("mongo")
+LAST_LTS_MONGOD_BINARY = version_constants.build_last_lts_binary("mongod")
+LAST_LTS_MONGOS_BINARY = version_constants.build_last_lts_binary("mongos")
-REQUIRES_FCV_TAG_LATEST = fcv_constants.get_latest_tag()
+REQUIRES_FCV_TAG_LATEST = version_constants.get_latest_tag()
# Generate tags for all FCVS in (lastLTS, latest], or (lowerBoundOverride, latest] if requested.
# All multiversion tests should be run with these tags excluded.
-REQUIRES_FCV_TAG = fcv_constants.get_fcv_tag_list()
+REQUIRES_FCV_TAG = version_constants.get_fcv_tag_list()
# Generate evergreen project names for all FCVs less than latest.
EVERGREEN_PROJECTS = ['mongodb-mongo-master']
-EVERGREEN_PROJECTS.extend([evg_project_str(fcv) for fcv in fcv_constants.fcvs_less_than_latest])
+EVERGREEN_PROJECTS.extend([evg_project_str(fcv) for fcv in version_constants.fcvs_less_than_latest])
-OLD_VERSIONS = ["last_lts"]
-if LAST_LTS_FCV != LAST_CONTINUOUS_FCV:
- OLD_VERSIONS.append("last_continuous")
+OLD_VERSIONS = [
+ LAST_LTS
+] if LAST_CONTINUOUS_FCV == LAST_LTS_FCV or LAST_CONTINUOUS_FCV in version_constants.get_eols(
+) else [LAST_LTS, LAST_CONTINUOUS]
diff --git a/buildscripts/tests/resmokelib/multiversion/test_multiversion_service.py b/buildscripts/tests/resmokelib/multiversion/test_multiversion_service.py
index 2f685f36c97..274b7e5ffbe 100644
--- a/buildscripts/tests/resmokelib/multiversion/test_multiversion_service.py
+++ b/buildscripts/tests/resmokelib/multiversion/test_multiversion_service.py
@@ -38,6 +38,8 @@ class TestCalculateFcvConstants(TestCase):
"100.0"
],
"longTermSupportReleases": ["4.0", "4.2", "4.4", "5.0"],
+ "eolVersions":
+ ["2.0", "2.2", "2.4", "2.6", "3.0", "3.2", "3.4", "3.6", "4.0", "5.1", "5.2"],
})
multiversion_service = under_test.MultiversionService(
@@ -45,15 +47,15 @@ class TestCalculateFcvConstants(TestCase):
mongo_releases=mongo_releases,
)
- fcv_constants = multiversion_service.calculate_fcv_constants()
+ version_constants = multiversion_service.calculate_version_constants()
- self.assertEqual(fcv_constants.latest, Version("6.0"))
- self.assertEqual(fcv_constants.last_continuous, Version("5.3"))
- self.assertEqual(fcv_constants.last_lts, Version("5.0"))
- self.assertEqual(fcv_constants.requires_fcv_tag_list,
+ self.assertEqual(version_constants.latest, Version("6.0"))
+ self.assertEqual(version_constants.last_continuous, Version("5.3"))
+ self.assertEqual(version_constants.last_lts, Version("5.0"))
+ self.assertEqual(version_constants.requires_fcv_tag_list,
[Version(v) for v in ["5.1", "5.2", "5.3", "6.0"]])
- self.assertEqual(fcv_constants.requires_fcv_tag_list_continuous, [Version("6.0")])
- self.assertEqual(fcv_constants.fcvs_less_than_latest, [
+ self.assertEqual(version_constants.requires_fcv_tag_list_continuous, [Version("6.0")])
+ self.assertEqual(version_constants.fcvs_less_than_latest, [
Version(v)
for v in ["4.0", "4.2", "4.4", "4.7", "4.8", "4.9", "5.0", "5.1", "5.2", "5.3"]
])
@@ -67,6 +69,8 @@ class TestCalculateFcvConstants(TestCase):
"6.1", "100.0"
],
"longTermSupportReleases": ["4.0", "4.2", "4.4", "5.0", "6.0"],
+ "eolVersions":
+ ["2.0", "2.2", "2.4", "2.6", "3.0", "3.2", "3.4", "3.6", "4.0", "5.1", "5.2"],
})
multiversion_service = under_test.MultiversionService(
@@ -74,15 +78,15 @@ class TestCalculateFcvConstants(TestCase):
mongo_releases=mongo_releases,
)
- fcv_constants = multiversion_service.calculate_fcv_constants()
+ version_constants = multiversion_service.calculate_version_constants()
- self.assertEqual(fcv_constants.latest, Version("100.0"))
- self.assertEqual(fcv_constants.last_continuous, Version("6.1"))
- self.assertEqual(fcv_constants.last_lts, Version("6.0"))
- self.assertEqual(fcv_constants.requires_fcv_tag_list,
+ self.assertEqual(version_constants.latest, Version("100.0"))
+ self.assertEqual(version_constants.last_continuous, Version("6.1"))
+ self.assertEqual(version_constants.last_lts, Version("6.0"))
+ self.assertEqual(version_constants.requires_fcv_tag_list,
[Version(v) for v in ["6.1", "100.0"]])
- self.assertEqual(fcv_constants.requires_fcv_tag_list_continuous, [Version("100.0")])
- self.assertEqual(fcv_constants.fcvs_less_than_latest, [
+ self.assertEqual(version_constants.requires_fcv_tag_list_continuous, [Version("100.0")])
+ self.assertEqual(version_constants.fcvs_less_than_latest, [
Version(v) for v in
["4.0", "4.2", "4.4", "4.7", "4.8", "4.9", "5.0", "5.1", "5.2", "5.3", "6.0", "6.1"]
])