cd2c06f2a7
Before every seafile integration test we run Seafile server in docker environment. We don't have to sleep for 60 seconds to have everything ready before running integration test. We can assume everything is ready when Seafile webserver returns status code 200. Seafile Dockerfile (https://github.com/haiwen/seafile-docker/blob/master/image/seafile/Dockerfile) runs scripts/start.py where is defined that before init_seafile_server() we always wait for mysql wait_for_mysql() (https://github.com/haiwen/seafile-docker/blob/master/scripts/start.py)
72 lines
2.2 KiB
Bash
Executable file
72 lines
2.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# environment variables passed on docker-compose
|
|
export NAME=seafile7
|
|
export MYSQL_ROOT_PASSWORD=pixenij4zacoguq0kopamid6
|
|
export SEAFILE_ADMIN_EMAIL=seafile@rclone.org
|
|
export SEAFILE_ADMIN_PASSWORD=pixenij4zacoguq0kopamid6
|
|
export SEAFILE_IP=127.0.0.1
|
|
export SEAFILE_PORT=8087
|
|
export SEAFILE_TEST_DATA=${SEAFILE_TEST_DATA:-/tmp/seafile-test-data}
|
|
export SEAFILE_VERSION=latest
|
|
|
|
# make sure the data directory exists
|
|
mkdir -p ${SEAFILE_TEST_DATA}/${NAME}
|
|
|
|
# docker-compose project directory
|
|
COMPOSE_DIR=$(dirname "$0")/seafile
|
|
|
|
start() {
|
|
docker-compose --project-directory ${COMPOSE_DIR} --project-name ${NAME} --file ${COMPOSE_DIR}/docker-compose.yml up -d
|
|
|
|
# wait for Seafile server to start
|
|
seafile_endpoint="http://${SEAFILE_IP}:${SEAFILE_PORT}/"
|
|
wait_seconds=1
|
|
echo -n "Waiting for Seafile server to start"
|
|
for iterations in `seq 1 60`;
|
|
do
|
|
http_code=$(curl -s -o /dev/null -L -w '%{http_code}' "$seafile_endpoint" || true;)
|
|
if [ "$http_code" -eq 200 ]; then
|
|
echo
|
|
break
|
|
fi
|
|
echo -n "."
|
|
sleep $wait_seconds
|
|
done
|
|
|
|
# authentication token answer should be like: {"token":"dbf58423f1632b5b679a13b0929f1d0751d9250c"}
|
|
TOKEN=`curl --silent \
|
|
--data-urlencode username=${SEAFILE_ADMIN_EMAIL} -d password=${SEAFILE_ADMIN_PASSWORD} \
|
|
http://${SEAFILE_IP}:${SEAFILE_PORT}/api2/auth-token/ \
|
|
| sed 's/^{"token":"\(.*\)"}$/\1/'`
|
|
|
|
# create default library
|
|
curl -X POST -H "Authorization: Token ${TOKEN}" "http://${SEAFILE_IP}:${SEAFILE_PORT}/api2/default-repo/"
|
|
|
|
echo _connect=${SEAFILE_IP}:${SEAFILE_PORT}
|
|
echo type=seafile
|
|
echo url=http://${SEAFILE_IP}:${SEAFILE_PORT}/
|
|
echo user=${SEAFILE_ADMIN_EMAIL}
|
|
echo pass=$(rclone obscure ${SEAFILE_ADMIN_PASSWORD})
|
|
echo library=My Library
|
|
}
|
|
|
|
stop() {
|
|
if status ; then
|
|
docker-compose --project-directory ${COMPOSE_DIR} --project-name ${NAME} --file ${COMPOSE_DIR}/docker-compose.yml down
|
|
fi
|
|
}
|
|
|
|
status() {
|
|
if docker ps --format "{{.Names}}" | grep ^${NAME}_seafile_1$ >/dev/null ; then
|
|
echo "$NAME running"
|
|
else
|
|
echo "$NAME not running"
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
. $(dirname "$0")/run.bash
|