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) |