in microsoft/testsuites/core/azure_image_standard.py [0:0]
def verify_repository_installed(self, node: Node) -> None:
assert isinstance(node.os, Posix)
if isinstance(node.os, Debian):
repositories = node.os.get_repositories()
debian_repositories = [
cast(DebianRepositoryInfo, repo) for repo in repositories
]
# verify that atleast one repository is `Hit`
is_repository_hit = any(
[repository.status == "Hit" for repository in debian_repositories]
)
assert_that(
is_repository_hit,
"Hit should be present in `apt-get update` output atleast "
"one repository",
).is_true()
# verify repository configuration
if isinstance(node.os, Ubuntu):
contains_security_repo_url = any(
[
"security.ubuntu.com" in repository.uri
for repository in debian_repositories
]
)
contains_security_keyword_url = any(
[
"-security" in repository.uri
for repository in debian_repositories
]
)
contains_archive_repo_url = any(
[
"archive.ubuntu.com" in repository.uri
for repository in debian_repositories
]
)
contains_ports_repo_url = any(
[
"ports.ubuntu.com" in repository.uri
for repository in debian_repositories
]
)
is_repository_configured_correctly = (
contains_security_repo_url and contains_archive_repo_url
) or (contains_security_keyword_url and contains_ports_repo_url)
assert_that(
is_repository_configured_correctly,
"`security.ubuntu.com`,`azure.archive.ubuntu.com` or "
"`security`,`ports.ubuntu.com` should be in `apt-get "
"update` output",
).is_true()
else:
is_repository_configured_correctly = any(
[
"deb.debian.org" in repository.uri
or "debian-archive.trafficmanager.net" in repository.uri
for repository in debian_repositories
]
)
assert_that(
is_repository_configured_correctly,
"`deb.debian.org` or `debian-archive.trafficmanager.net` should "
"be in the `apt-get update` output",
).is_true()
elif isinstance(node.os, Suse):
repositories = node.os.get_repositories()
suse_repositories = [
cast(SuseRepositoryInfo, repo) for repo in repositories
]
if isinstance(node.os, SLES):
# Get `zypper lr` output and check if the pool and update
# repositories are present.
zypper_out = node.execute("zypper lr", sudo=True).stdout
assert_that(
zypper_out, "'Pool' should be present in the output of zypper -lr"
).contains("Pool")
assert_that(
zypper_out,
"'Updates' should be present in the output of zypper -lr",
).contains("Updates")
else:
# get list of repositories and verify statistics for `oss` and
# `update` repositories.
oss_repo_count = 0
update_repo_count = 0
oss_repo_enable_refresh_count = 0
update_repo_enable_refresh_count = 0
for repo in suse_repositories:
full_name = f"{repo.alias} {repo.name}"
full_name = full_name.lower()
# set oss repo statistics
if re.match(self._oss_repo_regex, full_name):
oss_repo_count += 1
if repo.refresh:
oss_repo_enable_refresh_count += 1
# set update repo statistics
if re.match(self._update_repo_regex, full_name):
update_repo_count += 1
if repo.refresh:
update_repo_enable_refresh_count += 1
assert_that(
int(oss_repo_count),
"One or more expected `Oss` repositories are not present",
).is_greater_than(0)
assert_that(
int(update_repo_count),
"One or more expected `Update` repositories are not present",
).is_greater_than(0)
assert_that(
int(oss_repo_enable_refresh_count),
"One or more expected `Oss` repositories are not enabled/refreshed",
).is_greater_than(2)
assert_that(
int(update_repo_enable_refresh_count),
"One or more expected `Update` repositories are not "
"enabled/refreshed",
).is_greater_than(2)
elif isinstance(node.os, Oracle):
repositories = node.os.get_repositories()
oracle_repositories = [
cast(RPMRepositoryInfo, repo) for repo in repositories
]
# verify that `base` repository is present
is_latest_repository_present = any(
["latest" in repository.id for repository in oracle_repositories]
)
assert_that(
is_latest_repository_present, "Latest repository should be present"
).is_true()
elif isinstance(node.os, Fedora):
repositories = node.os.get_repositories()
fedora_repositories = [
cast(RPMRepositoryInfo, repo) for repo in repositories
]
# verify that `base` repository is present
is_base_repository_present = any(
["base" in repository.id for repository in fedora_repositories]
)
assert_that(
is_base_repository_present, "Base repository should be present"
).is_true()
if node.os.information.version >= "8.0.0":
# verify that `appstream` repository is present
is_appstream_repository_present = any(
["appstream" in repository.id for repository in fedora_repositories]
)
assert_that(
is_appstream_repository_present,
"AppStream repository should be present",
).is_true()
else:
# verify that `update` repository is not present
is_updates_repository_present = any(
["updates" in repository.id for repository in fedora_repositories]
)
assert_that(
is_updates_repository_present,
"Updates repository should be present",
).is_true()
# verify that atleast five repositories are present in Redhat
if isinstance(node.os, Redhat):
fedora_repositories = find_patterns_in_lines(
node.execute("yum repolist all -q", sudo=True).stdout,
[self._redhat_repo_regex],
)[0]
assert_that(
len(fedora_repositories),
"yum repolist all should be greater than 5",
).is_greater_than(5)
else:
raise LisaException(f"Unsupported distro type : {type(node.os)}")