Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 28 additions & 7 deletions airflow-e2e-tests/tests/airflow_e2e_tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,15 +98,32 @@ def spin_up_airflow_environment(tmp_path_factory):
# as it is already available and loaded using prepare_breeze_and_image step in workflow
pull = False if DOCKER_IMAGE.startswith("ghcr.io/apache/airflow/main/") else True

console.print(f"[blue]Spinning up airflow environment using {DOCKER_IMAGE}")
compose_instance = DockerCompose(tmp_dir, compose_file_name=compose_file_names, pull=pull)
try:
console.print(f"[blue]Spinning up airflow environment using {DOCKER_IMAGE}")
compose_instance = DockerCompose(tmp_dir, compose_file_name=compose_file_names, pull=pull)

compose_instance.start()
compose_instance.start()

compose_instance.wait_for(f"http://{DOCKER_COMPOSE_HOST_PORT}/api/v2/version")
compose_instance.exec_in_container(
command=["airflow", "dags", "reserialize"], service_name="airflow-dag-processor"
)

except Exception:
console.print("[red]Failed to start docker compose")
_print_logs(compose_instance)
compose_instance.stop()
raise

compose_instance.wait_for(f"http://{DOCKER_COMPOSE_HOST_PORT}/api/v2/version")
compose_instance.exec_in_container(
command=["airflow", "dags", "reserialize"], service_name="airflow-dag-processor"
)

def _print_logs(compose_instance):
containers = compose_instance.get_containers()
for container in containers:
service = container.Service
stdout, _ = compose_instance.get_logs(service)
console.print(f"::group:: {service} Logs")
console.print(f"[red]{stdout}")
console.print("::endgroup::")


def pytest_sessionstart(session):
Expand Down Expand Up @@ -143,6 +160,10 @@ def pytest_sessionfinish(session, exitstatus):
if airflow_logs_path is not None:
copytree(airflow_logs_path, LOGS_FOLDER, dirs_exist_ok=True)

# If any test failures lets print the services logs
if any(r["status"] == "failed" for r in test_results):
_print_logs(compose_instance=compose_instance)

if compose_instance:
if not os.environ.get("SKIP_DOCKER_COMPOSE_DELETION"):
compose_instance.stop()
Expand Down
Loading