From 75dd1daf9c56bef65066754a31f89333623b3a35 Mon Sep 17 00:00:00 2001 From: vgorin Date: Tue, 25 Aug 2015 16:40:40 +0300 Subject: [PATCH] Refactoring of upgrade tests Adding to function upgrade_master possibility of choosing rollback, refactoring some test cases to use upgrade_master method. Change-Id: Ife5f3626d029d061413f6345a72ac630fa9da154 Closes-Bug: #1486990 --- fuelweb_test/helpers/fuel_actions.py | 42 ++-- .../tests/tests_upgrade/test_upgrade.py | 203 ++---------------- .../tests_upgrade/test_upgrade_chains.py | 44 +--- 3 files changed, 53 insertions(+), 236 deletions(-) diff --git a/fuelweb_test/helpers/fuel_actions.py b/fuelweb_test/helpers/fuel_actions.py index 5ba1a8036..e1953d93a 100644 --- a/fuelweb_test/helpers/fuel_actions.py +++ b/fuelweb_test/helpers/fuel_actions.py @@ -325,28 +325,38 @@ class AdminActions(BaseActions): "find /var/www/nailgun/targetimages/ -name 'env*{}*'" " -delete".format(distro.lower())) - def upgrade_master_node(self): + def upgrade_master_node(self, rollback=False, file_upload=True): """This method upgrades master node with current state.""" with self.admin_remote as master: - checkers.upload_tarball(master, hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(master, - os.path.join( - '/var', - os.path.basename(hlp_data. - TARBALL_PATH))) - checkers.untar(master, os.path.basename(hlp_data.TARBALL_PATH), - '/var') + if file_upload: + checkers.upload_tarball(master, hlp_data.TARBALL_PATH, '/var') + checkers.check_file_exists(master, + os.path.join( + '/var', + os.path.basename(hlp_data. + TARBALL_PATH))) + checkers.untar(master, os.path.basename(hlp_data.TARBALL_PATH), + '/var') keystone_pass = hlp_data.KEYSTONE_CREDS['password'] checkers.run_script(master, '/var', 'upgrade.sh', - password=keystone_pass) - checkers.wait_upgrade_is_done(master, 3000, - phrase='*** UPGRADING MASTER NODE' - ' DONE SUCCESSFULLY') - checkers.check_upgraded_containers(master, - hlp_data.UPGRADE_FUEL_FROM, - hlp_data.UPGRADE_FUEL_TO) + password=keystone_pass, + rollback=rollback, + exit_code=255 if rollback else 0) + if not rollback: + checkers.wait_upgrade_is_done(master, 3000, + phrase='***UPGRADING MASTER NODE' + ' DONE SUCCESSFULLY') + checkers.check_upgraded_containers(master, + hlp_data.UPGRADE_FUEL_FROM, + hlp_data.UPGRADE_FUEL_TO) + elif rollback: + checkers.wait_rollback_is_done(master, 3000) + checkers.check_upgraded_containers(master, + hlp_data.UPGRADE_FUEL_TO, + hlp_data.UPGRADE_FUEL_FROM) + logger.debug("all containers are ok") class NailgunActions(BaseActions): diff --git a/fuelweb_test/tests/tests_upgrade/test_upgrade.py b/fuelweb_test/tests/tests_upgrade/test_upgrade.py index 4dd59f134..cdac64f99 100644 --- a/fuelweb_test/tests/tests_upgrade/test_upgrade.py +++ b/fuelweb_test/tests/tests_upgrade/test_upgrade.py @@ -12,8 +12,6 @@ # License for the specific language governing permissions and limitations # under the License. -import os - from proboscis.asserts import assert_equal from proboscis.asserts import assert_true from proboscis import test @@ -71,24 +69,8 @@ class UpgradeFuelMaster(base_test_data.TestBasic): remote = self.env.d_env.get_ssh_to_remote(_ip) expected_kernel = self.get_slave_kernel(remote) - checkers.upload_tarball(self.env.d_env.get_admin_remote(), - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(self.env.d_env.get_admin_remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(self.env.d_env.get_admin_remote(), - os.path.basename(hlp_data. - TARBALL_PATH), '/var') - checkers.run_script(self.env.d_env.get_admin_remote(), - '/var', 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password']) - checkers.wait_upgrade_is_done(self.env.d_env.get_admin_remote(), 3000, - phrase='*** UPGRADING MASTER NODE' - ' DONE SUCCESSFULLY') - checkers.check_upgraded_containers(self.env.d_env.get_admin_remote(), - hlp_data.UPGRADE_FUEL_FROM, - hlp_data.UPGRADE_FUEL_TO) + self.env.admin_actions.upgrade_master_node() + self.fuel_web.assert_nodes_in_ready_state(cluster_id) self.fuel_web.wait_nodes_get_online_state( self.env.d_env.nodes().slaves[:3]) @@ -141,24 +123,9 @@ class UpgradeFuelMaster(base_test_data.TestBasic): self.env.revert_snapshot('ceph_ha_one_controller_compact') cluster_id = self.fuel_web.get_last_created_cluster() - checkers.upload_tarball(self.env.d_env.get_admin_remote(), - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(self.env.d_env.get_admin_remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(self.env.d_env.get_admin_remote(), - os.path.basename(hlp_data. - TARBALL_PATH), '/var') - checkers.run_script(self.env.d_env.get_admin_remote(), - '/var', 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password']) - checkers.wait_upgrade_is_done(self.env.d_env.get_admin_remote(), 3000, - phrase='*** UPGRADING MASTER NODE' - ' DONE SUCCESSFULLY') - checkers.check_upgraded_containers(self.env.d_env.get_admin_remote(), - hlp_data.UPGRADE_FUEL_FROM, - hlp_data.UPGRADE_FUEL_TO) + + self.env.admin_actions.upgrade_master_node() + self.fuel_web.assert_nodes_in_ready_state(cluster_id) self.fuel_web.wait_nodes_get_online_state( self.env.d_env.nodes().slaves[:3]) @@ -210,24 +177,9 @@ class UpgradeFuelMaster(base_test_data.TestBasic): cluster_id = self.fuel_web.get_last_created_cluster() available_releases_before = self.fuel_web.get_releases_list_for_os( release_name=hlp_data.OPENSTACK_RELEASE) - checkers.upload_tarball(self.env.d_env.get_admin_remote(), - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(self.env.d_env.get_admin_remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(self.env.d_env.get_admin_remote(), - os.path.basename(hlp_data. - TARBALL_PATH), '/var') - checkers.run_script(self.env.d_env.get_admin_remote(), - '/var', 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password']) - checkers.wait_upgrade_is_done(self.env.d_env.get_admin_remote(), 3000, - phrase='*** UPGRADING MASTER NODE' - ' DONE SUCCESSFULLY') - checkers.check_upgraded_containers(self.env.d_env.get_admin_remote(), - hlp_data.UPGRADE_FUEL_FROM, - hlp_data.UPGRADE_FUEL_TO) + + self.env.admin_actions.upgrade_master_node() + self.fuel_web.assert_fuel_version(hlp_data.UPGRADE_FUEL_TO) self.fuel_web.assert_nodes_in_ready_state(cluster_id) self.fuel_web.wait_nodes_get_online_state( @@ -299,26 +251,9 @@ class UpgradeFuelMaster(base_test_data.TestBasic): cluster_id = self.fuel_web.get_last_created_cluster() available_releases_before = self.fuel_web.get_releases_list_for_os( release_name=hlp_data.OPENSTACK_RELEASE) - checkers.upload_tarball(self.env.d_env.get_admin_remote(), - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(self.env.d_env.get_admin_remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(self.env.d_env.get_admin_remote(), - os.path.basename(hlp_data. - TARBALL_PATH), '/var') - # Upgrade - checkers.run_script(self.env.d_env.get_admin_remote(), - '/var', 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password']) - checkers.wait_upgrade_is_done(self.env.d_env.get_admin_remote(), 3000, - phrase='*** UPGRADING MASTER NODE' - ' DONE SUCCESSFULLY') - checkers.check_upgraded_containers(self.env.d_env.get_admin_remote(), - hlp_data.UPGRADE_FUEL_FROM, - hlp_data.UPGRADE_FUEL_TO) + self.env.admin_actions.upgrade_master_node() + self.fuel_web.assert_fuel_version(hlp_data.UPGRADE_FUEL_TO) self.fuel_web.assert_nodes_in_ready_state(cluster_id) self.fuel_web.wait_nodes_get_online_state( @@ -416,24 +351,9 @@ class UpgradeFuelMaster(base_test_data.TestBasic): cluster_id = self.fuel_web.get_last_created_cluster() available_releases_before = self.fuel_web.get_releases_list_for_os( release_name=hlp_data.OPENSTACK_RELEASE) - checkers.upload_tarball(self.env.d_env.get_admin_remote(), - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(self.env.d_env.get_admin_remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(self.env.d_env.get_admin_remote(), - os.path.basename(hlp_data.TARBALL_PATH), - '/var') - checkers.run_script(self.env.d_env.get_admin_remote(), - '/var', 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password']) - checkers.wait_upgrade_is_done(self.env.d_env.get_admin_remote(), 3000, - phrase='*** UPGRADING MASTER NODE' - ' DONE SUCCESSFULLY') - checkers.check_upgraded_containers(self.env.d_env.get_admin_remote(), - hlp_data.UPGRADE_FUEL_FROM, - hlp_data.UPGRADE_FUEL_TO) + + self.env.admin_actions.upgrade_master_node() + self.fuel_web.assert_nodes_in_ready_state(cluster_id) self.fuel_web.wait_nodes_get_online_state( self.env.d_env.nodes().slaves[:3]) @@ -510,26 +430,9 @@ class UpgradeFuelMaster(base_test_data.TestBasic): available_releases_before = self.fuel_web.get_releases_list_for_os( release_name=hlp_data.OPENSTACK_RELEASE) - remote = self.env.d_env.get_admin_remote - cluster_id = self.fuel_web.get_last_created_cluster() - checkers.upload_tarball(remote(), hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(remote(), os.path.basename(hlp_data.TARBALL_PATH), - '/var') - # Upgrade with rollback - keystone_pass = hlp_data.KEYSTONE_CREDS['password'] - checkers.run_script(remote(), '/var', 'upgrade.sh', - password=keystone_pass, rollback=True, - exit_code=255) - checkers.wait_rollback_is_done(remote(), 3000) - checkers.check_upgraded_containers(remote(), hlp_data.UPGRADE_FUEL_TO, - hlp_data.UPGRADE_FUEL_FROM) - logger.debug("all containers are ok") + self.env.admin_actions.upgrade_master_node(rollback=True) _wait(lambda: self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes().slaves[0]), timeout=8 * 60) logger.debug("all services are up now") @@ -541,15 +444,7 @@ class UpgradeFuelMaster(base_test_data.TestBasic): self.fuel_web.run_ostf(cluster_id, test_sets=['ha', 'smoke', 'sanity']) - # Upgrade fuel master - checkers.run_script(remote(), '/var', 'upgrade.sh', - password=keystone_pass) - checkers.wait_upgrade_is_done(remote(), 3000, - phrase='*** UPGRADING MASTER NODE' - ' DONE SUCCESSFULLY') - checkers.check_upgraded_containers(remote(), - hlp_data.UPGRADE_FUEL_FROM, - hlp_data.UPGRADE_FUEL_TO) + self.env.admin_actions.upgrade_master_node(file_upload=False) self.fuel_web.assert_fuel_version(hlp_data.UPGRADE_FUEL_TO) self.fuel_web.assert_nodes_in_ready_state(cluster_id) self.fuel_web.wait_nodes_get_online_state( @@ -617,25 +512,9 @@ class RollbackFuelMaster(base_test_data.TestBasic): self.env.revert_snapshot("deploy_neutron_gre_ha") cluster_id = self.fuel_web.get_last_created_cluster() - checkers.upload_tarball(self.env.d_env.get_admin_remote(), - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(self.env.d_env.get_admin_remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(self.env.d_env.get_admin_remote(), - os.path.basename(hlp_data. - TARBALL_PATH), '/var') - checkers.run_script(self.env.d_env.get_admin_remote(), - '/var', - 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password'], - rollback=True, exit_code=255) - checkers.wait_rollback_is_done(self.env.d_env.get_admin_remote(), 3000) - checkers.check_upgraded_containers(self.env.d_env.get_admin_remote(), - hlp_data.UPGRADE_FUEL_TO, - hlp_data.UPGRADE_FUEL_FROM) - logger.debug("all containers are ok") + + self.env.admin_actions.upgrade_master_node(rollback=True) + _wait(lambda: self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes().slaves[0]), timeout=8 * 60) logger.debug("all services are up now") @@ -687,27 +566,8 @@ class RollbackFuelMaster(base_test_data.TestBasic): remote = self.env.d_env.get_ssh_to_remote(_ip) expected_kernel = UpgradeFuelMaster.get_slave_kernel(remote) - checkers.upload_tarball(self.env.d_env.get_admin_remote(), - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(self.env.d_env.get_admin_remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(self.env.d_env.get_admin_remote(), - os.path.basename(hlp_data. - TARBALL_PATH), '/var') - # we expect 255 exit code here because upgrade failed - # and exit status is 255 - checkers.run_script(self.env.d_env.get_admin_remote(), - '/var', - 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password'], - rollback=True, exit_code=255) - checkers.wait_rollback_is_done(self.env.d_env.get_admin_remote(), 3000) - checkers.check_upgraded_containers(self.env.d_env.get_admin_remote(), - hlp_data.UPGRADE_FUEL_TO, - hlp_data.UPGRADE_FUEL_FROM) - logger.debug("all containers are ok") + self.env.admin_actions.upgrade_master_node(rollback=True) + _wait(lambda: self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes().slaves[0]), timeout=8 * 60) logger.debug("all services are up now") @@ -761,27 +621,8 @@ class RollbackFuelMaster(base_test_data.TestBasic): self.env.revert_snapshot("deploy_neutron_gre") cluster_id = self.fuel_web.get_last_created_cluster() - checkers.upload_tarball(self.env.d_env.get_admin_remote(), - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(self.env.d_env.get_admin_remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(self.env.d_env.get_admin_remote(), - os.path.basename(hlp_data. - TARBALL_PATH), '/var') - # we expect 255 exit code here because upgrade failed - # and exit status is 255 - checkers.run_script(self.env.d_env.get_admin_remote(), - '/var', - 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password'], - rollback=True, exit_code=255) - checkers.wait_rollback_is_done(self.env.d_env.get_admin_remote(), 3000) - checkers.check_upgraded_containers(self.env.d_env.get_admin_remote(), - hlp_data.UPGRADE_FUEL_TO, - hlp_data.UPGRADE_FUEL_FROM) - logger.debug("all containers are ok") + self.env.admin_actions.upgrade_master_node(rollback=True) + _wait(lambda: self.fuel_web.get_nailgun_node_by_devops_node( self.env.d_env.nodes().slaves[0]), timeout=8 * 60) logger.debug("all services are up now") diff --git a/fuelweb_test/tests/tests_upgrade/test_upgrade_chains.py b/fuelweb_test/tests/tests_upgrade/test_upgrade_chains.py index f42d5271f..ab024c912 100644 --- a/fuelweb_test/tests/tests_upgrade/test_upgrade_chains.py +++ b/fuelweb_test/tests/tests_upgrade/test_upgrade_chains.py @@ -12,15 +12,12 @@ # License for the specific language governing permissions and limitations # under the License. -import os - from proboscis import test from proboscis import SkipTest from fuelweb_test.settings import DEPLOYMENT_MODE from fuelweb_test.tests.base_test_case import SetupEnvironment -from fuelweb_test.helpers import checkers from fuelweb_test.helpers.decorators import log_snapshot_after_test from fuelweb_test import logger from fuelweb_test import settings as hlp_data @@ -101,24 +98,9 @@ class UpgradeFuelChains(base_test_data.TestBasic): cluster_id = self.fuel_web.get_last_created_cluster() available_releases_before = self.fuel_web.get_releases_list_for_os( release_name=hlp_data.OPENSTACK_RELEASE) - checkers.upload_tarball(self.env.d_env.get_admin_remote(), - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(self.env.d_env.get_admin_remote(), - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(self.env.d_env.get_admin_remote(), - os.path.basename(hlp_data. - TARBALL_PATH), '/var') - checkers.run_script(self.env.d_env.get_admin_remote(), - '/var', 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password']) - checkers.wait_upgrade_is_done(self.env.d_env.get_admin_remote(), 3000, - phrase='*** UPGRADING MASTER NODE' - ' DONE SUCCESSFULLY') - checkers.check_upgraded_containers(self.env.d_env.get_admin_remote(), - hlp_data.UPGRADE_FUEL_FROM, - hlp_data.UPGRADE_FUEL_TO) + + self.env.admin_actions.upgrade_master_node() + self.fuel_web.assert_fuel_version(hlp_data.UPGRADE_FUEL_TO) self.fuel_web.assert_nodes_in_ready_state(cluster_id) self.fuel_web.wait_nodes_get_online_state( @@ -188,24 +170,8 @@ class UpgradeFuelChains(base_test_data.TestBasic): remote = self.env.d_env.get_admin_remote() remote.execute("rm -rf /var/*upgrade*") - checkers.upload_tarball(remote, - hlp_data.TARBALL_PATH, '/var') - checkers.check_file_exists(remote, - os.path.join('/var', - os.path.basename( - hlp_data.TARBALL_PATH))) - checkers.untar(remote, - os.path.basename(hlp_data. - TARBALL_PATH), '/var') - checkers.run_script(remote, - '/var', 'upgrade.sh', - password=hlp_data.KEYSTONE_CREDS['password']) - checkers.wait_upgrade_is_done(remote, 3000, - phrase='*** UPGRADING MASTER NODE' - ' DONE SUCCESSFULLY') - checkers.check_upgraded_containers(remote, - hlp_data.UPGRADE_FUEL_FROM, - hlp_data.UPGRADE_FUEL_TO) + self.env.admin_actions.upgrade_master_node() + self.fuel_web.assert_fuel_version(hlp_data.UPGRADE_FUEL_TO) self.fuel_web.wait_nodes_get_online_state( self.env.d_env.nodes().slaves[:6])