mariadb/debian/tests/smoke
Otto Kekäläinen d4a6e3a698 Deb: Misc cleanup and autobake-deb.sh and Salsa-CI fixes
* 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)
2021-06-05 19:25:16 -07:00

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