#!/bin/bash # Script used in CI environment (Continuous Integration - eg Jenkins) to run Maestro end to end tests (see # .maestro for test flows ROOTDIR=$(realpath $(dirname $BASH_SOURCE)) # Root directory for TestServerController to use (each server will get its own sub directory) # TestServerController will create the directory automatically. TESTSERVERCONTROLLER_BASEDIR="$ROOTDIR/build/testservercontroller/workspace" TESTSERVERCONTROLLER_DOWNLOAD_URL="https://devserver3.ustadmobile.com/jenkins/job/TestServerController/9/artifact/build/distributions/testservercontroller-0.0.8.zip" TESTSERVERCONTROLLER_BASENAME="testservercontroller-0.0.8" echo "ROOTDIR=$ROOTDIR BASH_SOURCE=$BASH_SOURCE" if [ ! -e $ROOTDIR/build/testservercontroller/$TESTSERVERCONTROLLER_BASENAME ]; then if [ ! -e $ROOTDIR/build/testservercontroller ]; then mkdir -p $ROOTDIR/build/testservercontroller fi wget --output-document=$ROOTDIR/build/testservercontroller/$TESTSERVERCONTROLLER_BASENAME.zip $TESTSERVERCONTROLLER_DOWNLOAD_URL unzip -d $ROOTDIR/build/testservercontroller/ \ $ROOTDIR/build/testservercontroller/$TESTSERVERCONTROLLER_BASENAME.zip fi TESTCONTROLLER_BIN=$ROOTDIR/build/testservercontroller/$TESTSERVERCONTROLLER_BASENAME/bin/testservercontroller if [ "$TESTCONTROLLER_PORT" == "" ]; then TESTCONTROLLER_PORT=8094 fi if [ "$TESTCONTROLLER_URL" == "" ]; then if [ "$URL_SUBSTITUTION" != "" ]; then echo "ci-run-maestro: no TESTCONTROLLER_URL set: using hostname - this might not be correct" TESTCONTROLLER_URL=$(echo $URL_SUBSTITUTION | sed s/_PORT_/$TESTCONTROLLER_PORT/g) else TESTCONTROLLER_URL="http://$(hostname -I | xargs):$TESTCONTROLLER_PORT/" fi fi echo "ci-run-maestro: TESTCONTROLLER_URL is $TESTCONTROLLER_URL" if [ "$TEST_LEARNINGSPACE_PORTRANGE" == "" ]; then TEST_LEARNINGSPACE_PORTRANGE="8000-9000" fi function cleanup() { if [ "$TESTCONTROLLER_PID" != "" ]; then echo "ci-run-maestro: note 'No instance for key AttributeKey: KOIN_SCOPE' can be safely ignored" echo "ci-run-maestro: Stopping TestServerController" wget -qO- "${TESTCONTROLLER_URL}shutdown" sleep 10 if [ -d "/proc/$PID" ]; then echo "ci-run-maestro: calling kill just in case (no such process error can be ignored)" kill $TESTCONTROLLER_PID fi fi } trap cleanup EXIT DIR_ADMIN_AUTH_PASS=$(tr -dc A-Za-z0-9