Check both master and env repos for packages

In tests with Ubuntu for environment operation
system some packages on master node (CentOS)
could be updated, so tests must search packages
in both repositories types.

Also copy master node packages to 'deb' section,
because they are needed to determine package
installation target.

Change-Id: I96edc27278229d525da20c9b1237ebded34acaf7
Implements: blueprint mos-patching-tests
This commit is contained in:
Artem Panchenko 2015-06-18 11:29:39 +03:00
parent 4decb9fff7
commit 2d1b708a07
4 changed files with 1133 additions and 28 deletions

View File

@ -83,12 +83,55 @@ def map_test(target):
verify_errata(errata)
if not any(target == e_target['type'] for e_target in errata['targets']):
skip_patching_test(target, errata['target'])
if target == 'master':
# On master node we have only CentOS containers, so always check
# only CentOS packages available for update
distro = settings.OPENSTACK_RELEASE_CENTOS
env_distro = settings.OPENSTACK_RELEASE
master_distro = settings.OPENSTACK_RELEASE_CENTOS
if 'fixed-pkgs' in errata.keys():
if target == 'master':
settings.PATCHING_PKGS = set(
[re.split('=|<|>', package)[0] for package
in errata['fixed-pkgs'][master_distro.lower()]])
else:
settings.PATCHING_PKGS = set(
[re.split('=|<|>', package)[0] for package
in errata['fixed-pkgs'][env_distro.lower()]])
available_env_packages = set()
available_master_packages = set()
for repo in settings.PATCHING_MIRRORS:
logger.debug(
'Checking packages from "{0}" repository'.format(repo))
available_env_packages.update(get_repository_packages(repo,
env_distro))
for repo in settings.PATCHING_MASTER_MIRRORS:
logger.debug(
'Checking packages from "{0}" repository'.format(repo))
available_master_packages.update(get_repository_packages(
repo, master_distro))
available_packages = available_env_packages | available_master_packages
if not settings.PATCHING_PKGS:
if target == 'master':
settings.PATCHING_PKGS = available_env_packages
else:
settings.PATCHING_PKGS = available_master_packages
else:
distro = settings.OPENSTACK_RELEASE
assert_true(settings.PATCHING_PKGS <= available_packages,
"Patching repositories don't contain all packages need"
"ed for tests. Need: {0}, available: {1}, missed: {2}."
"".format(settings.PATCHING_PKGS,
available_packages,
settings.PATCHING_PKGS - available_packages))
assert_not_equal(len(settings.PATCHING_PKGS), 0,
"No packages found in repository(s) for patching:"
" '{0} {1}'".format(settings.PATCHING_MIRRORS,
settings.PATCHING_MASTER_MIRRORS))
if target == 'master':
tests_groups = get_packages_tests(settings.PATCHING_PKGS,
master_distro,
target)
else:
tests_groups = get_packages_tests(settings.PATCHING_PKGS,
env_distro,
target)
if settings.PATCHING_CUSTOM_TEST:
deployment_test = settings.PATCHING_CUSTOM_TEST
settings.PATCHING_SNAPSHOT = \
@ -98,29 +141,6 @@ def map_test(target):
register(groups=['prepare_master_environment'],
depends_on_groups=[deployment_test])
else:
if 'fixed-pkgs' in errata.keys():
settings.PATCHING_PKGS = set(
[re.split('=|<|>', package)[0] for package
in errata['fixed-pkgs'][distro.lower()]])
available_packages = set()
logger.debug('{0}'.format(settings.PATCHING_MIRRORS))
for repo in settings.PATCHING_MIRRORS:
logger.debug(
'Checking packages from "{0}" repository'.format(repo))
available_packages.update(get_repository_packages(repo, distro))
if not settings.PATCHING_PKGS:
settings.PATCHING_PKGS = available_packages
else:
assert_true(settings.PATCHING_PKGS <= available_packages,
"Patching repositories don't contain"
" all packages needed "
"for tests. Need: {0}, but available: {1}.".format(
settings.PATCHING_PKGS, available_packages))
assert_not_equal(len(settings.PATCHING_PKGS), 0,
"No packages found in repository(s) for patching:"
" '{0}'".format(settings.PATCHING_MIRRORS))
tests_groups = get_packages_tests(settings.PATCHING_PKGS, distro,
target)
program = TestProgram(argv=['none'])
deployment_test = None
for my_test in program.plan.tests:

View File

@ -0,0 +1,3 @@
system_tests:
tags:
- master

File diff suppressed because it is too large Load Diff

View File

@ -1588,6 +1588,9 @@ master:
- name: freetype
packages:
- freetype
- name: fuel-library
packages:
- fuel-library6.1
- name: fuel-ostf
packages:
- fuel-ostf