mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.3 KiB
111 lines
2.3 KiB
#!/bin/bash |
|
|
|
if [ "$EUID" -ne 0 ] |
|
then echo "Please run as root" |
|
exit |
|
fi |
|
|
|
function usage { |
|
cat << EOF >> /dev/stderr |
|
Usage: sudo ./standup.sh [create|destroy] [postgres|mysql|cockroach] |
|
|
|
This is a script for standing up test databases. It uses systemd to daemonize |
|
rkt containers running on a local loopback IP. |
|
|
|
The general workflow is to create a daemonized container, use the output to set |
|
the test environment variables, run the tests, then destroy the container. |
|
|
|
sudo ./standup.sh create postgres |
|
# Copy environment variables and run tests. |
|
go test -v -i # always install test dependencies |
|
go test -v |
|
sudo ./standup.sh destroy postgres |
|
|
|
EOF |
|
exit 2 |
|
} |
|
|
|
function main { |
|
if [ "$#" -ne 2 ]; then |
|
usage |
|
exit 2 |
|
fi |
|
|
|
case "$1" in |
|
"create") |
|
case "$2" in |
|
"postgres") |
|
create_postgres;; |
|
"mysql") |
|
create_mysql;; |
|
*) |
|
usage |
|
exit 2 |
|
;; |
|
esac |
|
;; |
|
"destroy") |
|
case "$2" in |
|
"postgres") |
|
destroy_postgres;; |
|
"mysql") |
|
destroy_mysql;; |
|
*) |
|
usage |
|
exit 2 |
|
;; |
|
esac |
|
;; |
|
*) |
|
usage |
|
exit 2 |
|
;; |
|
esac |
|
} |
|
|
|
function wait_for_file { |
|
while [ ! -f $1 ]; do |
|
sleep 1 |
|
done |
|
} |
|
|
|
function wait_for_container { |
|
while [ -z "$( rkt list --full | grep $1 | grep running )" ]; do |
|
sleep 1 |
|
done |
|
} |
|
|
|
function create_postgres { |
|
UUID_FILE=/tmp/dex-postgres-uuid |
|
if [ -f $UUID_FILE ]; then |
|
echo "postgres database already exists, try ./standup.sh destroy postgres" |
|
exit 2 |
|
fi |
|
|
|
echo "Starting postgres. To view progress run:" |
|
echo "" |
|
echo " journalctl -fu dex-postgres" |
|
echo "" |
|
systemd-run --unit=dex-postgres \ |
|
rkt run --uuid-file-save=$UUID_FILE --insecure-options=image docker://postgres:9.6 |
|
|
|
wait_for_file $UUID_FILE |
|
|
|
UUID=$( cat $UUID_FILE ) |
|
wait_for_container $UUID |
|
HOST=$( rkt list --full | grep "$UUID" | awk '{ print $NF }' | sed -e 's/default:ip4=//g' ) |
|
echo "To run tests export the following environment variables:" |
|
echo "" |
|
echo " export DEX_POSTGRES_DATABASE=postgres; export DEX_POSTGRES_USER=postgres; export DEX_POSTGRES_PASSWORD=postgres; export DEX_POSTGRES_HOST=$HOST:5432" |
|
echo "" |
|
} |
|
|
|
function destroy_postgres { |
|
UUID_FILE=/tmp/dex-postgres-uuid |
|
systemctl stop dex-postgres |
|
rkt rm --uuid-file=$UUID_FILE |
|
rm $UUID_FILE |
|
} |
|
|
|
|
|
main $@
|
|
|