Files
trove/trove/tests/unittests/guestagent/test_mariadb_manager.py
T
Petr Malik c45eb67018 Unittests patch 'CONF.datastore_manager'
Unittests do not have 'CONF.datastore_manager' set (None).

As the result all datastore manager/app tests that access
configuration by the manager name get the default 'mysql' values.
Apart from not testing the production configuration this
also makes it difficult to test dynamically looked up
datastore-specific properties which do not exist in the mysql
group at all.

This patch set adds a helper method for patching any given
configuration property and also adds a simple interface for
patching the manager name to the base TestCase.

All existing manager/app tests were updated to properly patch the manager
property.
The base test patches the manager name to 'mysql' so that
all unittests run with this manager unless explicitly overriden.

It's now safe to remove the manager parameter from the
'cfg.get_configuration_property()' function. It was there
to work around this issue in unittests.

Change-Id: I903a0fb1ede8ad6614d2b5a8fc1a256f74412496
2016-05-27 21:15:35 +00:00

66 lines
2.7 KiB
Python

# Copyright [2015] Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from mock import MagicMock
from mock import patch
from trove.guestagent.datastore.experimental.mariadb import (
manager as mariadb_manager)
from trove.guestagent.datastore.experimental.mariadb import (
service as mariadb_service)
from trove.guestagent.datastore.mysql_common import service as mysql_service
from trove.tests.unittests.guestagent.test_datastore_manager import \
DatastoreManagerTest
class GuestAgentManagerTest(DatastoreManagerTest):
def setUp(self):
super(GuestAgentManagerTest, self).setUp('mariadb')
self.manager = mariadb_manager.Manager()
patcher_rs = patch(
'trove.guestagent.strategies.replication.get_instance')
patcher_rs.start()
self.addCleanup(patcher_rs.stop)
@patch.object(mysql_service.BaseMySqlAppStatus, 'get',
new_callable=MagicMock)
@patch.object(mariadb_service.MariaDBApp, 'install_cluster',
new_callable=MagicMock)
def test_install_cluster(self, install_cluster, app_status_get):
install_cluster.return_value = MagicMock()
app_status_get.return_value = None
replication_user = "repuser"
configuration = "configuration"
bootstrap = True
self.manager.install_cluster(self.context, replication_user,
configuration, bootstrap)
app_status_get.assert_any_call()
install_cluster.assert_called_with(
replication_user, configuration, bootstrap)
@patch.object(mysql_service.BaseMySqlAppStatus, 'get',
new_callable=MagicMock)
@patch.object(mariadb_service.MariaDBApp, 'reset_admin_password',
new_callable=MagicMock)
def test_reset_admin_password(self, reset_admin_password, app_status_get):
reset_admin_password.return_value = None
app_status_get.return_value = MagicMock()
admin_password = "password"
self.manager.reset_admin_password(self.context, admin_password)
app_status_get.assert_any_call()
reset_admin_password.assert_called_with(admin_password)