Imri Paran 18206393e2
MINOR: added lineage ingestion test for mssql (#16436)
* added test case for SQL Server lineage

* reasons for failing tests
2024-06-17 08:56:28 +02:00

23 lines
955 B
Python

import contextlib
import logging
import docker
@contextlib.contextmanager
def try_bind(container, container_port, *host_ports):
"""Try to bind a container locally on a specfic port and yield the container. If the port is already in use,
try another port. This is useful when running tests locally and we want to avoid having to reconfigure SQL clients
to connect to a different port each time we run the tests. Multiple ports can be passed so that the next available
port is tried if the previous one is already in use.
"""
for host_port in host_ports:
try:
with container.with_bind_ports(container_port, host_port) as container:
yield container
return
except docker.errors.APIError:
logging.warning("Port %s is already in use, trying another port", host_port)
with container.with_bind_ports(container_port, None) as container:
yield container