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