in upgrade_tests/upgrade_manifest.py [0:0]
def build_upgrade_pairs():
"""
Using the manifest (above), builds a set of valid upgrades, according to current testing practices.
Returns a list of UpgradePath's.
"""
valid_upgrade_pairs = []
manifest = MANIFEST
configured_strategy = CONFIG.getoption("--upgrade-version-selection").upper()
version_select_strategy = VersionSelectionStrategies[configured_strategy].value[0]
filter_for_current_family = CONFIG.getoption("--upgrade-target-version-only")
for origin_meta, destination_metas in list(manifest.items()):
for destination_meta in destination_metas:
if not version_select_strategy(origin_meta, destination_meta):
continue
if not (origin_meta and destination_meta): # None means we don't care about that version, which means we don't care about iterations involving it either
logger.debug("skipping class creation as a version is undefined (this is normal), versions: {} and {}".format(origin_meta, destination_meta))
continue
if not _have_common_proto(origin_meta, destination_meta):
logger.debug("skipping class creation, no compatible protocol version between {} and {}".format(origin_meta.name, destination_meta.name))
continue
# if either origin or destination match version, then do the test
# the assumption is that a change in 3.0 could break upgrades to trunk, so include those tests as well
if filter_for_current_family and not origin_meta.matches_current_env_version_family_and_is_indev and not destination_meta.matches_current_env_version_family:
logger.debug("skipping class creation, origin version {} and destination version {} do not match target version {}, and --upgrade-target-version-only was set".format(origin_meta.name, destination_meta.name, VERSION_FAMILY))
continue
path_name = 'Upgrade_' + origin_meta.name + '_To_' + destination_meta.name
if not RUN_STATIC_UPGRADE_MATRIX:
if destination_meta.matches_current_env_version_family:
# looks like this test should actually run in the current env, so let's set the final version to match the env exactly
oldmeta = destination_meta
newmeta = destination_meta.clone_with_local_env_version()
logger.debug("{} appears applicable to current env. Overriding final test version from {} to {}".format(path_name, oldmeta.version, newmeta.version))
destination_meta = newmeta
if len(jdk_compatible_steps([origin_meta, destination_meta])) > 1:
valid_upgrade_pairs.append(
UpgradePath(
name=path_name,
starting_version=origin_meta.version,
upgrade_version=destination_meta.version,
starting_meta=origin_meta,
upgrade_meta=destination_meta
)
)
return valid_upgrade_pairs