component/mariadb: add a test for MariaDB itself.
Showing
component/mariadb/test.cfg
0 → 100644
############################################################################## | |||
# | |||
# Copyright (c) 2024 Nexedi SA and Contributors. All Rights Reserved. | |||
# | |||
# WARNING: This program as such is intended to be used by professional | |||
# programmers who take the whole responsibility of assessing all potential | |||
# consequences resulting from its eventual inadequacies and bugs | |||
# End users who are looking for a ready-to-use solution with commercial | |||
# guarantees and support are strongly adviced to contract a Free Software | |||
# Service Company | |||
# | |||
# This program is free software: you can redistribute it and/or | |||
# modify it under the terms of the GNU General Public License | |||
# as published by the Free Software Foundation, either version 3 | |||
# of the License, or (at your option) any later version. | |||
# | |||
# This program is distributed in the hope that it will be useful, | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
# GNU General Public License for more details. | |||
# | |||
# You should have received a copy of the GNU General Public License | |||
# along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
# | |||
############################################################################## | |||
import hashlib | |||
import os | |||
import shutil | |||
import subprocess | |||
import tempfile | |||
from slapos.testing.testcase import installSoftwareUrlList, makeModuleSetUpAndTestCaseClass | |||
software_release_url = os.path.abspath( | |||
os.path.join(os.path.dirname(__file__), '..', 'test.cfg')) | |||
_, InstanceTestCase = makeModuleSetUpAndTestCaseClass( | |||
os.path.abspath(software_release_url)) | |||
def setUpModule(): | |||
installSoftwareUrlList( | |||
InstanceTestCase, | |||
[software_release_url], | |||
debug=bool(int(os.environ.get('SLAPOS_TEST_DEBUG', 0))), | |||
) | |||
class TestMariaDB(InstanceTestCase): | |||
@classmethod | |||
def setUpClass(cls): | |||
# We generate no instance | |||
|
|||
pass | |||
def test(self): | |||
mariadb_path = os.path.join( | |||
self.slap.software_directory, | |||
hashlib.md5(self.getSoftwareURL().encode()).hexdigest(), | |||
'parts', | |||
'mariadb', | |||
) | |||
with tempfile.TemporaryDirectory() as tmp_dir: | |||
shutil.copytree( | |||
mariadb_path, | |||
tmp_dir, | |||
symlinks=True, | |||
dirs_exist_ok=True, | |||
) | |||
test_dir = os.path.join(tmp_dir, 'mariadb-test') | |||
if not os.path.isdir(test_dir): # BBB MariaDB < 11 | |||
test_dir = os.path.join(tmp_dir, 'mysql-test') | |||
os.chdir(test_dir) | |||
skip_test_list = [ | |||
'spider', # fail if 'failed to retrieve the MAC address'. | |||
'mysqld--help-aria', # fail if 'failed to retrieve the MAC address'. | |||
'mysqldump-header', # fail with our -DDEFAULT_CHARSET=utf8 build. | |||
'ssl_autoverify', # fail without Net/SSLeay.pm. | |||
] | |||
result = subprocess.run( | |||
['./mtr', '--parallel=10', '--force', '--max-test-fail=40', '--mem', | |||
'--skip-test=(%s)' % ('|'.join(skip_test_list))], | |||
capture_output=True, | |||
) | |||
self.assertEqual(result.returncode, 0, result.stdout) |