Move new scaleback test to new test class
This commit is contained in:
@@ -24,15 +24,19 @@ import zaza.openstack.configure.hacluster
|
||||
import zaza.utilities.juju as juju_utils
|
||||
|
||||
|
||||
class HaclusterTest(test_utils.OpenStackBaseTest):
|
||||
"""hacluster tests."""
|
||||
class HaclusterBaseTest(test_utils.OpenStackBaseTest):
|
||||
"""Base class for hacluster tests."""
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
"""Run class setup for running hacluster tests."""
|
||||
super(HaclusterTest, cls).setUpClass()
|
||||
super(HaclusterBaseTest, cls).setUpClass()
|
||||
cls.vip = os.environ.get("TEST_VIP00")
|
||||
|
||||
|
||||
class HaclusterTest(HaclusterBaseTest):
|
||||
"""hacluster tests."""
|
||||
|
||||
def test_900_action_cleanup(self):
|
||||
"""The services can be cleaned up."""
|
||||
zaza.model.run_action_on_leader(
|
||||
@@ -71,22 +75,20 @@ class HaclusterTest(test_utils.OpenStackBaseTest):
|
||||
self._toggle_maintenance_and_wait('true')
|
||||
self._toggle_maintenance_and_wait('false')
|
||||
|
||||
def test_930_scaleback_bionic(self):
|
||||
|
||||
class HaclusterScalebackTest(HaclusterBaseTest):
|
||||
"""hacluster scaleback tests."""
|
||||
|
||||
_PRINCIPLE_APP = 'keystone'
|
||||
|
||||
def test_930_scaleback(self):
|
||||
"""Remove a unit, recalculate quorum and add a new one."""
|
||||
principle_app = 'keystone'
|
||||
principle_units = zaza.model.get_status().applications[
|
||||
principle_app]['units']
|
||||
self._PRINCIPLE_APP]['units']
|
||||
self.assertEqual(len(principle_units), 3)
|
||||
doomed_principle = sorted(principle_units.keys())[0]
|
||||
series = juju_utils.get_machine_series(
|
||||
principle_units[doomed_principle].machine)
|
||||
if series != 'bionic':
|
||||
logging.debug("noop - only run test in bionic")
|
||||
logging.info('SKIP')
|
||||
return
|
||||
|
||||
doomed_unit = juju_utils.get_subordinate_units(
|
||||
[doomed_principle], charm_name='hac')[0]
|
||||
[doomed_principle], charm_name=self.application_name)[0]
|
||||
|
||||
logging.info('Pausing unit {}'.format(doomed_unit))
|
||||
zaza.model.run_action(
|
||||
@@ -104,7 +106,7 @@ class HaclusterTest(test_utils.OpenStackBaseTest):
|
||||
|
||||
logging.info('Removing {}'.format(doomed_principle))
|
||||
zaza.model.destroy_unit(
|
||||
principle_app,
|
||||
self._PRINCIPLE_APP,
|
||||
doomed_principle,
|
||||
wait_disappear=True)
|
||||
logging.info('OK')
|
||||
@@ -116,25 +118,25 @@ class HaclusterTest(test_utils.OpenStackBaseTest):
|
||||
action_params={'i-really-mean-it': True},
|
||||
raise_on_failure=True)
|
||||
|
||||
_states = {
|
||||
expected_states = {
|
||||
self.application_name: {
|
||||
"workload-status": "blocked",
|
||||
"workload-status-message":
|
||||
"Insufficient peer units for ha cluster (require 3)"
|
||||
},
|
||||
'keystone': {
|
||||
self._PRINCIPLE_APP: {
|
||||
"workload-status": "blocked",
|
||||
"workload-status-message": "Database not initialised",
|
||||
},
|
||||
}
|
||||
zaza.model.wait_for_application_states(states=_states)
|
||||
zaza.model.wait_for_application_states(states=expected_states)
|
||||
zaza.model.block_until_all_units_idle()
|
||||
logging.info('OK')
|
||||
|
||||
logging.info('Adding a hacluster unit')
|
||||
zaza.model.add_unit(principle_app, wait_appear=True)
|
||||
_states = {self.application_name: {
|
||||
zaza.model.add_unit(self._PRINCIPLE_APP, wait_appear=True)
|
||||
expected_states = {self.application_name: {
|
||||
"workload-status": "active",
|
||||
"workload-status-message": "Unit is ready and clustered"}}
|
||||
zaza.model.wait_for_application_states(states=_states)
|
||||
zaza.model.wait_for_application_states(states=expected_states)
|
||||
logging.debug('OK')
|
||||
|
||||
Reference in New Issue
Block a user