TESTS: add test for the docker entrypoint script
This commit is contained in:
parent
0f7cddee4d
commit
563cfedb98
2 changed files with 78 additions and 0 deletions
18
test/test_entrypoint/docker-compose.yml
Normal file
18
test/test_entrypoint/docker-compose.yml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
version: '2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
nginx-proxy:
|
||||||
|
image: jwilder/nginx-proxy:test
|
||||||
|
container_name: nginx-proxy
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||||
|
# - ../../docker-entrypoint.sh:/app/docker-entrypoint.sh:ro
|
||||||
|
|
||||||
|
web1:
|
||||||
|
container_name: web1
|
||||||
|
image: web
|
||||||
|
expose:
|
||||||
|
- 81
|
||||||
|
environment:
|
||||||
|
WEB_PORTS: "81"
|
||||||
|
VIRTUAL_HOST: web1.nginx-proxy
|
||||||
60
test/test_entrypoint/test_entrypoint.py
Normal file
60
test/test_entrypoint/test_entrypoint.py
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
import re
|
||||||
|
import docker
|
||||||
|
|
||||||
|
|
||||||
|
docker_client = docker.from_env()
|
||||||
|
RE_PGREP_RESPONSE = re.compile("^(?P<pid>\d+)\n", re.MULTILINE)
|
||||||
|
|
||||||
|
|
||||||
|
def get_pid(process_name):
|
||||||
|
pgrep_response = docker_client.containers.get("nginx-proxy").exec_run("pgrep %s" % process_name)
|
||||||
|
pids = []
|
||||||
|
for m in RE_PGREP_RESPONSE.finditer(pgrep_response):
|
||||||
|
pids.append(int(m.group("pid")))
|
||||||
|
assert len(pids) > 0
|
||||||
|
return set(pids)
|
||||||
|
|
||||||
|
|
||||||
|
def kill(process_name):
|
||||||
|
docker_client.containers.get("nginx-proxy").exec_run("pkill %s" % process_name)
|
||||||
|
sleep(2)
|
||||||
|
|
||||||
|
|
||||||
|
def assert_reverse_proxy_behavior(nginxproxy):
|
||||||
|
assert "answer from port 81\n" == nginxproxy.get("http://web1.nginx-proxy/port").text
|
||||||
|
docker_client.containers.get("web1").stop()
|
||||||
|
sleep(2)
|
||||||
|
assert nginxproxy.get("http://web1.nginx-proxy/").status_code == 503
|
||||||
|
docker_client.containers.get("web1").start()
|
||||||
|
sleep(2)
|
||||||
|
assert "answer from port 81\n" == nginxproxy.get("http://web1.nginx-proxy/port").text
|
||||||
|
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
def test_dockergen_is_restarted_when_killed(docker_compose, nginxproxy):
|
||||||
|
assert_reverse_proxy_behavior(nginxproxy)
|
||||||
|
first_pids = get_pid("docker-gen")
|
||||||
|
kill("docker-gen")
|
||||||
|
assert_reverse_proxy_behavior(nginxproxy)
|
||||||
|
second_pids = get_pid("docker-gen")
|
||||||
|
assert first_pids != second_pids
|
||||||
|
|
||||||
|
|
||||||
|
def test_nginx_is_restarted_when_killed(docker_compose, nginxproxy):
|
||||||
|
assert_reverse_proxy_behavior(nginxproxy)
|
||||||
|
first_pids = get_pid("nginx")
|
||||||
|
kill("nginx")
|
||||||
|
assert_reverse_proxy_behavior(nginxproxy)
|
||||||
|
second_pids = get_pid("nginx")
|
||||||
|
assert len(first_pids.intersection(second_pids)) == 0
|
||||||
|
|
||||||
|
|
||||||
|
def test_term_signal_exits_nginxproxy(docker_compose):
|
||||||
|
assert "running" == docker_compose.containers.get("nginx-proxy").status
|
||||||
|
print docker_compose.containers.get("nginx-proxy").exec_run("kill -TERM 1")
|
||||||
|
sleep(2)
|
||||||
|
assert "exited" == docker_compose.containers.get("nginx-proxy").status
|
||||||
Loading…
Reference in a new issue