refstack/setup-mysql-tests.sh
Megan Guiney 1a17a94472 Add line in mysql setup to ensure that sbin is in path
mysqld is installed to sbin by default, so if sbin is not in your
path, the tests will fail to set up properly.

Change-Id: I8ca72822ccf19046d1f5634245e972f184f5675a
2018-07-03 22:15:25 -07:00

49 lines
1.4 KiB
Bash
Executable File

#!/bin/bash -x
wait_for_line () {
while read line
do
echo "$line" | grep -q "$1" && break
done < "$2"
# Read the fifo for ever otherwise process would block
cat "$2" >/dev/null &
}
# insert sbin into path if it exists and isnt already there
echo $PATH | grep -q "/usr/sbin"
if [ $? -ne 0 ] && [ -d "/usr/sbin" ]; then
echo "SBIN NOT IN PATH"
export PATH="$PATH:/usr/sbin"
echo "$PATH"
fi
# If test DB url is provided, run tests with it
if [[ "$REFSTACK_TEST_MYSQL_URL" ]]
then
$*
exit $?
fi
# Else setup mysql base for tests.
# Start MySQL process for tests
MYSQL_DATA=`mktemp -d /tmp/refstack-mysql-XXXXX`
mkfifo ${MYSQL_DATA}/out
# On systems like Fedora here's where mysqld can be found
PATH=$PATH:/usr/libexec
mysqld --no-defaults --datadir=${MYSQL_DATA} --pid-file=${MYSQL_DATA}/mysql.pid --socket=${MYSQL_DATA}/mysql.socket --skip-networking --skip-grant-tables &> ${MYSQL_DATA}/out &
# Wait for MySQL to start listening to connections
wait_for_line "mysqld: ready for connections." ${MYSQL_DATA}/out
export REFSTACK_TEST_MYSQL_URL="mysql+pymysql://root@localhost/test?unix_socket=${MYSQL_DATA}/mysql.socket&charset=utf8"
mysql --no-defaults -S ${MYSQL_DATA}/mysql.socket -e 'set @@global.show_compatibility_56=ON;' > /dev/null 2>&1
mysql --no-defaults -S ${MYSQL_DATA}/mysql.socket -e 'CREATE DATABASE test;'
# Yield execution to venv command
$*
# Cleanup after tests
ret=$?
kill $(jobs -p)
rm -rf "${MYSQL_DATA}"
exit $ret