Fix prod/ tests

This commit is contained in:
cytopia
2022-03-23 13:27:02 +01:00
parent 1c31dbe3bf
commit d1061273b0
9 changed files with 335 additions and 223 deletions

View File

@@ -40,7 +40,9 @@ chmod 0777 -R "${LOG_DIR_HOST}"
chmod 0777 -R "${CFG_DIR_HOST}"
chmod 0777 -R "${WWW_DIR_HOST}"
# Pull Image
print_h2 "Pulling Nginx"
run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
###
@@ -48,8 +50,10 @@ run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
###
# Start PHP-FPM
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e DOCKER_LOGS=0 -v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${LOG_DIR_HOST}:/var/log/php" )"
name="$( docker_name "${did}" )"
print_h2 "Starting PHP-FPM"
if ! name="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e DOCKER_LOGS=0 -v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${LOG_DIR_HOST}:/var/log/php" )"; then
exit 1
fi
# Nginx.conf
{
@@ -70,7 +74,11 @@ name="$( docker_name "${did}" )"
# Start Nginx
ndid="$( docker_run "${CONTAINER}" "${ARCH}" "-v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${CFG_DIR_HOST}:${CFG_DIR_CONT} -p ${WWW_PORT}:80 --link ${name}" )"
print_h2 "Starting Nginx"
if ! nginx_name="$( docker_run "${CONTAINER}" "${ARCH}" "-v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${CFG_DIR_HOST}:${CFG_DIR_CONT} -p ${WWW_PORT}:80 --link ${name}" )"; then
docker_stop "${name}" || true
exit 1
fi
# Wait for both containers to be up and running
run "sleep 10"
@@ -79,6 +87,7 @@ run "sleep 10"
###
### Fire positive and error generating request
###
print_h2 "Fire curl requests"
run "curl http://localhost:${WWW_PORT}/ok.php"
run "curl http://localhost:${WWW_PORT}/fail.php"
@@ -86,10 +95,11 @@ run "curl http://localhost:${WWW_PORT}/fail.php"
###
### Run tests
###
if ! run "docker logs ${did} 2>&1 | grep -q 'DOCKER_LOGS'"; then
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
print_h2 "Checking DOCKER_LOGS"
if ! run "docker logs ${name} 2>&1 | grep 'DOCKER_LOGS'"; then
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
@@ -97,24 +107,29 @@ if ! run "docker logs ${did} 2>&1 | grep -q 'DOCKER_LOGS'"; then
exit 1
fi
if [ ! -f "${LOG_DIR_HOST}/php-fpm.access" ]; then
print_h2 "Ensure php-fpm.access exists"
if ! run "test -f ${LOG_DIR_HOST}/php-fpm.access"; then
echo "Access log does not exist: ${LOG_DIR_HOST}/php-fpm.access"
ls -lap "${LOG_DIR_HOST}/"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
echo "Failed"
exit 1
fi
if [ ! -r "${LOG_DIR_HOST}/php-fpm.access" ]; then
print_h2 "Ensure php-fpm.access is readable"
if ! run "test -r ${LOG_DIR_HOST}/php-fpm.access"; then
echo "Access log is not readable"
ls -lap "${LOG_DIR_HOST}/"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
@@ -122,24 +137,14 @@ if [ ! -r "${LOG_DIR_HOST}/php-fpm.access" ]; then
exit 1
fi
if [ ! -f "${LOG_DIR_HOST}/php-fpm.error" ]; then
print_h2 "Ensure php-fpm.error exists"
if ! run "test -f ${LOG_DIR_HOST}/php-fpm.error"; then
echo "Error log does not exist: ${LOG_DIR_HOST}/php-fpm.error"
ls -lap "${LOG_DIR_HOST}/"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
echo "Failed"
exit 1
fi
if [ ! -r "${LOG_DIR_HOST}/php-fpm.error" ]; then
echo "Error log is not readable"
ls -lap "${LOG_DIR_HOST}/"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
@@ -147,40 +152,62 @@ if [ ! -r "${LOG_DIR_HOST}/php-fpm.error" ]; then
exit 1
fi
# Ensure no access/error goes to stderr
if run "docker logs ${did} 2>&1 | grep -q 'GET /ok.php'"; then
print_h2 "Ensure php-fpm.error is readable"
if ! run "test -r ${LOG_DIR_HOST}/php-fpm.error"; then
echo "Error log is not readable"
ls -lap "${LOG_DIR_HOST}/"
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
echo "Failed"
exit 1
fi
print_h2 "Ensure no access/error logging exists in stderr (ok.php)"
if run "docker logs ${name} 2>&1 | grep 'GET /ok.php'"; then
echo "Error access log string for 'GET /ok.php' found in stderr, but shold go to file"
run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
echo "Failed"
exit 1
fi
if run "docker logs ${did} 2>&1 | grep -q 'GET /fail.php'"; then
print_h2 "Ensure no access/error logging exists in stderr (fail.php)"
if run "docker logs ${name} 2>&1 | grep 'GET /fail.php'"; then
echo "Error access log string for 'GET /fail.php' found in stderr, but should go to file"
run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
echo "Failed"
exit 1
fi
if run "docker logs ${did} 2>&1 | grep -q '/var/www/default/fail.php'"; then
print_h2 "Ensure no error message is present in stderr"
if run "docker logs ${name} 2>&1 | grep '/var/www/default/fail.php'"; then
echo "Error error message found in stderr, but should go to file"
run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
@@ -191,26 +218,31 @@ fi
# PHP-FPM 5.2 does not show access logs
if [ "${VERSION}" != "5.2" ]; then
# Test access and error file for correct content
if ! run "grep -q 'GET /ok.php' ${LOG_DIR_HOST}/php-fpm.access"; then
print_h2 "Test access logs in php-fpm.access (ok.php)"
if ! run "grep 'GET /ok.php' ${LOG_DIR_HOST}/php-fpm.access"; then
echo "Error no access log string for 'GET /ok.php' found in: ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
echo "Failed"
exit 1
fi
if ! run "grep -q 'GET /fail.php' ${LOG_DIR_HOST}/php-fpm.access"; then
print_h2 "Test access logs in php-fpm.access (fail.php)"
if ! run "grep 'GET /fail.php' ${LOG_DIR_HOST}/php-fpm.access"; then
echo "Error no access log string for 'GET /fail.php' found in: ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
@@ -218,13 +250,16 @@ if [ "${VERSION}" != "5.2" ]; then
exit 1
fi
fi
if ! run "grep -q '/var/www/default/fail.php' ${LOG_DIR_HOST}/php-fpm.error"; then
print_h2 "Ensiure error message is present in php-fpm.error"
if ! run "grep '/var/www/default/fail.php' ${LOG_DIR_HOST}/php-fpm.error"; then
echo "Error no error message found in: ${LOG_DIR_HOST}/php-fpm.error"
run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
@@ -236,12 +271,13 @@ fi
###
### Shutdown
###
docker_logs "${did}" || true
print_h2 "Cleanup"
docker_logs "${name}" || true
run "ls -lap ${LOG_DIR_HOST}/"
run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_stop "${ndid}" || true
docker_stop "${did}"
docker_stop "${nginx_name}" || true
docker_stop "${name}"
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"