diff --git a/CHANGELOG.md b/CHANGELOG.md index 75322f9..eba4e28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,10 +5,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Added +- Add tests for `actions`, `containers` and `services` actions + ### Changed - Downgrade Docker Compose from [1.29.2](https://github.com/docker/compose/releases/tag/1.29.2) to [1.28.0](https://github.com/docker/compose/releases/tag/1.28.0) for Alpine image, to get faster builds 🚀 - Reduce Docker images size based on Alpine, again +### Fixed +- Tests should run fine now with macOS ## [1.2.0-beta.1] - 2021-09-03 ### Added diff --git a/tests/dockerfiles/.env.local b/tests/dockerfiles/.env.local index 92231e9..c132a98 100644 --- a/tests/dockerfiles/.env.local +++ b/tests/dockerfiles/.env.local @@ -5,10 +5,10 @@ # cd psu/ # cp tests/dockerfiles/.env.local tests/dockerfiles/.env # source tests/dockerfiles/.env -# docker build --no-cache -t $PSU_IMAGE:$PSU_TAG -f Dockerfile . -# docker build --no-cache -t $PSU_IMAGE:core-$PSU_TAG -f Dockerfile.core . -# docker build --no-cache -t $PSU_IMAGE:debian-$PSU_TAG -f Dockerfile.debian . -# docker build --no-cache -t $PSU_IMAGE:debaian-core-$PSU_TAG -f Dockerfile.debian-core . +# docker build --no-cache -t ${PSU_IMAGE}:${PSU_TAG} -f Dockerfile . +# docker build --no-cache -t ${PSU_IMAGE}:core-${PSU_TAG} -f Dockerfile.core . +# docker build --no-cache -t ${PSU_IMAGE}:debian-${PSU_TAG} -f Dockerfile.debian . +# docker build --no-cache -t ${PSU_IMAGE}:debian-core-${PSU_TAG} -f Dockerfile.debian-core . # # Build Docker images from https://gitlab.com/psuapp/hub locally: # cd .. @@ -49,9 +49,12 @@ PORTAINER_IMAGE="portainer/portainer-ce" #PORTAINER_IMAGE="portainer/portainer" PORTAINER_VERSION=latest #PORTAINER_VERSION="2.6.3" -#PORTAINER_VERSION="1.24.1" +#PORTAINER_VERSION="1.24.2" PORTAINER_COMMAND_OPTIONS="" #PORTAINER_COMMAND_OPTIONS=" --no-analytics" +#PORTAINER_DEPLOY_EXTRA_ARGS="--debug --verbose" SWARM_NODE_NAME=localhost SWARM_NODE_IP=$(hostname -I | awk '{ print $1 }') +# For macOS +#SWARM_NODE_IP=$(ipconfig getifaddr en0) diff --git a/tests/dockerfiles/docker-stack-portainer.yml b/tests/dockerfiles/docker-stack-portainer.yml index cf19199..7dbda8d 100644 --- a/tests/dockerfiles/docker-stack-portainer.yml +++ b/tests/dockerfiles/docker-stack-portainer.yml @@ -46,5 +46,6 @@ networks: secrets: psu-portainer-password: external: true + volumes: psu-portainer: diff --git a/tests/dockerfiles/docker-stack-web-app.yml b/tests/dockerfiles/docker-stack-web-app.yml index 1d1008f..6e01cf4 100644 --- a/tests/dockerfiles/docker-stack-web-app.yml +++ b/tests/dockerfiles/docker-stack-web-app.yml @@ -66,6 +66,7 @@ services: networks: psu-traefik-net: + driver: overlay external: true volumes: diff --git a/tests/run.sh b/tests/run.sh index 43fe4fd..f4fb197 100644 --- a/tests/run.sh +++ b/tests/run.sh @@ -68,16 +68,19 @@ function version { } # Leave Docker Swarm, if already set -docker swarm leave --force && sleep 3 | true +(docker swarm leave --force && sleep 3) || true # Remove admin password from Docker secrets, if already set -docker secret rm psu-portainer-password | true +docker secret rm psu-portainer-password || true + +# Delete all stopped containers +docker rm -f $(docker ps -a -q) || true # Remove portainer data, if already set -docker volume rm --force portainer_psu-portainer && sleep 2 | true +(docker volume rm --force portainer_psu-portainer && sleep 2) || true # Remove web-app data, if already set -docker volume rm --force web-app_psu-php-runner && sleep 2 | true +(docker volume rm --force web-app_psu-php-runner && sleep 2) || true # Init Docker Swarm docker swarm init @@ -103,11 +106,12 @@ psu_wrapper --version | grep -E 'version v?[0-9]+\.[0-9]+\.[0-9]+' # psu help test # Check if 4 terms present in the help message are visible when running the command -[ "$(psu_wrapper --help | grep -E 'Usage|Arguments|Options|Available actions' | wc -l)" == "4" ] +[ "$(psu_wrapper --help | grep -E 'Usage|Arguments|Options|Available actions' | wc -l | tr -d ' ')" == "4" ] -# TODO: test 'actions' action -# TODO: test 'services' action -# TODO: test 'containers' action +# psu 'actions' action test +# Check if some of the available actions of psu +# are visible when running the 'actions' command +[ "$(psu_wrapper actions | grep -E ' deploy | rm | ls | status | services | tasks | actions ' | wc -l | tr -d ' ')" == "7" ] # Portainer login test PSU_AUTH_TOKEN=$(psu_wrapper login --user $PSU_USER --password $PSU_PASSWORD --url $PSU_URL --insecure) @@ -159,6 +163,19 @@ stack_envvars="$(echo -n "$stack_info" | jq ".Env" -jc)" stack_list="$(psu_wrapper ls --user $PSU_USER --password $PSU_PASSWORD --url $PSU_URL --insecure --debug false --verbose false --quiet)" [ "$stack_list" == "$PSU_STACK_NAME" ] +# psu 'services' action test +# The current stack should have 3 services: +# 'web-app_app', 'web-app_job' and 'web-app_web' +[ "$(psu_wrapper services --user=$PSU_USER --password=$PSU_PASSWORD --url=$PSU_URL --name=$PSU_STACK_NAME --insecure --debug false --verbose false --quiet | wc -l | tr -d ' ')" == "3" ] + +# psu 'tasks:healthy' action test +# The current stack should have 3 healthy tasks: +[ "$(psu_wrapper tasks:healthy --user=$PSU_USER --password=$PSU_PASSWORD --url=$PSU_URL --name=$PSU_STACK_NAME --insecure --debug false --verbose false --quiet | wc -l | tr -d ' ')" == "3" ] + +# psu 'containers' action test +# The current stack should have 2 running containers: +[ "$(psu_wrapper containers --user=$PSU_USER --password=$PSU_PASSWORD --url=$PSU_URL --name=$PSU_STACK_NAME --insecure --debug false --verbose false --quiet | wc -l | tr -d ' ')" == "2" ] + # Convert env file in a base64 encoded string, # due to some limitations with Docker in Docker and volumes # see: https://stackoverflow.com/a/55481515