new way to generate database fromseparate schema.sql
This commit is contained in:
		
							
								
								
									
										15
									
								
								test/makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								test/makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
## @id $Id$
 | 
			
		||||
##
 | 
			
		||||
## This file has been added:
 | 
			
		||||
##  - by bootstrap.sh
 | 
			
		||||
##  -  on Sat, 07 November 2015 16:02:44 +0100
 | 
			
		||||
## Feel free to change it or even remove and rebuild it, up to your needs
 | 
			
		||||
##
 | 
			
		||||
##       1         2         3         4         5         6         7         8
 | 
			
		||||
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TESTS =
 | 
			
		||||
 | 
			
		||||
MAINTAINERCLEANFILES = makefile.in
 | 
			
		||||
							
								
								
									
										125
									
								
								test/runtests.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										125
									
								
								test/runtests.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,125 @@
 | 
			
		||||
#!/bin/bash -e
 | 
			
		||||
 | 
			
		||||
#check for a text in a docker volume log
 | 
			
		||||
function check() {
 | 
			
		||||
    if test $(docker inspect -f {{.State.Running}} $1) = "false"; then
 | 
			
		||||
        echo
 | 
			
		||||
        echo "**** ERROR: container $1 not running"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    docker logs $1 2>&1 | grep -q "$2"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# call with volume name
 | 
			
		||||
function wait_for_mysql() {
 | 
			
		||||
    check $1 "mysqld: ready for connections"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# run a countdown and call a check function
 | 
			
		||||
# $1:  expected time in seconds
 | 
			
		||||
# $2-: check function
 | 
			
		||||
function countdown() {
 | 
			
		||||
    set +x
 | 
			
		||||
    expect=$1
 | 
			
		||||
    shift
 | 
			
		||||
    max=$1
 | 
			
		||||
    shift
 | 
			
		||||
    for ((i=0; i<$((expect+max)); ++i)); do
 | 
			
		||||
        echo -en "\rPlease wait: $((expect-i))s    "
 | 
			
		||||
        $* && break || sleep 1
 | 
			
		||||
    done
 | 
			
		||||
    echo -e "\rdone in ${i}s: $*                      "
 | 
			
		||||
    echo
 | 
			
		||||
    set -x
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# should not be called with sudo root
 | 
			
		||||
if test "$(whoami)" = "root"; then
 | 
			
		||||
    echo "**** ERROR: call as non root user"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# option checks
 | 
			
		||||
NEED_XVFB=0
 | 
			
		||||
NEED_DOCKER=0
 | 
			
		||||
NEED_WEBTESTER=0
 | 
			
		||||
while test $# -gt 0; do
 | 
			
		||||
    case "$1" in
 | 
			
		||||
        (--help|-h)
 | 
			
		||||
            echo "$0 [OPTIONS] [PORTS <port>]"
 | 
			
		||||
            echo
 | 
			
		||||
            echo "OPTIONS:"
 | 
			
		||||
            echo
 | 
			
		||||
            exit 0
 | 
			
		||||
            ;;
 | 
			
		||||
        (*) echo "**** ERROR: unknown option '$1', try --help"; exit 1;;
 | 
			
		||||
    esac
 | 
			
		||||
    if test $# -eq 0; then
 | 
			
		||||
        echo "**** ERROR: missing value, try --help"; exit 1;
 | 
			
		||||
    fi
 | 
			
		||||
    shift
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
error=0;
 | 
			
		||||
 | 
			
		||||
# test for xvfb (needed by webtester)
 | 
			
		||||
if test ${NEED_XVFB} -eq 1 -a \! -e "$(which xvfb-run)"; then
 | 
			
		||||
    echo "**** ERROR: XVFB Not Installed"
 | 
			
		||||
    echo "you need to install xvfb"
 | 
			
		||||
    echo "please execute as root:"
 | 
			
		||||
    echo "  apt-get install xvfb"
 | 
			
		||||
    error=1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# test for docker if needed
 | 
			
		||||
if test ${NEED_DOCKER} -eq 1 -a \! -e "$(which docker)"; then
 | 
			
		||||
    echo "**** ERROR: Docker Not Installed"
 | 
			
		||||
    echo "you need to install the latest docker"
 | 
			
		||||
    echo "please execute as root:"
 | 
			
		||||
    echo "  apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 \\"
 | 
			
		||||
    echo "    --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9"
 | 
			
		||||
    echo "  echo 'deb https://get.docker.io/ubuntu docker main' \\"
 | 
			
		||||
    echo "    > /etc/apt/sources.list.d/docker.list"
 | 
			
		||||
    echo "  apt-get update"
 | 
			
		||||
    echo "  apt-get install lxc-docker"
 | 
			
		||||
    echo "  adduser $(whoami) docker"
 | 
			
		||||
    echo "you need to add the following line to /etc/default/docker:"
 | 
			
		||||
    echo '  DOCKER_OPTS="--insecure-registry dev0004:5000"'
 | 
			
		||||
    echo "logout $(whoami) and login again to run $(whoami) with group docker"
 | 
			
		||||
    echo "additionals note:"
 | 
			
		||||
    echo "  if you run docker inside a VM (not recommended), you probably"
 | 
			
		||||
    echo "  need to foollow the instructions in chapter \"Changing Bridge"
 | 
			
		||||
    echo "  Subnetwork\" on https://marc.wäckerlin.ch/computer/docker-overview"
 | 
			
		||||
    echo "introduction to docker, see:"
 | 
			
		||||
    echo "  https://marc.wäckerlin.ch/computer/docker-overview"
 | 
			
		||||
    error=1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# check for webtester
 | 
			
		||||
if test ${NEED_WEBTESTER} -eq 1 -a \! -e "$(which webrunner)"; then
 | 
			
		||||
    echo "**** ERROR: Webtester Not Installed"
 | 
			
		||||
    echo "you need to install webtester"
 | 
			
		||||
    echo "please execute as root:"
 | 
			
		||||
    echo "  apt-get install -y wget software-properties-common apt-transport-https"
 | 
			
		||||
    echo "  apt-add-repository https://dev.marc.waeckerlin.org/repository"
 | 
			
		||||
    echo "  wget -O- https://dev.marc.waeckerlin.org/repository/PublicKey \\"
 | 
			
		||||
    echo "    | apt-key add -"
 | 
			
		||||
    echo "  apt-get update -y"
 | 
			
		||||
    echo "  apt-get install -y webtester"
 | 
			
		||||
    echo "more information, see:"
 | 
			
		||||
    echo "  https://dev.marc.waeckerlin.org/redmine/projects/webtester"
 | 
			
		||||
    error=1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test "$error" = "1"; then
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
set -x
 | 
			
		||||
 | 
			
		||||
# Add tests here
 | 
			
		||||
MYSQL=$(docker run -d -e MYSQL_ROOT_PASSWORD=TopSecretLOL mysql)
 | 
			
		||||
PHP=$(docker run -d --volume $(pwd)/../html:/usr/share/nginx/html:ro --link ${MYSQL}:mysql mwaeckerlin/php-fpm)
 | 
			
		||||
NGINX=$(docker run -d --volumes-from ${PHP} --link ${PHP}:php -p 8080:80 mwaeckerlin/nginx)
 | 
			
		||||
trap "docker rm -f ${NGINX} ${PHP} ${MYSQL}" INT TERM EXIT
 | 
			
		||||
sleep 60
 | 
			
		||||
		Reference in New Issue
	
	Block a user