#!/bin/sh

set -e

[ -z "$AUTOPKGTEST_TMP" ] || cd $TDIR

rm -rf ${MYSQL_DIR}
mkdir -p ${MYSQL_DIR}

# redirect STDERR to STDIN, autopkgtest fails otherwise

if mysql --version | grep -q MariaDB; then
	mysql_install_db --no-defaults --datadir=${MYSQL_DIR} --force --skip-name-resolve --explicit_defaults_for_timestamp 2>&1
else
	/usr/sbin/mysqld --no-defaults --initialize-insecure --datadir=${MYSQL_DIR} --explicit_defaults_for_timestamp --user=${MYSQL_USER} 2>&1
fi

/usr/sbin/mysqld --no-defaults --user=${MYSQL_USER} --socket=${MYSQL_UNIX_PORT} --datadir=${MYSQL_DIR} --pid-file=${MYSQL_PIDFILE} --explicit_defaults_for_timestamp --skip-networking 2>&1 &

attempts=0
while ! /usr/bin/mysqladmin --user=${MYSQL_USER} --socket=${MYSQL_UNIX_PORT} ping 2>&1 ; do
	sleep 3
	attempts=$((attempts+1))
	if [ ${attempts} -gt 10 ] ; then
		echo "skipping test, mariadb/mysql server could not be contacted after 30 seconds"
		exit 1
	fi
done

mysql --user=${MYSQL_USER} --socket=${MYSQL_UNIX_PORT} --execute "CREATE USER '${DBD_MARIADB_TESTUSER}'@'localhost' IDENTIFIED BY '${DBD_MARIADB_TESTPASSWORD}';" 2>&1
mysql --user=${MYSQL_USER} --socket=${MYSQL_UNIX_PORT} --execute "CREATE DATABASE IF NOT EXISTS ${DBD_MARIADB_TESTDB} CHARACTER SET='utf8mb4';" 2>&1
mysql --user=${MYSQL_USER} --socket=${MYSQL_UNIX_PORT} --execute "GRANT ALL PRIVILEGES ON ${DBD_MARIADB_TESTDB}.* TO '${DBD_MARIADB_TESTUSER}'@'localhost';" 2>&1
mysql_version=`mysql --user=${MYSQL_USER} --socket=${MYSQL_UNIX_PORT} -NBe 'SELECT @@version;'`
if ! echo "$mysql_version" | grep -q MariaDB; then
	# On MySQL >= 8.0.14 setting auto_increment_offset is a privileged
	# operation and requires SESSION_VARIABLES_ADMIN globally. Some tests
	# require this operation. This is not privileged on MariaDB and so it
	# presumably doesn't understand SESSION_VARIABLES_ADMIN either.
	if dpkg --compare-versions "$mysql_version" ge 8.0.14; then
		mysql --user=${MYSQL_USER} --socket=${MYSQL_UNIX_PORT} --execute "GRANT SESSION_VARIABLES_ADMIN ON *.* TO '${DBD_MARIADB_TESTUSER}'@'localhost';" 2>&1
	fi
fi

if ! /usr/bin/mysqladmin --user=${DBD_MARIADB_TESTUSER} --password=${DBD_MARIADB_TESTPASSWORD} --socket=${DBD_MARIADB_TESTSOCKET} ping 2>&1; then
	echo "skipping test, cannot connect to server with test user"
	exit 1
fi

if [ ! -f t/MariaDB.mtest ]; then
    perl Makefile.PL
fi
