Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…ontainer into bats
  • Loading branch information
skublik committed Oct 1, 2018
2 parents 3fe1f67 + 2d8dee2 commit 5ec9246
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 82 deletions.
2 changes: 2 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ ENV REPO_DATABASE midpoint
ENV REPO_JDBC_URL default
ENV REPO_PASSWORD_FILE /run/secrets/m_database_password.txt
ENV REPO_DATABASE_TYPE mariadb
ENV REPO_MISSING_SCHEMA_ACTION create
ENV REPO_UPGRADEABLE_SCHEMA_ACTION stop

# Logging parameters

Expand Down
13 changes: 5 additions & 8 deletions container_files/usr-local-bin/start-midpoint.sh
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
#!/bin/bash

if [ "$AUTHENTICATION" = "shibboleth" ]; then
LOGOUT_URL_DIRECTIVE="-Dauth.logout.url=$LOGOUT_URL"
else
LOGOUT_URL_DIRECTIVE=
fi

java -Xmx$MEM -Xms2048m -Dfile.encoding=UTF8 \
-Dmidpoint.home=$MP_DIR/var \
-Dmidpoint.repository.database=$REPO_DATABASE_TYPE \
-Dmidpoint.repository.jdbcUsername=$REPO_USER \
-Dmidpoint.repository.jdbcPassword_FILE=$REPO_PASSWORD_FILE \
-Dmidpoint.repository.jdbcUrl="`$MP_DIR/repository-url`" \
-Dmidpoint.repository.hibernateHbm2ddl=none \
-Dmidpoint.repository.missingSchemaAction=create \
-Dmidpoint.repository.missingSchemaAction=$REPO_MISSING_SCHEMA_ACTION \
-Dmidpoint.repository.upgradeableSchemaAction=$REPO_UPGRADEABLE_SCHEMA_ACTION \
$(if [ -n "$REPO_SCHEMA_VERSION_IF_MISSING" ]; then echo "-Dmidpoint.repository.schemaVersionIfMissing=$REPO_SCHEMA_VERSION_IF_MISSING"; fi) \
$(if [ -n "$REPO_SCHEMA_VARIANT" ]; then echo "-Dmidpoint.repository.schemaVariant=$REPO_SCHEMA_VARIANT"; fi) \
-Dmidpoint.repository.initializationFailTimeout=60000 \
-Dmidpoint.keystore.keyStorePassword_FILE=$KEYSTORE_PASSWORD_FILE \
-Dmidpoint.logging.alt.enabled=true \
-Dmidpoint.logging.alt.filename=/tmp/logmidpoint \
-Dmidpoint.logging.alt.timezone=UTC \
-Dspring.profiles.active="`$MP_DIR/active-spring-profiles`" \
-Dauth.sso.header=$SSO_HEADER \
$LOGOUT_URL_DIRECTIVE \
$(if [ "$AUTHENTICATION" = "shibboleth" ]; then echo "-Dauth.logout.url=$LOGOUT_URL"; fi) \
-Dserver.tomcat.ajp.enabled=$AJP_ENABLED \
-Dserver.tomcat.ajp.port=$AJP_PORT \
-Dlogging.path=/tmp/logtomcat \
Expand Down
2 changes: 2 additions & 0 deletions demo/complex/.env
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ REPO_HOST=midpoint-data
REPO_PORT=default
REPO_DATABASE=registry
REPO_USER=registry_user
REPO_MISSING_SCHEMA_ACTION=create
REPO_UPGRADEABLE_SCHEMA_ACTION=stop
REPO_PASSWORD_FILE=/run/secrets/m_database_password.txt
KEYSTORE_PASSWORD_FILE=/run/secrets/m_keystore_password.txt
MEM=2048m
Expand Down
73 changes: 4 additions & 69 deletions demo/complex/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,75 +84,6 @@ services:
source: ./configs-and-secrets/grouper/httpd/host-cert.pem
target: /etc/pki/tls/certs/cachain.pem


# grouper-ws:
# build: ./grouper-ws/
# command: bash -c "while ! curl -s grouper-data:3306 > /dev/null; do echo waiting for mysql on grouper-data to start; sleep 3; done; while ! curl -s ldap://directory:389 > /dev/null; do echo waiting for ldap on directory to start; sleep 3; done; exec ws"
# depends_on:
# - grouper-data
# - directory
# environment:
# - ENV=dev
# - GROUPER_DATABASE_PASSWORD_FILE=/run/secrets/g_database_password.txt
# - SUBJECT_SOURCE_LDAP_PASSWORD=password
# - USERTOKEN=build-2
# networks:
# - back
# ports:
# - "8443:443"
# secrets:
# - g_database_password.txt
# - source: grouper.hibernate.properties
# target: grouper_grouper.hibernate.properties
# - source: grouper-loader.properties
# target: grouper_grouper-loader.properties
# - source: subject.properties
# target: grouper_subject.properties
# - source: sp-key.pem
# target: shib_sp-key.pem
# - source: host-key.pem
# volumes:
# - type: bind
# source: ./configs-and-secrets/grouper/grouper.properties
# target: /opt/grouper/conf/grouper.properties
# - type: bind
# source: ./configs-and-secrets/grouper/grouper.client.properties
# target: /opt/grouper/conf/grouper.client.properties
# - type: bind
# source: ./configs-and-secrets/httpd/host-cert.pem
# target: /etc/pki/tls/certs/host-cert.pem
# - type: bind
# source: ./configs-and-secrets/httpd/host-cert.pem
# target: /etc/pki/tls/certs/cachain.pem
#
# gsh:
# build: ./gsh/
# depends_on:
# - grouper-data
# - directory
# environment:
# - ENV=dev
# - GROUPER_DATABASE_PASSWORD_FILE=/run/secrets/g_database_password.txt
# - SUBJECT_SOURCE_LDAP_PASSWORD=password
# - USERTOKEN=build-2
# networks:
# - back
# secrets:
# - g_database_password.txt
# - source: grouper.hibernate.properties
# target: grouper_grouper.hibernate.properties
# - source: grouper-loader.properties
# target: grouper_grouper-loader.properties
# - source: subject.properties
# target: grouper_subject.properties
# volumes:
# - type: bind
# source: ./configs-and-secrets/grouper/grouper.properties
# target: /opt/grouper/conf/grouper.properties
# - type: bind
# source: ./configs-and-secrets/grouper/grouper.client.properties
# target: /opt/grouper/conf/grouper.client.properties

grouper-data:
build: ./grouper-data/
networks:
Expand Down Expand Up @@ -215,6 +146,10 @@ services:
- REPO_DATABASE
- REPO_USER
- REPO_PASSWORD_FILE
- REPO_MISSING_SCHEMA_ACTION
- REPO_UPGRADEABLE_SCHEMA_ACTION
- REPO_SCHEMA_VERSION_IF_MISSING
- REPO_SCHEMA_VARIANT
- KEYSTORE_PASSWORD_FILE
- MEM
- SSO_HEADER
Expand Down
1 change: 1 addition & 0 deletions demo/simple/.env
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ REPO_HOST=midpoint-data
REPO_PORT=default
REPO_DATABASE=registry
REPO_USER=registry_user
REPO_MISSING_SCHEMA_ACTION=create
MEM=2048m
4 changes: 4 additions & 0 deletions demo/simple/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ services:
- REPO_PORT
- REPO_DATABASE
- REPO_USER
- REPO_MISSING_SCHEMA_ACTION
- REPO_UPGRADEABLE_SCHEMA_ACTION
- REPO_SCHEMA_VERSION_IF_MISSING
- REPO_SCHEMA_VARIANT
- MEM
- TIER_BEACON_OPT_OUT
networks:
Expand Down
25 changes: 23 additions & 2 deletions demo/simple/tests/main.bats
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,36 @@ load ../../../library

@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"
docker exec simple_midpoint-data_1 mysql -p123321 registry -e "drop table 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"
wait_for_log_message simple_midpoint-server_1 "Database schema is not compatible with the executing code; however, an upgrade path is available."
}

@test "360 Test DB schema upgrade" {
echo "Stopping midpoint-server container"
docker stop simple_midpoint-server_1

echo "Installing empty 3.8 repository"
docker exec simple_midpoint-data_1 mysql -p123321 -e "DROP DATABASE registry"
docker exec simple_midpoint-data_1 bash -c " curl https://raw.githubusercontent.com/Evolveum/midpoint/v3.8/config/sql/_all/mysql-3.8-all-utf8mb4.sql > /tmp/create-3.8-utf8mb4.sql"
docker exec simple_midpoint-data_1 mysql -p123321 -e "CREATE DATABASE IF NOT EXISTS registry;"
docker exec simple_midpoint-data_1 mysql -p123321 -e "GRANT ALL ON registry.* TO 'registry_user'@'%' IDENTIFIED BY 'WJzesbe3poNZ91qIbmR7' ;"
docker exec simple_midpoint-data_1 bash -c "mysql -p123321 registry < /tmp/create-3.8-utf8mb4.sql"

echo "Bringing the containers down"
docker-compose down

echo "Re-creating the containers"
env REPO_SCHEMA_VERSION_IF_MISSING=3.8 REPO_UPGRADEABLE_SCHEMA_ACTION=upgrade REPO_SCHEMA_VARIANT=utf8mb4 docker-compose up -d

wait_for_log_message simple_midpoint-server_1 "Schema was successfully upgraded from 3.8 to 3.9 using script 'mysql-upgrade-3.8-3.9-utf8mb4.sql'"
wait_for_midpoint_start simple_midpoint-server_1
}

@test "999 Clean up" {
Expand Down
24 changes: 21 additions & 3 deletions library.bash
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ function wait_for_shibboleth_idp_start () {
return 1
}


# Checks the health of midPoint server
function check_health () {
echo Checking health...
Expand Down Expand Up @@ -98,6 +97,15 @@ function check_health_shibboleth_idp () {
}


function get_object () {
local TYPE=$1
local OID=$2
TMPFILE=$(mktemp /tmp/get.XXXXXX)
echo tmp file is $TMPFILE
curl -k --user administrator:5ecr3t -H "Content-Type: application/xml" -X GET "https://localhost:8443/midpoint/ws/rest/$TYPE/$OID" >$TMPFILE || (rm $TMPFILE ; return 1)
return 0
}

# Retrieves XML object and checks if the name matches
function get_and_check_object () {
TYPE=$1
Expand Down Expand Up @@ -220,8 +228,18 @@ function test_resource () {

function assert_task_success () {
local OID=$1
# TODO
return 0
get_object tasks $OID
TASK_STATUS=$(xmllint --xpath "/*/*[local-name()='resultStatus']/text()" $TMPFILE) || (echo "Couldn't extract task status from task $OID" ; cat $TMPFILE ; rm $TMPFILE ; return 1)
if [[ $TASK_STATUS = "success" ]]; then
echo "Task $OID status is OK"
rm $TMPFILE
return 0
else
echo "Task $OID status is not OK: $TASK_STATUS"
cat $TMPFILE
rm $TMPFILE
return 1
fi
}

function wait_for_task_completion () {
Expand Down

0 comments on commit 5ec9246

Please sign in to comment.