59e6d1228e
The pg_dump command is picky about client/server versions, so to make it easier for developers to run tests locally using the pgsql container, provida an option to use pg_dump from the container instead of whatever version is installed locally, which may not match. Change-Id: I9add7af40b8f8d92a88d983eacbc59a01f0e7b9f
70 lines
2.0 KiB
Bash
Executable File
70 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This runs ZooKeeper and databases in docker containers, which are
|
|
# required for tests.
|
|
|
|
# This setup needs to be run as a user that can run docker or podman, or by
|
|
# setting $ROOTCMD to a user substitution tool like "sudo" in the calling
|
|
# environment.
|
|
|
|
set -xeu
|
|
|
|
# Default ROOTCMD to the 'env' command, otherwise variable assignments will be
|
|
# interpreted as command when no ROOTCMD is given. The reason for that is
|
|
# Bash's simple command expansion.
|
|
ROOTCMD=${ROOTCMD:-env}
|
|
|
|
cd $(dirname $0)
|
|
SCRIPT_DIR="$(pwd)"
|
|
|
|
# Select docker or podman
|
|
if command -v docker > /dev/null; then
|
|
DOCKER=docker
|
|
elif command -v podman > /dev/null; then
|
|
DOCKER=podman
|
|
else
|
|
echo "Please install docker or podman."
|
|
exit 1
|
|
fi
|
|
|
|
# Select docker-compose or podman-compose
|
|
if command -v docker-compose > /dev/null; then
|
|
COMPOSE=docker-compose
|
|
elif command -v podman-compose > /dev/null; then
|
|
COMPOSE=podman-compose
|
|
else
|
|
echo "Please install docker-compose or podman-compose."
|
|
exit 1
|
|
fi
|
|
|
|
|
|
MYSQL="${DOCKER} exec zuul-test-mysql mysql -u root -pinsecure_worker"
|
|
|
|
if [ "${COMPOSE}" == "docker-compose" ]; then
|
|
${ROOTCMD} docker-compose rm -sf
|
|
else
|
|
${ROOTCMD} podman-compose down
|
|
fi
|
|
|
|
CA_DIR=$SCRIPT_DIR/ca
|
|
|
|
mkdir -p $CA_DIR
|
|
$SCRIPT_DIR/zk-ca.sh $CA_DIR zuul-test-zookeeper
|
|
|
|
${ROOTCMD} USER_ID=$(id -u) ${COMPOSE} up -d
|
|
|
|
echo "Waiting for mysql"
|
|
timeout 30 bash -c "until ${ROOTCMD} ${MYSQL} -e 'show databases'; do sleep 0.5; done"
|
|
echo
|
|
|
|
echo "Setting up permissions for zuul tests"
|
|
${ROOTCMD} ${MYSQL} -e "CREATE USER 'openstack_citest'@'%' identified by 'openstack_citest';"
|
|
${ROOTCMD} ${MYSQL} -e "GRANT ALL PRIVILEGES ON *.* TO 'openstack_citest'@'%' WITH GRANT OPTION;"
|
|
${ROOTCMD} ${MYSQL} -u openstack_citest -popenstack_citest -e "SET default_storage_engine=MYISAM; DROP DATABASE IF EXISTS openstack_citest; CREATE DATABASE openstack_citest CHARACTER SET utf8;"
|
|
|
|
set +x
|
|
echo "Finished"
|
|
|
|
echo "Set this variable to use the in-container pg_dump command:"
|
|
echo 'export ZUUL_TEST_PG_DUMP="docker exec -t zuul-test-postgres pg_dump"'
|