1
0
mirror of https://github.com/thib8956/nginx-proxy synced 2025-08-23 07:51:56 +00:00

test: fix docker-gen flaky tests

This commit is contained in:
Nicolas Duchon
2025-05-23 21:33:33 +02:00
parent 4af3be397a
commit 0479cb02a2
7 changed files with 37 additions and 15 deletions

View File

@@ -199,26 +199,48 @@ def container_ipv6(container: Container) -> str:
def nginx_proxy_dns_resolver(domain_name: str) -> Optional[str]:
"""
if "nginx-proxy" if found in host, return the ip address of the docker container
issued from the docker image nginxproxy/nginx-proxy:test.
issued from the docker image nginxproxy/nginx-proxy:test or nginx:latest.
:return: IP or None
"""
log = logging.getLogger('DNS')
log.debug(f"nginx_proxy_dns_resolver({domain_name!r})")
if 'nginx-proxy' in domain_name:
nginxproxy_containers = docker_client.containers.list(filters={"status": "running", "ancestor": "nginxproxy/nginx-proxy:test"})
if len(nginxproxy_containers) == 0:
log.warning(f"no container found from image nginxproxy/nginx-proxy:test while resolving {domain_name!r}")
nginx_containers = docker_client.containers.list(filters={"status": "running", "ancestor": "nginx:latest"})
if len(nginxproxy_containers) == 0 and len(nginx_containers) == 0:
log.warning(f"no runninf container found from image nginxproxy/nginx-proxy:test or nginx:latest while resolving {domain_name!r}")
exited_nginxproxy_containers = docker_client.containers.list(filters={"status": "exited", "ancestor": "nginxproxy/nginx-proxy:test"})
exited_nginx_containers = docker_client.containers.list(filters={"status": "exited", "ancestor": "nginx:latest"})
if len(exited_nginxproxy_containers) > 0:
exited_nginxproxy_container_logs = exited_nginxproxy_containers[0].logs()
log.warning(f"nginxproxy/nginx-proxy:test container might have exited unexpectedly. Container logs: " + "\n" + exited_nginxproxy_container_logs.decode())
if len(exited_nginx_containers) > 0:
exited_nginx_container_logs = exited_nginx_containers[0].logs()
log.warning(f"nginx:latest container might have exited unexpectedly. Container logs: " + "\n" + exited_nginx_container_logs.decode())
return None
nginxproxy_container = nginxproxy_containers[0]
ip = container_ip(nginxproxy_container)
log.info(f"resolving domain name {domain_name!r} as IP address {ip} of nginx-proxy container {nginxproxy_container.name}")
container = None
container_type = "nginx-proxy"
if len(nginxproxy_containers) >= 1:
container = nginxproxy_containers[0]
if len(nginx_containers) >= 1:
container = nginx_containers[0]
container_type = "nginx"
ip = container_ip(container)
log.info(f"resolving domain name {domain_name!r} as IP address {ip} of {container_type} container {container.name}")
return ip
return None
def docker_container_dns_resolver(domain_name: str) -> Optional[str]:
"""
if domain name is of the form "XXX.container.docker" or "anything.XXX.container.docker",

View File

@@ -27,4 +27,4 @@ services:
- "80"
environment:
WEB_PORTS: "80"
VIRTUAL_HOST: whoami.nginx.container.docker
VIRTUAL_HOST: whoami.nginx-proxy.tld

View File

@@ -11,12 +11,12 @@ pytestmark = pytest.mark.skipif(
def test_unknown_virtual_host_is_503(docker_compose, nginxproxy):
r = nginxproxy.get("http://unknown.nginx.container.docker/")
r = nginxproxy.get("http://unknown.nginx-proxy.tld/")
assert r.status_code == 503
def test_forwards_to_whoami(docker_compose, nginxproxy):
r = nginxproxy.get("http://whoami.nginx.container.docker/")
r = nginxproxy.get("http://whoami.nginx-proxy.tld/")
assert r.status_code == 200
whoami_container = docker_compose.containers.get("whoami")
assert r.text == f"I'm {whoami_container.id[:12]}\n"

View File

@@ -40,6 +40,6 @@ services:
- "80"
environment:
WEB_PORTS: "80"
VIRTUAL_HOST: whoami2.nginx.container.docker
VIRTUAL_HOST: whoami2.nginx-proxy.tld
networks:
- proxy

View File

@@ -11,12 +11,12 @@ pytestmark = pytest.mark.skipif(
def test_unknown_virtual_host_is_503(docker_compose, nginxproxy):
r = nginxproxy.get("http://unknown.nginx.container.docker/")
r = nginxproxy.get("http://unknown.nginx-proxy.tld/")
assert r.status_code == 503
def test_forwards_to_whoami(docker_compose, nginxproxy):
r = nginxproxy.get("http://whoami2.nginx.container.docker/")
r = nginxproxy.get("http://whoami2.nginx-proxy.tld/")
assert r.status_code == 200
whoami_container = docker_compose.containers.get("whoami2")
assert r.text == f"I'm {whoami_container.id[:12]}\n"

View File

@@ -38,6 +38,6 @@ services:
- "80"
environment:
WEB_PORTS: "80"
VIRTUAL_HOST: whoami2.nginx.container.docker
VIRTUAL_HOST: whoami2.nginx-proxy.tld
networks:
- proxy

View File

@@ -11,12 +11,12 @@ pytestmark = pytest.mark.skipif(
def test_unknown_virtual_host_is_503(docker_compose, nginxproxy):
r = nginxproxy.get("http://unknown.nginx.container.docker/")
r = nginxproxy.get("http://unknown.nginx-proxy.tld/")
assert r.status_code == 503
def test_forwards_to_whoami(docker_compose, nginxproxy):
r = nginxproxy.get("http://whoami2.nginx.container.docker/")
r = nginxproxy.get("http://whoami2.nginx-proxy.tld/")
assert r.status_code == 200
whoami_container = docker_compose.containers.get("whoami2")
assert r.text == f"I'm {whoami_container.id[:12]}\n"