trove/backup/tests/unittests/drivers/test_mariadb.py
Hirotaka Wakabayashi 1126317f87 Disables shell=True in backup and restore
This PR disables shell=True in backup and restore.

Co-Authored-By: wu.chunyang <wchy1001@gmail.com>

Story: 2010004
Task: 45128
Change-Id: I13405e8bc93586441da28898e99dce936fc6d68a
2023-12-28 12:09:10 +09:00

136 lines
3.9 KiB
Python

# 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.
import unittest
from unittest.mock import MagicMock, PropertyMock
from oslo_config import cfg
from oslo_log import log as logging
from oslo_utils import importutils
LOG = logging.getLogger(__name__)
CONF = cfg.CONF
CONF.backup_encryption_key = None
CONF.backup_id = "backup_unittest"
CONF.db_user = "db_user"
CONF.db_password = "db_password"
CONF.db_host = "db_host"
driver_mapping = {
'innobackupex': 'backup.drivers.innobackupex.InnoBackupEx',
'innobackupex_inc': 'backup.drivers.innobackupex.InnoBackupExIncremental',
'mariabackup': 'backup.drivers.mariabackup.MariaBackup',
'mariabackup_inc': 'backup.drivers.mariabackup.MariaBackupIncremental',
'pg_basebackup': 'backup.drivers.postgres.PgBasebackup',
'pg_basebackup_inc': 'backup.drivers.postgres.PgBasebackupIncremental',
'xtrabackup': 'backup.drivers.xtrabackup.XtraBackup',
'xtrabackup_inc': 'backup.drivers.xtrabackup.XtraBackupIncremental'
}
class TestMariaBackup(unittest.TestCase):
def setUp(self):
self.runner_cls = importutils.import_class(
driver_mapping['mariabackup'])
self.params = {}
# assertions
self.assertIsNotNone(self.runner_cls)
def tearDown(self):
pass
def test_instance(self):
'''Check instance'''
# call the method
runner = self.runner_cls(**self.params)
# assertions
self.assertIsNotNone(runner)
def test_cmd(self):
'''Check cmd property'''
# call the method
runner = self.runner_cls(**self.params)
# assertions
cmd = ("mariabackup --backup --stream=xbstream {}".format(
runner.user_and_pass))
self.assertEqual(runner.cmd, cmd)
def test_check_restore_process(self):
'''Check manifest'''
runner = self.runner_cls(**self.params)
runner.process = MagicMock()
returncode = PropertyMock(return_value=0)
type(runner.process).returncode = returncode
# call the method
self.assertEqual(runner.check_restore_process(), True)
class TestMariaBackupIncremental(unittest.TestCase):
def setUp(self):
self.runner_cls = importutils.import_class(
driver_mapping['mariabackup_inc'])
self.params = {
'lsn': '1234567890',
'incremental_dir': './'
}
self.metadata = {}
def tearDown(self):
pass
def test_cmd(self):
'''Check cmd property'''
# call the method
runner = self.runner_cls(**self.params)
# assertions
cmd = (
'mariabackup --backup --stream=xbstream'
' --incremental-lsn=%(lsn)s ' +
runner.user_and_pass
)
self.assertEqual(runner.cmd, cmd)
def test_get_metadata(self):
# prepare the test
runner = self.runner_cls(**self.params)
runner.get_metadata = MagicMock(return_value=self.metadata)
# call the method
ret = runner.get_metadata()
# assertions
self.assertEqual(ret, self.metadata)
def test_run_restore(self):
# prepare the test
runner = self.runner_cls(**self.params)
length = 10
runner.incremental_restore = MagicMock(return_value=length)
runner.restore_content_length = length
# call the method
ret = runner.run_restore()
# assertions
self.assertEqual(ret, length)
if __name__ == '__main__':
unittest.main()