From c7e8b047a4b026faf5748b4f9ddb9f87938b5adc Mon Sep 17 00:00:00 2001 From: David Ames Date: Thu, 20 Sep 2018 13:13:00 +0000 Subject: [PATCH] Allow for variations on series upgrade tests. It is useful to be able to test deployments which are not full OpenStack deployments with all the required services to launch a VM. This change creates variations that allow both the full stack tests and ones that do not assume what has been deployed. --- zaza/charm_tests/series_upgrade/tests.py | 70 ++++++++++++++++++++---- 1 file changed, 59 insertions(+), 11 deletions(-) diff --git a/zaza/charm_tests/series_upgrade/tests.py b/zaza/charm_tests/series_upgrade/tests.py index 424efd8..3943849 100644 --- a/zaza/charm_tests/series_upgrade/tests.py +++ b/zaza/charm_tests/series_upgrade/tests.py @@ -35,18 +35,11 @@ class SeriesUpgradeTest(unittest.TestCase): def setUpClass(cls): """Run setup for Series Upgrades.""" cli_utils.setup_logging() - cls.lts = LTSGuestCreateTest() - cls.lts.setUpClass() cls.from_series = None cls.to_series = None cls.workaround_script = None cls.files = [] - def test_100_validate_pre_series_upgrade_cloud(self): - """Validate pre series upgrade.""" - logging.info("Validate pre-series-upgrade: Spin up LTS instance") - self.lts.test_launch_small_instance() - def test_200_run_series_upgrade(self): """Run series upgrade.""" # Set Feature Flag @@ -72,8 +65,11 @@ class SeriesUpgradeTest(unittest.TestCase): if "nova-compute" in applications[application]["charm"]: pause_non_leader_primary = False pause_non_leader_subordinate = False - # Place holder for Ceph applications - # The rest are likley APIs and use defaults + if "ceph" in applications[application]["charm"]: + origin = "source" + pause_non_leader_primary = False + pause_non_leader_subordinate = False + # The rest are likley APIs use defaults generic_utils.series_upgrade_application( application, @@ -85,14 +81,63 @@ class SeriesUpgradeTest(unittest.TestCase): workaround_script=self.workaround_script, files=self.files) + +class OpenStackSeriesUpgrade(SeriesUpgradeTest): + """OpenStack Series Upgrade. + + Full OpenStack series upgrade with VM launch before and after the series + upgrade. + + This test requires a full OpenStack including at least: keystone, glance, + nova-cloud-controller, nova-compute, neutron-gateway, neutron-api and + neutron-openvswitch. + """ + + @classmethod + def setUpClass(cls): + """Run setup for Series Upgrades.""" + super(OpenStackSeriesUpgrade, cls).setUpClass() + cls.lts = LTSGuestCreateTest() + cls.lts.setUpClass() + + def test_100_validate_pre_series_upgrade_cloud(self): + """Validate pre series upgrade.""" + logging.info("Validate pre-series-upgrade: Spin up LTS instance") + self.lts.test_launch_small_instance() + def test_500_validate_series_upgraded_cloud(self): """Validate post series upgrade.""" logging.info("Validate post-series-upgrade: Spin up LTS instance") self.lts.test_launch_small_instance() +class OpenStackTrustyXenialSeriesUpgrade(OpenStackSeriesUpgrade): + """OpenStack Trusty to Xenial Series Upgrade.""" + + @classmethod + def setUpClass(cls): + """Run setup for Trusty to Xenial Series Upgrades.""" + super(OpenStackTrustyXenialSeriesUpgrade, cls).setUpClass() + cls.from_series = "trusty" + cls.to_series = "xenial" + + +class OpenStackXenialBionicSeriesUpgrade(OpenStackSeriesUpgrade): + """OpenStack Xenial to Bionic Series Upgrade.""" + + @classmethod + def setUpClass(cls): + """Run setup for Xenial to Bionic Series Upgrades.""" + super(OpenStackXenialBionicSeriesUpgrade, cls).setUpClass() + cls.from_series = "xenial" + cls.to_series = "bionic" + + class TrustyXenialSeriesUpgrade(SeriesUpgradeTest): - """Trusty to Xenial Series Upgrade.""" + """Trusty to Xenial Series Upgrade. + + Makes no assumptions about what is in the deployment. + """ @classmethod def setUpClass(cls): @@ -103,7 +148,10 @@ class TrustyXenialSeriesUpgrade(SeriesUpgradeTest): class XenialBionicSeriesUpgrade(SeriesUpgradeTest): - """Xenial to Bionic Series Upgrade.""" + """Xenial to Bionic Series Upgrade. + + Makes no assumptions about what is in the deployment. + """ @classmethod def setUpClass(cls):