From cd2c06f2a7f0abb149f5bb6ed0433615b67e8811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Pl=C3=A1nsk=C3=BD?= Date: Sun, 1 Nov 2020 00:33:15 +0100 Subject: [PATCH] testserver: speed up seafile integration test 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) --- fstest/testserver/init.d/TestSeafile | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/fstest/testserver/init.d/TestSeafile b/fstest/testserver/init.d/TestSeafile index 14449e04b..0d1357cd4 100755 --- a/fstest/testserver/init.d/TestSeafile +++ b/fstest/testserver/init.d/TestSeafile @@ -21,8 +21,20 @@ COMPOSE_DIR=$(dirname "$0")/seafile start() { docker-compose --project-directory ${COMPOSE_DIR} --project-name ${NAME} --file ${COMPOSE_DIR}/docker-compose.yml up -d - # it takes some time for the database to be created - sleep 60 + # 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 \