From ba5ec48c726f775e2a6b6c8d738dd67c06c324f7 Mon Sep 17 00:00:00 2001 From: cytopia Date: Sun, 4 Mar 2018 11:16:06 +0100 Subject: [PATCH] Fix tests --- tests/base/01-test-env-entrypoint.sh | 2 +- tests/base/02-test-env-uid.sh | 8 +- tests/base/03-test-env-gid.sh | 8 +- tests/base/04-test-run_nginx.sh | 75 +++++++++++++++++++ tests/prod/01-test-env-timezone.sh | 1 + tests/prod/02-test-env-docker_logs.sh | 15 ++-- tests/prod/03-test-env-enable_mail.sh | 8 +- .../04-test-env-forward_ports_to_localhost.sh | 28 +++++-- tests/prod/05-test-mount-custom_ini.sh | 46 ++++++------ tests/work/01-test-env-mysqldump-secure.sh | 12 +-- 10 files changed, 154 insertions(+), 49 deletions(-) create mode 100755 tests/base/04-test-run_nginx.sh diff --git a/tests/base/01-test-env-entrypoint.sh b/tests/base/01-test-env-entrypoint.sh index fff1d9b..0b5cb8c 100755 --- a/tests/base/01-test-env-entrypoint.sh +++ b/tests/base/01-test-env-entrypoint.sh @@ -19,11 +19,11 @@ FLAVOUR="${3}" # Tests ############################################################ - ### ### Debug == 0 ### did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=0" )" + if ! run_fail "docker logs ${did} 2>&1 | grep 'Debug level'"; then docker_logs "${did}" || true docker_stop "${did}" || true diff --git a/tests/base/02-test-env-uid.sh b/tests/base/02-test-env-uid.sh index dd28fb3..063c45a 100755 --- a/tests/base/02-test-env-uid.sh +++ b/tests/base/02-test-env-uid.sh @@ -31,13 +31,14 @@ if ! run "docker logs ${did} 2>&1 | grep -q '1005'"; then exit 1 fi if ! docker_exec "${did}" "id | grep 'uid=1005'" "--user=devilbox"; then - docker_logs "${did}" + docker_logs "${did}" || true docker_stop "${did}" || true echo "Failed" exit 1 fi docker_stop "${did}" + ### ### uid: 1000 (same uid) ### @@ -50,13 +51,14 @@ if ! run "docker logs ${did} 2>&1 | grep -q '1000'"; then exit 1 fi if ! docker_exec "${did}" "id | grep 'uid=1000'" "--user=devilbox"; then - docker_logs "${did}" + docker_logs "${did}" || true docker_stop "${did}" || true echo "Failed" exit 1 fi docker_stop "${did}" + ### ### uid: 33 (existing uid) ### @@ -69,7 +71,7 @@ if ! run "docker logs ${did} 2>&1 | grep -q '33'"; then exit 1 fi if ! docker_exec "${did}" "id | grep 'uid=33'" "--user=devilbox"; then - docker_logs "${did}" + docker_logs "${did}" || true docker_stop "${did}" || true echo "Failed" exit 1 diff --git a/tests/base/03-test-env-gid.sh b/tests/base/03-test-env-gid.sh index e9ea0d8..43196aa 100755 --- a/tests/base/03-test-env-gid.sh +++ b/tests/base/03-test-env-gid.sh @@ -31,13 +31,14 @@ if ! run "docker logs ${did} 2>&1 | grep -q '1005'"; then exit 1 fi if ! docker_exec "${did}" "id | grep 'gid=1005'" "--user=devilbox"; then - docker_logs "${did}" + docker_logs "${did}" || true docker_stop "${did}" || true echo "Failed" exit 1 fi docker_stop "${did}" + ### ### gid: 1000 (same gid) ### @@ -50,13 +51,14 @@ if ! run "docker logs ${did} 2>&1 | grep -q '1000'"; then exit 1 fi if ! docker_exec "${did}" "id | grep 'gid=1000'" "--user=devilbox"; then - docker_logs "${did}" + docker_logs "${did}" || true docker_stop "${did}" || true echo "Failed" exit 1 fi docker_stop "${did}" + ### ### gid: 33 (existing gid) ### @@ -69,7 +71,7 @@ if ! run "docker logs ${did} 2>&1 | grep -q '33'"; then exit 1 fi if ! docker_exec "${did}" "id | grep 'gid=33'" "--user=devilbox"; then - docker_logs "${did}" + docker_logs "${did}" || true docker_stop "${did}" || true echo "Failed" exit 1 diff --git a/tests/base/04-test-run_nginx.sh b/tests/base/04-test-run_nginx.sh new file mode 100755 index 0000000..9ee69dd --- /dev/null +++ b/tests/base/04-test-run_nginx.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +set -e +set -u +set -o pipefail + +CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" + +IMAGE="${1}" +VERSION="${2}" +FLAVOUR="${3}" + +# shellcheck disable=SC1090 +. "${CWD}/../.lib.sh" + + + +############################################################ +# Tests +############################################################ + +### +### Test Nginx with PHP-FPM +### +WWW_PORT="12345" +DOC_ROOT_HOST="$( mktemp -d )" +DOC_ROOT_CONT="/var/www/default" + +CONFIG_HOST="$( mktemp -d )" +CONFIG_CONT="/etc/nginx/conf.d" + +FINDME="am_i_really_working" +echo "${FINDME}" > "${DOC_ROOT_HOST}/index.php" + +# Start PHP-FPM +did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT}" )" +name="$( docker_name "${did}" )" + +# Nginx.conf +{ + echo "server {" + echo " server_name _;" + echo " listen 80;" + echo " root ${DOC_ROOT_CONT};" + echo " index index.php;" + echo " location ~* \.php\$ {" + echo " fastcgi_index index.php;" + echo " fastcgi_pass ${name}:9000;" + echo " include fastcgi_params;" + echo " fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;" + echo " fastcgi_param SCRIPT_NAME \$fastcgi_script_name;" + echo " }" + echo "}" +} > "${CONFIG_HOST}/php.conf" + +# Start Nginx +ndid="$( docker_run "nginx:stable" "-v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${CONFIG_HOST}:${CONFIG_CONT} -p ${WWW_PORT}:80 --link ${name}" )" + +# Check PHP connectivity +if ! run "curl -q 127.0.0.1:${WWW_PORT}/index.php 2>&1 | grep '${FINDME}'"; then + docker_logs "${ndid}" || true + docker_logs "${did}" || true + docker_stop "${ndid}" || true + docker_stop "${did}" || true + rm -rf "${DOC_ROOT_HOST}" + rm -rf "${CONFIG_HOST}" + echo "Failed" + exit 1 +fi + +# Cleanup +docker_stop "${did}" +docker_stop "${ndid}" +rm -rf "${DOC_ROOT_HOST}" +rm -rf "${CONFIG_HOST}" diff --git a/tests/prod/01-test-env-timezone.sh b/tests/prod/01-test-env-timezone.sh index 6dcab4f..d1b08c0 100755 --- a/tests/prod/01-test-env-timezone.sh +++ b/tests/prod/01-test-env-timezone.sh @@ -23,6 +23,7 @@ FLAVOUR="${3}" ### Europe/Berlin ### did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e TIMEZONE=Europe/Berlin" )" + if ! run "docker logs ${did} 2>&1 | grep -q 'Europe/Berlin'"; then docker_logs "${did}" || true docker_stop "${did}" || true diff --git a/tests/prod/02-test-env-docker_logs.sh b/tests/prod/02-test-env-docker_logs.sh index da4fd86..2dfbf7b 100755 --- a/tests/prod/02-test-env-docker_logs.sh +++ b/tests/prod/02-test-env-docker_logs.sh @@ -29,6 +29,7 @@ run "sleep 10" if ! run "docker logs ${did} 2>&1 | grep -q 'DOCKER_LOGS'"; then docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi @@ -38,6 +39,7 @@ if [ -f "${MOUNTPOINT}/php-fpm.access" ]; then ls -lap ${MOUNTPOINT}/ docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi @@ -46,15 +48,14 @@ if [ -f "${MOUNTPOINT}/php-fpm.error" ]; then ls -lap ${MOUNTPOINT}/ docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi run "ls -lap ${MOUNTPOINT}/" - docker_stop "${did}" -run "rm -rf ${MOUNTPOINT}" || true - +rm -rf "${MOUNTPOINT}" ### @@ -67,6 +68,7 @@ run "sleep 10" if ! run "docker logs ${did} 2>&1 | grep -q 'DOCKER_LOGS'"; then docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi @@ -76,6 +78,7 @@ if [ ! -f "${MOUNTPOINT}/php-fpm.access" ]; then ls -lap ${MOUNTPOINT}/ docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi @@ -84,6 +87,7 @@ if [ ! -r "${MOUNTPOINT}/php-fpm.access" ]; then ls -lap ${MOUNTPOINT}/ docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi @@ -93,6 +97,7 @@ if [ ! -f "${MOUNTPOINT}/php-fpm.error" ]; then ls -lap ${MOUNTPOINT}/ docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi @@ -101,12 +106,12 @@ if [ ! -r "${MOUNTPOINT}/php-fpm.error" ]; then ls -lap ${MOUNTPOINT}/ docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi run "ls -lap ${MOUNTPOINT}/" run "cat ${MOUNTPOINT}/*" - docker_stop "${did}" -run "rm -rf ${MOUNTPOINT}" || true +rm -rf "${MOUNTPOINT}" diff --git a/tests/prod/03-test-env-enable_mail.sh b/tests/prod/03-test-env-enable_mail.sh index efafb0d..30669e3 100755 --- a/tests/prod/03-test-env-enable_mail.sh +++ b/tests/prod/03-test-env-enable_mail.sh @@ -29,6 +29,7 @@ run "sleep 10" if ! run "docker logs ${did} 2>&1 | grep -q 'ENABLE_MAIL'"; then docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi @@ -38,6 +39,7 @@ if [ ! -f "${MOUNTPOINT}/devilbox" ]; then ls -lap ${MOUNTPOINT}/ docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi @@ -46,6 +48,7 @@ if [ ! -r "${MOUNTPOINT}/devilbox" ]; then ls -lap ${MOUNTPOINT}/ docker_logs "${did}" || true docker_stop "${did}" || true + rm -rf "${MOUNTPOINT}" echo "Failed" exit 1 fi @@ -57,10 +60,11 @@ run "sleep 5" if ! run "grep 'the subject' ${MOUNTPOINT}/devilbox"; then docker_logs "${did}" || true docker_stop "${did}" || true + run "cat ${MOUNTPOINT}/devilbox" + rm -rf "${MOUNTPOINT}" echo "Failed" - "run cat ${MOUNTPOINT}/devilbox" exit 1 fi docker_stop "${did}" -run "rm -rf ${MOUNTPOINT}" || true +rm -rf "${MOUNTPOINT}" diff --git a/tests/prod/04-test-env-forward_ports_to_localhost.sh b/tests/prod/04-test-env-forward_ports_to_localhost.sh index d6cc7e4..6662a3f 100755 --- a/tests/prod/04-test-env-forward_ports_to_localhost.sh +++ b/tests/prod/04-test-env-forward_ports_to_localhost.sh @@ -30,21 +30,37 @@ run "sleep 5" did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e FORWARD_PORTS_TO_LOCALHOST=3306:${mname}:3306 --link ${mname}" )" if ! run "docker logs ${did} 2>&1 | grep 'Forwarding ${mname}:3306'"; then - docker_logs "${did}" || true - docker_stop "${did}" || true + docker_logs "${did}" || true + docker_logs "${mdid}" || true + docker_stop "${did}" || true + docker_stop "${mdid}" || true echo "Failed" exit 1 fi # Test connectivity docker_exec "${did}" "ping -c 1 ${mname}" -docker_exec "${did}" "echo | nc -w 1 ${mname} 3306" -docker_exec "${did}" "echo | nc -w 1 127.0.0.1 3306" +#docker_exec "${did}" "echo | nc -w 1 ${mname} 3306" +#docker_exec "${did}" "echo | nc -w 1 127.0.0.1 3306" # Only work container has mysql binary installed if [ "${FLAVOUR}" = "work" ]; then - docker_exec "${did}" "mysql --user=root --password= --host=${mname} -e 'SHOW DATABASES;'" - docker_exec "${did}" "mysql --user=root --password= --host=127.0.0.1 -e 'SHOW DATABASES;'" + if ! docker_exec "${did}" "mysql --user=root --password= --host=${mname} -e 'SHOW DATABASES;'"; then + docker_logs "${did}" || true + docker_logs "${mdid}" || true + docker_stop "${did}" || true + docker_stop "${mdid}" || true + echo "Failed" + exit 1 + fi + if ! docker_exec "${did}" "mysql --user=root --password= --host=127.0.0.1 -e 'SHOW DATABASES;'"; then + docker_logs "${did}" || true + docker_logs "${mdid}" || true + docker_stop "${did}" || true + docker_stop "${mdid}" || true + echo "Failed" + exit 1 + fi fi docker_stop "${mdid}" docker_stop "${did}" diff --git a/tests/prod/05-test-mount-custom_ini.sh b/tests/prod/05-test-mount-custom_ini.sh index f802f1c..98cad5a 100755 --- a/tests/prod/05-test-mount-custom_ini.sh +++ b/tests/prod/05-test-mount-custom_ini.sh @@ -63,26 +63,26 @@ ndid="$( docker_run "nginx:stable" "-v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${CO # Check entrypoint if ! run "docker logs ${did} | grep 'post.ini'"; then - run "rm -rf ${DOC_ROOT_HOST}" - run "rm -rf ${CONFIG_HOST}" - run "rm -rf ${PHP_INI_HOST}" docker_logs "${ndid}" || true - docker_logs "${did}" || true + docker_logs "${did}" || true docker_stop "${ndid}" || true - docker_stop "${did}" || true + docker_stop "${did}" || true + rm -rf "${DOC_ROOT_HOST}" + rm -rf "${CONFIG_HOST}" + rm -rf "${PHP_INI_HOST}" echo "Failed" exit 1 fi # Check PHP connectivity if ! run "curl -q 127.0.0.1:${WWW_PORT}/index.php >/dev/null 2>&1"; then - run "rm -rf ${DOC_ROOT_HOST}" - run "rm -rf ${CONFIG_HOST}" - run "rm -rf ${PHP_INI_HOST}" docker_logs "${ndid}" || true - docker_logs "${did}" || true + docker_logs "${did}" || true docker_stop "${ndid}" || true - docker_stop "${did}" || true + docker_stop "${did}" || true + rm -rf "${DOC_ROOT_HOST}" + rm -rf "${CONFIG_HOST}" + rm -rf "${PHP_INI_HOST}" echo "Failed" exit 1 fi @@ -90,13 +90,13 @@ fi # Check modified php.ini if ! docker_exec "${did}" "php -r \"echo ini_get('post_max_size');\" | grep '17M'"; then docker_exec "${did}" "php -r \"echo ini_get('post_max_size');\"" - run "rm -rf ${DOC_ROOT_HOST}" - run "rm -rf ${CONFIG_HOST}" - run "rm -rf ${PHP_INI_HOST}" docker_logs "${ndid}" || true - docker_logs "${did}" || true + docker_logs "${did}" || true docker_stop "${ndid}" || true - docker_stop "${did}" || true + docker_stop "${did}" || true + rm -rf "${DOC_ROOT_HOST}" + rm -rf "${CONFIG_HOST}" + rm -rf "${PHP_INI_HOST}" echo "Failed" exit 1 fi @@ -104,13 +104,13 @@ fi # Check modified php.ini if ! run "curl -q 127.0.0.1:${WWW_PORT}/index.php 2>/dev/null | grep post_max_size | grep '17M'"; then docker_exec "${did}" "php -r \"echo ini_get('post_max_size');\"" - run "rm -rf ${DOC_ROOT_HOST}" - run "rm -rf ${CONFIG_HOST}" - run "rm -rf ${PHP_INI_HOST}" docker_logs "${ndid}" || true - docker_logs "${did}" || true + docker_logs "${did}" || true docker_stop "${ndid}" || true - docker_stop "${did}" || true + docker_stop "${did}" || true + rm -rf "${DOC_ROOT_HOST}" + rm -rf "${CONFIG_HOST}" + rm -rf "${PHP_INI_HOST}" echo "Failed" exit 1 fi @@ -119,6 +119,6 @@ fi # Cleanup docker_stop "${did}" docker_stop "${ndid}" -run "rm -rf ${DOC_ROOT_HOST}" -run "rm -rf ${CONFIG_HOST}" -run "rm -rf ${PHP_INI_HOST}" +rm -rf "${DOC_ROOT_HOST}" +rm -rf "${CONFIG_HOST}" +rm -rf "${PHP_INI_HOST}" diff --git a/tests/work/01-test-env-mysqldump-secure.sh b/tests/work/01-test-env-mysqldump-secure.sh index 89fc333..a801a5d 100755 --- a/tests/work/01-test-env-mysqldump-secure.sh +++ b/tests/work/01-test-env-mysqldump-secure.sh @@ -38,11 +38,11 @@ docker_exec "${did}" mysqldump-secure if [ ! -d "${MOUNTPOINT}/mysql" ]; then echo "MySQL backup dir does not exist: ${MOUNTPOINT}/mysql" ls -lap ${MOUNTPOINT}/ - docker_logs "${did}" - docker_logs "${mdid}" - docker_stop "${did}" - docker_stop "${mdid}" - run "rm -rf ${MOUNTPOINT}" || true + docker_logs "${did}" || true + docker_logs "${mdid}" || true + docker_stop "${did}" || true + docker_stop "${mdid}" || true + rm -rf "${MOUNTPOINT}" exit 1 fi @@ -51,4 +51,4 @@ run "ls -lap ${MOUNTPOINT}/mysql/ | grep -E 'mysql\.sql\.gz\.info'" docker_stop "${did}" docker_stop "${mdid}" -run "rm -rf ${MOUNTPOINT}" || true +rm -rf "${MOUNTPOINT}"