From 11864d4f2ac746c4f375e9bdcc56696cf5b2e6b1 Mon Sep 17 00:00:00 2001 From: David Ames Date: Wed, 12 Dec 2018 16:25:32 -0800 Subject: [PATCH] Add unit tests for dbs to sync Change-Id: I1ed8ecc4f08b0145564c03472df64ee4bf93e6bb --- unit_tests/test_percona_utils.py | 44 +++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/unit_tests/test_percona_utils.py b/unit_tests/test_percona_utils.py index 435dd92..9d42e96 100644 --- a/unit_tests/test_percona_utils.py +++ b/unit_tests/test_percona_utils.py @@ -1006,15 +1006,57 @@ class TestAsynchronousReplication(CharmTestCase): super(TestAsynchronousReplication, self).setUp(percona_utils, self.TO_PATCH) + @mock.patch.object(percona_utils, 'config') + def test_get_databases_to_replicate_no_config_id(self, mock_config): + config = {} + mock_config.side_effect = lambda k: config.get(k) + with self.assertRaises(percona_utils.ClusterIDRequired): + percona_utils.get_databases_to_replicate() + @mock.patch.object(percona_utils, 'config') def test_get_databases_to_replicate(self, mock_config): - config = {'cluster-id': 1, 'databases-to-replicate': 'db1:tb1,tb2;db2'} + config = { + 'cluster-id': 3, + 'databases-to-replicate': 'db1:tb1,tb2;db2'} mock_config.side_effect = lambda k: config.get(k) percona_utils.get_databases_to_replicate() self.assertEqual(percona_utils.get_databases_to_replicate(), ([{'database': 'db1', 'tables': ['tb1', 'tb2']}, {'database': 'db2', 'tables': []}])) + @mock.patch.object(percona_utils, 'config') + def test_get_databases_to_replicate_many(self, mock_config): + config = { + 'cluster-id': 3, + 'databases-to-replicate': 'db1:tb1;db2:tb2;db3;db4;db5:tb5,tb6'} + mock_config.side_effect = lambda k: config.get(k) + percona_utils.get_databases_to_replicate() + self.assertEqual(percona_utils.get_databases_to_replicate(), + ([{'database': 'db1', 'tables': ['tb1']}, + {'database': 'db2', 'tables': ['tb2']}, + {'database': 'db3', 'tables': []}, + {'database': 'db4', 'tables': []}, + {'database': 'db5', 'tables': ['tb5', 'tb6']} + ])) + + @mock.patch.object(percona_utils, 'config') + def test_get_databases_to_replicate_space(self, mock_config): + config = { + 'cluster-id': 3, + 'databases-to-replicate': 'db1 tb1; db2,tb2;db3:db4'} + mock_config.side_effect = lambda k: config.get(k) + with self.assertRaises(percona_utils.InvalidDatabasesToReplicate): + percona_utils.get_databases_to_replicate() + + @mock.patch.object(percona_utils, 'config') + def test_get_databases_to_replicate_comma(self, mock_config): + config = { + 'cluster-id': 3, + 'databases-to-replicate': 'db1:tb1;db2,tb2;db3:db4'} + mock_config.side_effect = lambda k: config.get(k) + with self.assertRaises(percona_utils.InvalidDatabasesToReplicate): + percona_utils.get_databases_to_replicate() + @mock.patch.object(percona_utils, 'create_replication_user') @mock.patch.object(percona_utils, 'list_replication_users') def test_configure_master_slave_address_not_in_relation_data(