diff --git a/test/conftest.py b/test/conftest.py index 5539c57..965bf87 100644 --- a/test/conftest.py +++ b/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 diff --git a/test/stress_tests/test_unreachable_network/docker-compose.yml b/test/stress_tests/test_unreachable_network/test_unreachable_net.yml similarity index 100% rename from test/stress_tests/test_unreachable_network/docker-compose.yml rename to test/stress_tests/test_unreachable_network/test_unreachable_net.yml diff --git a/test/test_DOCKER_HOST_unix_socket.py b/test/test_docker_unix_socket.py similarity index 100% rename from test/test_DOCKER_HOST_unix_socket.py rename to test/test_docker_unix_socket.py diff --git a/test/test_DOCKER_HOST_unix_socket.yml b/test/test_docker_unix_socket.yml similarity index 100% rename from test/test_DOCKER_HOST_unix_socket.yml rename to test/test_docker_unix_socket.yml diff --git a/test/test_events.py b/test/test_events.py index 9b99e93..bd15575 100644 --- a/test/test_events.py +++ b/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: diff --git a/test/test_events.yml b/test/test_events.yml index a988284..809413c 100644 --- a/test/test_events.yml +++ b/test/test_events.yml @@ -1,3 +1,7 @@ +networks: + default: + name: nginx-proxy-test-events + volumes: nginx_conf: diff --git a/test/test_ssl/test_dhparam.py b/test/test_ssl/test_dhparam.py index 5d1d524..46d509c 100644 --- a/test/test_ssl/test_dhparam.py +++ b/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. diff --git a/test/test_ssl/test_dhparam.yml b/test/test_ssl/test_dhparam.yml index 632a8db..be35d64 100644 --- a/test/test_ssl/test_dhparam.yml +++ b/test/test_ssl/test_dhparam.yml @@ -1,3 +1,7 @@ +networks: + default: + name: nginx-proxy-test-ssl-dhparam + services: web5: image: web diff --git a/test/test_ssl/wildcard_cert_and_nohttps/docker-compose.yml b/test/test_ssl/wildcard_cert_and_nohttps/test_wildcard_cert_nohttps.yml similarity index 100% rename from test/test_ssl/wildcard_cert_and_nohttps/docker-compose.yml rename to test/test_ssl/wildcard_cert_and_nohttps/test_wildcard_cert_nohttps.yml diff --git a/test/test_virtual-path/test_virtual_paths.py b/test/test_virtual-path/test_virtual_paths.py index a91a8dd..8a8090c 100644 --- a/test/test_virtual-path/test_virtual_paths.py +++ b/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: diff --git a/test/test_virtual-path/test_virtual_paths.yml b/test/test_virtual-path/test_virtual_paths.yml index 76ea185..6379101 100644 --- a/test/test_virtual-path/test_virtual_paths.yml +++ b/test/test_virtual-path/test_virtual_paths.yml @@ -1,3 +1,7 @@ +networks: + default: + name: nginx-proxy-test-virtual-paths + volumes: nginx_conf: