From a56fa1fd74668f3ed3f5dcba3bdd3f43c59e7695 Mon Sep 17 00:00:00 2001 From: Marco Silva Date: Thu, 14 May 2020 09:34:44 +0100 Subject: [PATCH 1/2] Add mysqldump test to MySqlCommonTests Copy function from MySQLInnoDBClusterTests to test mysqldump as standard on mysql applications. DocImpact Closes-Bug: #0000000 Implements: MySQL dump test --- zaza/openstack/charm_tests/mysql/tests.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/zaza/openstack/charm_tests/mysql/tests.py b/zaza/openstack/charm_tests/mysql/tests.py index 77bc966..fb1ac61 100644 --- a/zaza/openstack/charm_tests/mysql/tests.py +++ b/zaza/openstack/charm_tests/mysql/tests.py @@ -75,6 +75,23 @@ class MySQLBaseTest(test_utils.OpenStackBaseTest): class MySQLCommonTests(MySQLBaseTest): """Common mysql charm tests.""" + def test_110_mysqldump(self): + """Backup mysql. + + Run the mysqldump action. + """ + _db = "keystone" + _file_key = "mysqldump-file" + logging.info("Execute mysqldump action") + action = zaza.model.run_action_on_leader( + self.application, + "mysqldump", + action_params={"databases": _db}) + _results = action.data["results"] + assert _db in _results[_file_key], ( + "Mysqldump action failed: {}".format(action.data)) + logging.info("Passed mysqldump action test.") + def test_910_restart_on_config_change(self): """Checking restart happens on config change. From 28924d29090c0ac2247fea6fb1a79a73227d8145 Mon Sep 17 00:00:00 2001 From: Marco Silva Date: Wed, 20 May 2020 13:05:43 +0100 Subject: [PATCH 2/2] Move mysqldump from MySQLInnoDBClusterTests to MySQLCommonTests Moved mysqldump function. Added check for percona-cluster application on the function, to avoid breaking checks on non-percona applications. --- zaza/openstack/charm_tests/mysql/tests.py | 30 +++++++---------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/zaza/openstack/charm_tests/mysql/tests.py b/zaza/openstack/charm_tests/mysql/tests.py index fb1ac61..61c37e0 100644 --- a/zaza/openstack/charm_tests/mysql/tests.py +++ b/zaza/openstack/charm_tests/mysql/tests.py @@ -83,6 +83,13 @@ class MySQLCommonTests(MySQLBaseTest): _db = "keystone" _file_key = "mysqldump-file" logging.info("Execute mysqldump action") + # Need to change strict mode to be able to dump database + if self.application_name == "percona-cluster": + action = zaza.model.run_action_on_leader( + self.application_name, + "set-pxc-strict-mode", + action_params={"mode": "MASTER"}) + action = zaza.model.run_action_on_leader( self.application, "mysqldump", @@ -283,10 +290,9 @@ class PerconaClusterColdStartTest(PerconaClusterBaseTest): After bootstrapping a non-leader node, notify bootstrapped on the leader node. """ - _machines = list( + _machines = sorted( juju_utils.get_machine_uuids_for_application(self.application)) # Stop Nodes - _machines.sort() # Avoid hitting an update-status hook logging.debug("Wait till model is idle ...") zaza.model.block_until_all_units_idle() @@ -439,23 +445,6 @@ class MySQLInnoDBClusterTests(MySQLCommonTests): .format(action.data)) logging.info("Passed cluster-status action test.") - def test_110_mysqldump(self): - """Backup mysql. - - Run the mysqldump action. - """ - _db = "keystone" - _file_key = "mysqldump-file" - logging.info("Execute mysqldump action") - action = zaza.model.run_action_on_leader( - self.application, - "mysqldump", - action_params={"databases": _db}) - _results = action.data["results"] - assert _db in _results[_file_key], ( - "Mysqldump action failed: {}".format(action.data)) - logging.info("Passed mysqldump action test.") - def test_120_set_cluster_option(self): """Set cluster option. @@ -504,10 +493,9 @@ class MySQLInnoDBClusterColdStartTest(MySQLBaseTest): After a cold start, reboot cluster from complete outage. """ - _machines = list( + _machines = sorted( juju_utils.get_machine_uuids_for_application(self.application)) # Stop Nodes - _machines.sort() # Avoid hitting an update-status hook logging.debug("Wait till model is idle ...") zaza.model.block_until_all_units_idle()