浏览代码

test: better nginx-proxy wait

Nicolas Duchon 2 周之前
父节点
当前提交
38169c56d4
共有 1 个文件被更改,包括 10 次插入19 次删除
  1. 10 19
      test/conftest.py

+ 10 - 19
test/conftest.py

@@ -370,27 +370,19 @@ def docker_compose_down(compose_files: List[str], project_name: str):
 
 def wait_for_nginxproxy_to_be_ready():
     """
-    If one (and only one) container started from image nginxproxy/nginx-proxy:test
-    or nginxproxy/docker-gen:latest is found, wait for its log to contain the substring "Watching docker events"
+    Wait for running container started from image nginxproxy/nginx-proxy:test
+    and nginxproxy/docker-gen:latest logs to contain the substring "Watching docker events"
     """
-    nginx_proxy_containers = docker_client.containers.list(filters={"ancestor": "nginxproxy/nginx-proxy:test"})
-    docker_gen_containers = docker_client.containers.list(filters={"ancestor": "nginxproxy/docker-gen:latest"})
+    nginx_proxy_containers = docker_client.containers.list(filters={"status": "running", "ancestor": "nginxproxy/nginx-proxy:test"})
+    docker_gen_containers = docker_client.containers.list(filters={"status": "running", "ancestor": "nginxproxy/docker-gen:latest"})
 
-    container_name = "nginx-proxy"
+    containers = nginx_proxy_containers + docker_gen_containers
 
-    if len(nginx_proxy_containers) == 1:
-        container = nginx_proxy_containers.pop()
-    elif len(docker_gen_containers) == 1:
-        container = docker_gen_containers.pop()
-        container_name = "docker-gen"
-    else:
-        logging.debug("Either more than one or no nginx-proxy or docker-gen container found, skipping container readiness check")
-        return
-
-    for line in container.logs(stream=True):
-        if b"Watching docker events" in line:
-            logging.debug(f"{container_name} ready")
-            break
+    for container in containers:
+        for line in container.logs(stream=True):
+            if b"Watching docker events" in line:
+                logging.debug(f"container {container.name} is ready")
+                break
 
 
 @pytest.fixture
@@ -547,7 +539,6 @@ class DockerComposer(contextlib.AbstractContextManager):
             docker_compose_up(docker_compose_files, project_name)
             self._networks = connect_to_all_networks()
             wait_for_nginxproxy_to_be_ready()
-            time.sleep(3)  # give time to containers to be ready
 
         except KeyboardInterrupt:
             logging.warning("KeyboardInterrupt detected! Force cleanup...")