Commit f9fc82c5 authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki

component/mariadb: add a test for MariaDB itself.

parent f0265670
...@@ -38,6 +38,8 @@ mariadb-client-test = mariadb-client-test ...@@ -38,6 +38,8 @@ mariadb-client-test = mariadb-client-test
pre-configure = pre-configure =
d() { x=$1; shift; [ "`grep -c "$@"`" = $x ]; sed -i "/$1/d" "$2"; } d() { x=$1; shift; [ "`grep -c "$@"`" = $x ]; sed -i "/$1/d" "$2"; }
d 1 '\bSET(PLUGIN_AUTH_PAM YES CACHE BOOL "")' cmake/build_configurations/mysql_release.cmake d 1 '\bSET(PLUGIN_AUTH_PAM YES CACHE BOOL "")' cmake/build_configurations/mysql_release.cmake
${:pre-configure-extra}
pre-configure-extra =
d 5 '^ *\b\(ADD_SUBDIRECTORY(\(mysql-test\|tests\)\|my_safe_process\|${:mariadb-client-test}\)\b' CMakeLists.txt d 5 '^ *\b\(ADD_SUBDIRECTORY(\(mysql-test\|tests\)\|my_safe_process\|${:mariadb-client-test}\)\b' CMakeLists.txt
d 1 '\bINSTALL_MYSQL_TEST\b' cmake/plugin.cmake d 1 '\bINSTALL_MYSQL_TEST\b' cmake/plugin.cmake
configure-command = ${cmake:location}/bin/cmake configure-command = ${cmake:location}/bin/cmake
......
[buildout]
extends =
../../stack/slapos.cfg
buildout.cfg
parts =
mariadb
[mariadb]
shared = false
pre-configure-extra =
##############################################################################
#
# 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/>.
#
##############################################################################
from setuptools import setup, find_packages
version = '0.0.1.dev0'
name = 'slapos.test.mariadb'
long_description = open("README.md").read()
setup(name=name,
version=version,
description="Test for SlapOS' MariaDB",
long_description=long_description,
long_description_content_type='text/markdown',
maintainer="Nexedi",
maintainer_email="info@nexedi.com",
url="https://lab.nexedi.com/nexedi/slapos",
packages=find_packages(),
install_requires=[
'slapos.core',
'slapos.libnetworkcache',
'erp5.util',
],
zip_safe=True,
test_suite='test',
)
##############################################################################
#
# 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
  • With slapos.core!664 (merged) setting request_instance = False on the class should be enough. With this approach, we don't even need custom setUpModule

  • Oh it's not yet available on my Theia instance (1.0.334)... Shall I commit anyway the change ?

  • I think it does not depend on theia version but on the version of slapos-sr-testing you are using.

  • yep, after rebuilding slapos-sr-testing in my theia, it passed. I pushed the change. Thanks !

Please register or sign in to reply
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)
...@@ -87,6 +87,11 @@ setup = ${slapos-repository:location}/software/jstestnode/test/ ...@@ -87,6 +87,11 @@ setup = ${slapos-repository:location}/software/jstestnode/test/
egg = slapos.test.kvm egg = slapos.test.kvm
setup = ${slapos-repository:location}/software/kvm/test/ setup = ${slapos-repository:location}/software/kvm/test/
[slapos.test.mariadb]
<= setup-develop-egg
egg = slapos.test.mariadb
setup = ${slapos-repository:location}/component/mariadb/test/
[slapos.test.monitor-setup] [slapos.test.monitor-setup]
<= setup-develop-egg <= setup-develop-egg
egg = slapos.test.monitor egg = slapos.test.monitor
...@@ -387,6 +392,7 @@ eggs += ...@@ -387,6 +392,7 @@ eggs +=
${slapos.test.jstestnode-setup:egg} ${slapos.test.jstestnode-setup:egg}
${slapos.test.jupyter-setup:egg} ${slapos.test.jupyter-setup:egg}
${slapos.test.kvm-setup:egg} ${slapos.test.kvm-setup:egg}
${slapos.test.mariadb-setup:egg}
${slapos.test.matomo-setup:egg} ${slapos.test.matomo-setup:egg}
${slapos.test.metabase-setup:egg} ${slapos.test.metabase-setup:egg}
${slapos.test.monitor-setup:egg} ${slapos.test.monitor-setup:egg}
...@@ -480,6 +486,7 @@ tests = ...@@ -480,6 +486,7 @@ tests =
jstestnode ${slapos.test.jstestnode-setup:setup} jstestnode ${slapos.test.jstestnode-setup:setup}
jupyter ${slapos.test.jupyter-setup:setup} jupyter ${slapos.test.jupyter-setup:setup}
kvm ${slapos.test.kvm-setup:setup} kvm ${slapos.test.kvm-setup:setup}
mariadb ${slapos.test.mariadb-setup:setup}
matomo ${slapos.test.matomo-setup:setup} matomo ${slapos.test.matomo-setup:setup}
metabase ${slapos.test.metabase-setup:setup} metabase ${slapos.test.metabase-setup:setup}
monitor ${slapos.test.monitor-setup:setup} monitor ${slapos.test.monitor-setup:setup}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment