mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
d4a6e3a698
* Clean up autobake-deb.sh - No need to define any TokuDB rules, there is no such package - No need to define RocksDB arch, it already has "Architecture:" line - No need to dh-systemd backwards compat stanza, neither Debian Jessie nor Ubuntu Xenial has any new MariaDB 10.5 releases anymore - Minor spelling fixes * Ensure dch runs non-interactively so builds pass with new dch version A recent version of dch (available in Ubuntu Hirsute and Debian Bullseye) had a change in behaviour that it started prompting if the DEBEMAIL or EMAIL variable as unset, asking for confirmation. We can't have anything interactive in our build scripts, so prevent this prompt by giving --controlmaint to the command, so it always uses the name and email from the debian/control file and does not prompt anything. The command-line argument has been around for a long time, so it is safe to use on all Debian/Ubuntu builds we have. See https://manpages.debian.org/jessie/devscripts/dch.1.en.html Since MariaDB 10.5 is the oldest release we still release for Ubuntu Hisute and Debian Bullseye, merge this on 10.5 and from there merge up to latest. No need to consider 10.2, 10.3 and 10.4 as those will not be released for Ubuntu Bullseye or Ubuntu Hirsute. * Minor Salsa-CI cleanup - Fix spelling (synced from downstream Debian) * Many minor spelling fixes (synced from downstream Debian)
109 lines
3.4 KiB
Bash
109 lines
3.4 KiB
Bash
#!/bin/sh
|
|
# dep8 smoke test for mysql-server
|
|
# Author: Robie Basak <robie.basak at canonical.com>
|
|
#
|
|
# This test should be declared in debian/tests/control with a dependency
|
|
# on the package that provides a configured MariaDB server (eg.
|
|
# mariadb-server-10.5).
|
|
#
|
|
# This test should be declared in debian/tests/control with the
|
|
# following restrictions:
|
|
#
|
|
# needs-root (to be able to log into the database)
|
|
# allow-stderr
|
|
#
|
|
# This test:
|
|
#
|
|
# 1) Creates a test database and test user as the root user.
|
|
#
|
|
# 2) Creates a test table and checks it appears to operate normally
|
|
# using the test user and test database.
|
|
#
|
|
# 3) Checks compression support for InnoDB & RocksDB engine.
|
|
|
|
echo "Running test 'smoke'"
|
|
set -ex
|
|
|
|
# Start the daemon if it was not running. For example in Docker testing
|
|
# environments there might not be any systemd et al and the service needs to
|
|
# be started manually.
|
|
if ! which systemctl
|
|
then
|
|
if ! /etc/init.d/mariadb status
|
|
then
|
|
echo "Did not find systemctl and daemon was not running, starting it.."
|
|
/etc/init.d/mariadb start
|
|
fi
|
|
else
|
|
# If systemd (and systemctl) is available, but the service did not start, then
|
|
# this smoke test is supposed to fail if next commands don't work.
|
|
echo "Found systemctl, continuing smoke test.."
|
|
fi
|
|
|
|
mysql <<EOT
|
|
CREATE DATABASE testdatabase;
|
|
CREATE USER 'testuser'@'localhost' identified by 'testpassword';
|
|
GRANT ALL ON testdatabase.* TO 'testuser'@'localhost';
|
|
EOT
|
|
|
|
mysql testdatabase <<EOT
|
|
CREATE TABLE foo (bar INTEGER);
|
|
INSERT INTO foo (bar) VALUES (41);
|
|
EOT
|
|
|
|
result=$(echo 'SELECT bar+1 FROM foo;'|mysql --batch --skip-column-names --user=testuser --password=testpassword testdatabase)
|
|
if [ "$result" != "42" ]; then
|
|
echo "Unexpected result" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mysql --user=testuser --password=testpassword testdatabase <<EOT
|
|
DROP TABLE foo;
|
|
EOT
|
|
|
|
mysql <<EOT
|
|
DROP DATABASE testdatabase;
|
|
DROP USER 'testuser'@'localhost';
|
|
EOT
|
|
|
|
# List based on what is advertised at
|
|
# https://mariadb.com/kb/en/innodb-page-compression/#configuring-the-innodb-page-compression-algorithm
|
|
# but disabled with '#' the options that are not available in this binary build
|
|
mariadb <<EOT
|
|
SET GLOBAL innodb_compression_algorithm=lz4;
|
|
#SET GLOBAL innodb_compression_algorithm=lzo;
|
|
#SET GLOBAL innodb_compression_algorithm=lzma;
|
|
#SET GLOBAL innodb_compression_algorithm=bzip2;
|
|
#SET GLOBAL innodb_compression_algorithm=snappy;
|
|
SET GLOBAL innodb_compression_algorithm=zlib;
|
|
SET GLOBAL innodb_compression_algorithm=none;
|
|
EOT
|
|
|
|
# Check whether RocksDB should be installed or not
|
|
plugin=mariadb-plugin-rocksdb
|
|
if [ "$(dpkg-architecture -qDEB_HOST_ARCH_BITS)" != 32 ] &&
|
|
[ "$(dpkg-architecture -qDEB_HOST_ARCH_ENDIAN)" = little ]
|
|
then
|
|
dpkg-query -W $plugin
|
|
|
|
LOG=/var/lib/mysql/#rocksdb/LOG
|
|
# XXX: The server may only be started during the install of
|
|
# mariadb-server-10.5, which happens before that of the plugin.
|
|
[ -e $LOG ] || mysql -e "INSTALL PLUGIN RocksDB SONAME 'ha_rocksdb';"
|
|
# XXX: rocksdb_supported_compression_types variable does not report ZSTD.
|
|
|
|
# Print RocksDB supported items so test log is easier to debug
|
|
grep -F " supported:" $LOG
|
|
|
|
# Check that the expected compression methods are supported
|
|
for a in LZ4 Snappy Zlib ZSTD; do
|
|
if ! grep -qE "k$a(Compression)? supported: 1" $LOG
|
|
then
|
|
# Fail with explicit error message
|
|
echo "Error: Compression method $a not supported by RocksDB!" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
else
|
|
! dpkg-query -W $plugin
|
|
fi
|