Files
kamal/test/integration/traefik_test.rb
Donal McBreen c2d7fd775f Don't hide Traefik errors
When stopping or starting Traefik, don't hide important errors.

Docker doesn't return an error when starting a started container or
stopping a stopped container.

When rebooting we want to know about errors during run as we've just
stopped and removed the previous container.

When booting, we want to leave the running container if it exists,
restart a stopped container and run a new one if none exists.

We can implement this with `docker start ... || docker run ...`:
- if the container is started, `docker start` will exit with 0
- if the container is stopped, `docker start` will start it and exit with 0
- if the container doesn't exist, `docker start` will return a non zero
exit code and `docker run` will create a new container. Any errors in
`docker run` will be returned.
2023-08-08 15:41:16 +01:00

51 lines
1.1 KiB
Ruby

require_relative "integration_test"
class TraefikTest < IntegrationTest
test "boot, reboot, stop, start, restart, logs, remove" do
mrsk :traefik, :boot
assert_traefik_running
mrsk :traefik, :reboot
assert_traefik_running
mrsk :traefik, :boot
assert_traefik_running
# Check booting when booted doesn't raise an error
mrsk :traefik, :stop
assert_traefik_not_running
# Check booting when stopped works
mrsk :traefik, :boot
assert_traefik_running
mrsk :traefik, :stop
assert_traefik_not_running
mrsk :traefik, :start
assert_traefik_running
mrsk :traefik, :restart
assert_traefik_running
logs = mrsk :traefik, :logs, capture: true
assert_match /Traefik version [\d.]+ built on/, logs
mrsk :traefik, :remove
assert_traefik_not_running
end
private
def assert_traefik_running
assert_match /traefik:v2.9 "\/entrypoint.sh/, traefik_details
end
def assert_traefik_not_running
refute_match /traefik:v2.9 "\/entrypoint.sh/, traefik_details
end
def traefik_details
mrsk :traefik, :details, capture: true
end
end