Explorar el Código

test: isolate in project

Nicolas Duchon hace 5 meses
padre
commit
381293ad3f

+ 14 - 9
test/conftest.py

@@ -331,8 +331,8 @@ def get_nginx_conf_from_container(container):
         return conffile.read()
 
 
-def docker_compose_up(compose_file='docker-compose.yml'):
-    composeCmd = f'{DOCKER_COMPOSE} --file {compose_file} up --remove-orphans --force-recreate --detach'
+def docker_compose_up(project_name, compose_file='docker-compose.yml'):
+    composeCmd = f'{DOCKER_COMPOSE} --project-name {project_name} --file {compose_file} up --remove-orphans --force-recreate --detach'
     logging.info(composeCmd)
     
     try:
@@ -341,8 +341,8 @@ def docker_compose_up(compose_file='docker-compose.yml'):
         pytest.fail(f"Error while runninng '{composeCmd}:\n{e.output}", pytrace=False)
 
 
-def docker_compose_down(compose_file='docker-compose.yml'):
-    composeCmd = f'{DOCKER_COMPOSE} --file {compose_file} down --remove-orphans --volumes'
+def docker_compose_down(project_name, compose_file='docker-compose.yml'):
+    composeCmd = f'{DOCKER_COMPOSE} --project-name {project_name} --file {compose_file} down --remove-orphans --volumes'
     logging.info(composeCmd)
     
     try:
@@ -467,6 +467,7 @@ def connect_to_all_networks():
 class DockerComposer(contextlib.AbstractContextManager):
     def __init__(self):
         self._docker_compose_file = None
+        self._project_name = None
 
     def __exit__(self, *exc_info):
         self._down()
@@ -476,19 +477,22 @@ class DockerComposer(contextlib.AbstractContextManager):
             return
         for network in self._networks:
             disconnect_from_network(network)
-        docker_compose_down(self._docker_compose_file)
+        docker_compose_down(self._project_name, self._docker_compose_file)
         self._docker_compose_file = None
 
-    def compose(self, docker_compose_file):
+    def compose(self, project_name, docker_compose_file):
+        if docker_compose_file == self._docker_compose_file and project_name == self._project_name:
+            return
         self._down()
         if docker_compose_file is None:
             return
         remove_all_containers()
-        docker_compose_up(docker_compose_file)
+        docker_compose_up(project_name, docker_compose_file)
         self._networks = connect_to_all_networks()
         wait_for_nginxproxy_to_be_ready()
         time.sleep(3)  # give time to containers to be ready
         self._docker_compose_file = docker_compose_file
+        self._project_name = project_name
 
 
 ###############################################################################
@@ -517,7 +521,7 @@ def monkey_patched_dns():
 
 
 @pytest.fixture
-def docker_compose(monkey_patched_dns, docker_composer, docker_compose_file):
+def docker_compose(request, monkey_patched_dns, docker_composer, docker_compose_file):
     """Ensures containers described in a docker compose file are started.
 
     A custom docker compose file name can be specified by overriding the `docker_compose_file`
@@ -526,7 +530,8 @@ def docker_compose(monkey_patched_dns, docker_composer, docker_compose_file):
     Also, in the case where pytest is running from a docker container, this fixture makes sure
     our container will be attached to all the docker networks.
     """
-    docker_composer.compose(docker_compose_file)
+    project_name = request.module.__name__
+    docker_composer.compose(project_name, docker_compose_file)
     yield docker_client
 
 

+ 0 - 0
test/stress_tests/test_unreachable_network/docker-compose.yml → test/stress_tests/test_unreachable_network/test_unreachable_net.yml


+ 0 - 0
test/test_DOCKER_HOST_unix_socket.py → test/test_docker_unix_socket.py


+ 0 - 0
test/test_DOCKER_HOST_unix_socket.yml → test/test_docker_unix_socket.yml


+ 2 - 2
test/test_events.py

@@ -22,7 +22,7 @@ def web1(docker_compose):
         },
         ports={"81/tcp": None}
     )
-    docker_compose.networks.get("test_default").connect(container)
+    docker_compose.networks.get("nginx-proxy-test-events").connect(container)
     sleep(2)  # give it some time to initialize and for docker-gen to detect it
     yield container
     try:
@@ -47,7 +47,7 @@ def web2(docker_compose):
         },
         ports={"82/tcp": None}
     )
-    docker_compose.networks.get("test_default").connect(container)
+    docker_compose.networks.get("nginx-proxy-test-events").connect(container)
     sleep(2)  # give it some time to initialize and for docker-gen to detect it
     yield container
     try:

+ 4 - 0
test/test_events.yml

@@ -1,3 +1,7 @@
+networks:
+  default:
+    name: nginx-proxy-test-events
+
 volumes:
   nginx_conf:
 

+ 1 - 1
test/test_ssl/test_dhparam.py

@@ -62,7 +62,7 @@ def require_openssl(required_version):
 @require_openssl("1.0.2")
 def negotiate_cipher(sut_container, additional_params='', grep='Cipher is'):
     sut_container.reload()
-    host = f"{sut_container.attrs['NetworkSettings']['Networks']['test_ssl_default']['IPAddress']}:443"
+    host = f"{sut_container.attrs['NetworkSettings']['Networks']['nginx-proxy-test-ssl-dhparam']['IPAddress']}:443"
 
     try:
         # Enforce TLS 1.2 as newer versions don't support custom dhparam or ciphersuite preference.

+ 4 - 0
test/test_ssl/test_dhparam.yml

@@ -1,3 +1,7 @@
+networks:
+  default:
+    name: nginx-proxy-test-ssl-dhparam
+
 services:
   web5:
     image: web

+ 0 - 0
test/test_ssl/wildcard_cert_and_nohttps/docker-compose.yml → test/test_ssl/wildcard_cert_and_nohttps/test_wildcard_cert_nohttps.yml


+ 1 - 1
test/test_virtual-path/test_virtual_paths.py

@@ -39,7 +39,7 @@ def web4(docker_compose):
         },
         ports={"84/tcp": None}
     )
-    docker_compose.networks.get("test_virtual-path_default").connect(container)
+    docker_compose.networks.get("nginx-proxy-test-virtual-paths").connect(container)
     sleep(2)  # give it some time to initialize and for docker-gen to detect it
     yield container
     try:

+ 4 - 0
test/test_virtual-path/test_virtual_paths.yml

@@ -1,3 +1,7 @@
+networks:
+  default:
+    name: nginx-proxy-test-virtual-paths
+
 volumes:
   nginx_conf: