From 357f2f9026328a83733249a4f1b0693bc7aca2df Mon Sep 17 00:00:00 2001 From: Maksym Strukov Date: Fri, 1 Jul 2016 11:22:21 +0300 Subject: [PATCH] Add test for mcollective package version Scenario: 1. Check mcollective version on bootstrap 2. Create cluster 3. Add one node to cluster 4. Provision nodes 5. Check mcollective version on node Change-Id: I92fe35d0c31f08bd0d69a8993c9f3a72e2bdb60d Closes-Bug: #1460073 --- fuelweb_test/helpers/checkers.py | 30 ++++++++++++++++ fuelweb_test/tests/tests_ibp/test_ibp.py | 44 ++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/fuelweb_test/helpers/checkers.py b/fuelweb_test/helpers/checkers.py index 412e647c4..764ea3852 100644 --- a/fuelweb_test/helpers/checkers.py +++ b/fuelweb_test/helpers/checkers.py @@ -1470,3 +1470,33 @@ def check_free_space_slave(env, min_disk_slave=150): "The minimal vm-nova storage size should be {0}, " "current {1}".format( vm_storage_free_space, 4 * small_flavor_disk)) + + +@logwrap +def check_package_version(ip, package_name, expected_version, condition='ge'): + """Check that package version equal/not equal/greater/less than expected + + :param ip: ip + :param package_name: package name to check + :param expected_version: expected version of package + :param condition: predicate can be on of eq, ne, lt, le, ge, gt + :return None: or raise UnexpectedExitCode + """ + cmd = "dpkg -s {0} " \ + "| awk -F': ' '/Version/ {{print \$2}}'".format(package_name) + logger.debug(cmd) + result = ssh_manager.execute_on_remote( + ip, + cmd=cmd, + assert_ec_equal=[0] + ) + version = result['stdout_str'] + logger.info('{} ver is {}'.format(package_name, version)) + err_msg = 'Package {} version is {} and not {} {}'.format(package_name, + version, + condition, + expected_version) + cmd = 'dpkg --compare-versions {0} {1} {2}'.format(version, condition, + expected_version) + ssh_manager.execute_on_remote(ip, cmd, assert_ec_equal=[0], + err_msg=err_msg) diff --git a/fuelweb_test/tests/tests_ibp/test_ibp.py b/fuelweb_test/tests/tests_ibp/test_ibp.py index d9dc4c302..4b7d8390b 100644 --- a/fuelweb_test/tests/tests_ibp/test_ibp.py +++ b/fuelweb_test/tests/tests_ibp/test_ibp.py @@ -15,6 +15,7 @@ from proboscis import test from proboscis.asserts import assert_true +from fuelweb_test.helpers.checkers import check_package_version from fuelweb_test.helpers.decorators import log_snapshot_after_test from fuelweb_test import logger from fuelweb_test.tests.base_test_case import SetupEnvironment @@ -39,6 +40,49 @@ class IBPTest(TestBasic): ' Missing packages: {}'.format(pkg_list - node_pkgs) ) + @test(depends_on=[SetupEnvironment.prepare_slaves_1], + groups=["check_mcollective_version"]) + @log_snapshot_after_test + def check_mcollective_version(self): + """Check mcollective package version on bootstrap and provisioned node + + Scenario: + 1. Check mcollective version on bootstrap + 2. Create cluster + 3. Add one node to cluster + 4. Provision nodes + 5. Check mcollective version on node + + Duration 5m + """ + self.env.revert_snapshot("ready_with_1_slaves", skip_timesync=True) + self.show_step(1) + + node = self.env.d_env.get_node(name__in=["slave-01"]) + _ip = self.fuel_web.get_nailgun_node_by_devops_node(node)['ip'] + check_package_version(_ip, 'mcollective', '2.3.3', 'ge') + + self.show_step(2) + cluster_id = self.fuel_web.create_cluster( + name=self.__class__.__name__ + ) + pkg_list = self.fuel_web.get_cluster_ibp_packages(cluster_id) + logger.debug('Cluster IBP packages: {}'.format(pkg_list)) + + self.show_step(3) + self.fuel_web.update_nodes( + cluster_id, + { + 'slave-01': ['controller'], + } + ) + + self.show_step(4) + self.fuel_web.provisioning_cluster_wait(cluster_id) + + self.show_step(5) + check_package_version(_ip, 'mcollective', '2.3.3', 'ge') + @test(depends_on=[SetupEnvironment.prepare_slaves_1], groups=["check_ibp_default_package_list"]) @log_snapshot_after_test