diff --git a/build.sh b/build.sh index b59e4ed..eb1b7dc 100755 --- a/build.sh +++ b/build.sh @@ -30,7 +30,7 @@ echo "" echo "(for simple demo)" echo "" echo "$ cd" $(normalize_path `pwd`/../demo/simple) -echo "$ docker-compose up --build" +echo "$ docker-compose up" echo "" echo "(for complex demo)" echo "" diff --git a/container_files/supervisor/supervisord.conf b/container_files/supervisor/supervisord.conf index d0d91e2..8619f53 100644 --- a/container_files/supervisor/supervisord.conf +++ b/container_files/supervisor/supervisord.conf @@ -16,10 +16,10 @@ command=/bin/bash -c "/usr/local/bin/start-midpoint.sh" stdout_logfile=/dev/fd/2 stdout_logfile_maxbytes=0 redirect_stderr=true +autorestart=false [program:crond] command=/usr/sbin/crond -n -i -m off stdout_logfile=/tmp/logcrond stdout_logfile_maxbytes=0 redirect_stderr=true -autorestart=false diff --git a/demo/simple/tests/main.bats b/demo/simple/tests/main.bats index 9b07272..16e6ca5 100755 --- a/demo/simple/tests/main.bats +++ b/demo/simple/tests/main.bats @@ -50,6 +50,19 @@ load ../../../library search_and_check_object users test300 } +@test "350 Test DB schema version check" { + echo "Removing version information from m_global_metadata" + docker exec simple_midpoint-data_1 mysql -p123321 registry -e "delete from m_global_metadata" + + echo "Bringing the containers down" + docker-compose down + + echo "Re-creating the containers" + docker-compose up -d + + wait_for_log_message simple_midpoint-server_1 "com.evolveum.midpoint.util.exception.SystemException: Existing database schema version could not be determined" +} + @test "999 Clean up" { docker-compose down -v } diff --git a/library.bash b/library.bash index 01d60ad..9aea37a 100644 --- a/library.bash +++ b/library.bash @@ -4,34 +4,46 @@ # Contains common functions usable for midPoint system tests # -# Waits until midPoint starts -function wait_for_midpoint_start () { +# do not use from outside (ugly signature) +function generic_wait_for_log () { CONTAINER_NAME=$1 - DATABASE_CONTAINER_NAME=$2 + MESSAGE="$2" + WAITING_FOR="$3" + FAILURE="$4" + ADDITIONAL_CONTAINER_NAME=$5 ATTEMPT=0 MAX_ATTEMPTS=20 DELAY=10 until [[ $ATTEMPT = $MAX_ATTEMPTS ]]; do ATTEMPT=$((ATTEMPT+1)) - echo "Waiting $DELAY seconds for midPoint to start (attempt $ATTEMPT) ..." + echo "Waiting $DELAY seconds for $WAITING_FOR (attempt $ATTEMPT) ..." sleep $DELAY docker ps - ( docker logs $CONTAINER_NAME 2>&1 | grep "INFO (com.evolveum.midpoint.web.boot.MidPointSpringApplication): Started MidPointSpringApplication in" ) && return 0 + ( docker logs $CONTAINER_NAME 2>&1 | grep "$MESSAGE" ) && return 0 done - echo midPoint did not start in $(( $MAX_ATTEMPTS * $DELAY )) seconds in $CONTAINER_NAME + echo "$FAILURE" in $(( $MAX_ATTEMPTS * $DELAY )) seconds in $CONTAINER_NAME echo "========== Container log ==========" docker logs $CONTAINER_NAME 2>&1 echo "========== End of the container log ==========" - if [ -n "$DATABASE_CONTAINER_NAME" ]; then - echo "========== Container log ($DATABASE_CONTAINER_NAME) ==========" - docker logs $DATABASE_CONTAINER_NAME 2>&1 + if [ -n "ADDITIONAL_CONTAINER_NAME" ]; then + echo "========== Container log ($ADDITIONAL_CONTAINER_NAME) ==========" + docker logs $ADDITIONAL_CONTAINER_NAME 2>&1 echo "========== End of the container log ($DATABASE_CONTAINER_NAME) ==========" fi return 1 } +function wait_for_log_message () { + generic_wait_for_log $1 "$2" "log message" "log message has not appeared" +} + +# Waits until midPoint starts +function wait_for_midpoint_start () { + generic_wait_for_log $1 "INFO (com.evolveum.midpoint.web.boot.MidPointSpringApplication): Started MidPointSpringApplication in" "midPoint to start" "midPoint did not start" $2 +} + # Checks the health of midPoint server function check_health () { echo Checking health...