#!/usr/bin/env bash function run_test { tinitialize "Docker-Kong test suite" "${BASH_SOURCE[0]}" if [[ -f Dockerfile.$BASE ]]; then docker run -i --rm -v $PWD/hadolint.yaml:/.config/hadolint.yaml hadolint/hadolint:2.7.0 < Dockerfile.$BASE fi if [[ -f $BASE/Dockerfile ]]; then docker run -i --rm -v $PWD/hadolint.yaml:/.config/hadolint.yaml hadolint/hadolint:2.7.0 < $BASE/Dockerfile fi if [[ ! -z "${SNYK_SCAN_TOKEN}" ]]; then docker scan --accept-license --login --token "${SNYK_SCAN_TOKEN}" docker scan --accept-license --exclude-base --severity=high --file $BASE/Dockerfile kong-$BASE fi # Test the proper version was buid tchapter "test $BASE image" ttest "the proper version was build" if [[ -f Dockerfile.$BASE ]]; then version_given="$(grep 'ARG KONG_VERSION' Dockerfile.$BASE | awk -F "=" '{print $2}')" fi if [[ -f $BASE/Dockerfile ]]; then version_given="$(grep 'ARG KONG_VERSION' $BASE/Dockerfile | awk -F "=" '{print $2}')" fi version_built="$(docker run -i --rm kong-$BASE kong version | tr -d '[:space:]')" if [[ "$version_given" != "$version_built" ]]; then echo "Kong version mismatch:"; echo "\tVersion given is $version_given"; echo "\tVersion built is $version_built"; tfailure else tsuccess fi ttest "Dbless Test" pushd compose docker-compose up -d until docker ps -f health=healthy | grep -q ${KONG_DOCKER_TAG}; do docker-compose up -d docker ps sleep 15 done curl -I localhost:8001 | grep -E '(openresty|kong)' if [ $? -eq 0 ]; then tsuccess else tfailure fi docker-compose kill docker-compose rm -f sleep 5 docker volume prune -f popd ttest "Upgrade Test" export COMPOSE_PROFILES=database export KONG_DATABASE=postgres pushd compose curl -fsSL https://raw.githubusercontent.com/Kong/docker-kong/1.5.0/swarm/docker-compose.yml | KONG_DOCKER_TAG=kong:1.5.0 docker-compose -p kong -f - up -d until docker ps -f health=healthy | grep -q kong:1.5.0; do curl -fsSL https://raw.githubusercontent.com/Kong/docker-kong/1.5.0/swarm/docker-compose.yml | docker-compose -p kong -f - ps docker ps sleep 15 curl -fsSL https://raw.githubusercontent.com/Kong/docker-kong/1.5.0/swarm/docker-compose.yml | KONG_DOCKER_TAG=kong:1.5.0 docker-compose -p kong -f - up -d done curl -I localhost:8001 | grep 'Server: openresty' sed -i -e 's/127.0.0.1://g' docker-compose.yml KONG_DOCKER_TAG=${KONG_DOCKER_TAG} docker-compose -p kong up -d until docker ps -f health=healthy | grep -q ${KONG_DOCKER_TAG}; do docker-compose -p kong ps docker ps sleep 15 done curl -I localhost:8001 | grep -E '(openresty|kong)' if [ $? -eq 0 ]; then tsuccess else tfailure fi echo "cleanup" docker-compose -p kong kill docker-compose -p kong rm -f sleep 5 docker volume prune -f docker system prune -y git checkout -- docker-compose.yml popd # Run Kong functional tests ttest "Kong functional test" git clone https://github.com/Kong/kong.git || true pushd kong git checkout $version_given || git checkout next popd pushd kong-build-tools rm -rf test/tests/01-package docker tag kong-$BASE $BASE:$BASE KONG_VERSION=$version_given KONG_TEST_IMAGE_NAME=kong-$BASE RESTY_IMAGE_BASE=$BASE RESTY_IMAGE_TAG=$BASE make test if [ $? -eq 0 ]; then tsuccess else tfailure fi popd tfinish } # No need to modify anything below this comment # shellcheck disable=SC1090 # do not follow source [[ "$T_PROJECT_NAME" == "" ]] && set -e && if [[ -f "${1:-$(dirname "$(realpath "$0")")/test.sh}" ]]; then source "${1:-$(dirname "$(realpath "$0")")/test.sh}"; else source "${1:-$(dirname "$(realpath "$0")")/run.sh}"; fi && set +e run_test