Add package version check
To avoid false positive result in gate fuel library test add next assertion: * We have packages that should be updated - if not raise error * Packages from review is higer version that installed - if not raise error Change-Id: I065bef8f73d2abdb1b3a905a2720a2db5277e4fc Closes-Bug: #1523466
This commit is contained in:
parent
3acd8e818b
commit
1926f5498b
|
@ -40,6 +40,7 @@ from fuelweb_test.helpers.utils import pull_out_logs_via_ssh
|
|||
from fuelweb_test.helpers.utils import store_astute_yaml
|
||||
from fuelweb_test.helpers.utils import store_packages_json
|
||||
from fuelweb_test.helpers.utils import TimeStat
|
||||
from gates_tests.helpers.exceptions import ConfigurationException
|
||||
|
||||
|
||||
def save_logs(url, path, auth_token=None, chunk_size=1024):
|
||||
|
@ -246,7 +247,9 @@ def update_fuel(func):
|
|||
local_packages_dir=settings.UPDATE_FUEL_PATH,
|
||||
centos_repo_path=settings.LOCAL_MIRROR_CENTOS,
|
||||
ubuntu_repo_path=settings.LOCAL_MIRROR_UBUNTU)
|
||||
|
||||
if not centos_files_count and not ubuntu_files_count:
|
||||
raise ConfigurationException('Nothing to update,'
|
||||
' packages to update values is 0')
|
||||
cluster_id = environment.fuel_web.get_last_created_cluster()
|
||||
|
||||
if centos_files_count > 0:
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
# under the License.
|
||||
|
||||
import ConfigParser
|
||||
from distutils import version
|
||||
import inspect
|
||||
import json
|
||||
import time
|
||||
|
@ -29,6 +30,7 @@ from fuelweb_test import logger
|
|||
from fuelweb_test import logwrap
|
||||
from fuelweb_test import settings
|
||||
from fuelweb_test.settings import MASTER_IS_CENTOS7
|
||||
from gates_tests.helpers import exceptions
|
||||
|
||||
|
||||
@logwrap
|
||||
|
@ -334,6 +336,11 @@ def cond_upload(remote, source, target, condition=''):
|
|||
files_count += 1
|
||||
logger.debug("File '{0}' uploaded to the remote folder '{1}'"
|
||||
.format(source, target))
|
||||
if 'deb' in entry:
|
||||
continue
|
||||
entry_name = entry[0:entry.rfind('-', 0, entry.rfind('-'))]
|
||||
asserts.assert_true(compare_packages_version(
|
||||
remote, entry_name, remote_path))
|
||||
else:
|
||||
logger.debug("Pattern '{0}' doesn't match the file '{1}', "
|
||||
"uploading skipped".format(condition, local_path))
|
||||
|
@ -717,3 +724,42 @@ def get_process_uptime(remote, process_name):
|
|||
uptime += int(ps_output[-i]) * time_factor
|
||||
time_factor *= 60
|
||||
return uptime
|
||||
|
||||
|
||||
def get_package_version(remote_admin, package, income=None):
|
||||
if income:
|
||||
cmd_version = ('rpm '
|
||||
'-qp {0} --queryformat '
|
||||
'"%{{VERSION}} %{{RELEASE}}"'.format(package))
|
||||
else:
|
||||
cmd_version = ('rpm '
|
||||
'-q {0} --queryformat '
|
||||
'"%{{VERSION}} %{{RELEASE}}"'.format(package))
|
||||
result = remote_admin.execute(cmd_version)
|
||||
logger.debug('Command {0} execution result {1}'.format(
|
||||
cmd_version, result))
|
||||
if result['exit_code'] != 0:
|
||||
asserts.assert_true('not installed' in ''.join(result['stdout']),
|
||||
'Command {0} fails by unexpected '
|
||||
'reason {1}'.format(cmd_version, result))
|
||||
return None
|
||||
return ''.join(result['stdout']).strip()
|
||||
|
||||
|
||||
def compare_packages_version(remote, package_name, income_package_name):
|
||||
income_release, income_version = get_package_version(
|
||||
remote, income_package_name, income=True).split(' ')
|
||||
if not get_package_version(remote, package_name):
|
||||
return True
|
||||
installed_release, installed_version = get_package_version(
|
||||
remote, package_name).split(' ')
|
||||
if not version.LooseVersion(income_release) == version.LooseVersion(
|
||||
installed_release):
|
||||
raise exceptions.PackageVersionError(
|
||||
package=income_package_name, version=income_release)
|
||||
if version.LooseVersion(installed_version) >= version.LooseVersion(
|
||||
income_version):
|
||||
raise exceptions.PackageVersionError(
|
||||
package=income_package_name, version=income_version)
|
||||
else:
|
||||
return True
|
||||
|
|
|
@ -15,3 +15,13 @@
|
|||
|
||||
class ConfigurationException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class PackageVersionError(Exception):
|
||||
def __init__(self, package, version):
|
||||
self.package = package
|
||||
self.version = version
|
||||
|
||||
def __repr__(self):
|
||||
return 'Package {0} has wrong version {1}'.format(
|
||||
self.package, self.version)
|
||||
|
|
|
@ -15,13 +15,12 @@
|
|||
import os
|
||||
|
||||
from proboscis.asserts import assert_equal
|
||||
|
||||
from devops.helpers import helpers
|
||||
from fuelweb_test.helpers import checkers
|
||||
from gates_tests.helpers import exceptions
|
||||
|
||||
from fuelweb_test.helpers import checkers
|
||||
from fuelweb_test import logger
|
||||
from fuelweb_test import settings
|
||||
from gates_tests.helpers import exceptions
|
||||
|
||||
|
||||
def replace_fuel_agent_rpm(environment):
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright 2014 Mirantis, Inc.
|
||||
# Copyright 2015 Mirantis, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
|
|
Loading…
Reference in New Issue