This is an automated email from the ASF dual-hosted git repository.
jscheffl pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new d5a8294de66 Add regression test for KPO awaiting pod start before
init-container logs (#68503)
d5a8294de66 is described below
commit d5a8294de66122befd9374e1427a663bc16dc49f
Author: Jorge Rocamora <[email protected]>
AuthorDate: Sat Jun 13 22:11:52 2026 +0200
Add regression test for KPO awaiting pod start before init-container logs
(#68503)
---
.../tests/unit/cncf/kubernetes/operators/test_pod.py | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git
a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
index 9b280ff70f5..780d60be0ac 100644
--- a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
+++ b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
@@ -42,6 +42,7 @@ from airflow.providers.cncf.kubernetes.secret import Secret
from airflow.providers.cncf.kubernetes.triggers.pod import ContainerState,
KubernetesPodTrigger
from airflow.providers.cncf.kubernetes.utils.pod_manager import (
OnFinishAction,
+ PodLaunchTimeoutException,
PodLoggingStatus,
PodNotFoundException,
PodPhase,
@@ -1167,6 +1168,25 @@ class TestKubernetesPodOperator:
else:
delete_pod_mock.assert_not_called()
+ @patch(f"{POD_MANAGER_CLASS}.delete_pod")
+ @patch(f"{KPO_MODULE}.KubernetesPodOperator.find_pod")
+
@patch(f"{KPO_MODULE}.KubernetesPodOperator.await_init_containers_completion")
+ def
test_execute_sync_checks_pod_start_before_following_init_container_logs(
+ self, await_init_mock, find_pod_mock, delete_pod_mock
+ ):
+ """Pod start is awaited before following init-container logs, so a
Pending pod hits the
+ startup timeout instead of blocking forever in the init-log wait
loop."""
+ find_pod_mock.return_value.status.phase = PodPhase.SUCCEEDED
+ self.await_start_mock.side_effect = PodLaunchTimeoutException("Pod
took too long to start")
+ k = KubernetesPodOperator(task_id="task",
init_container_logs=["init-container"])
+ context = create_context(k)
+ context["ti"].xcom_push = MagicMock()
+
+ with pytest.raises(PodLaunchTimeoutException, match="too long to
start"):
+ k.execute(context=context)
+
+ await_init_mock.assert_not_called()
+
@pytest.mark.asyncio
@pytest.mark.parametrize("should_fail", [True, False])
@patch(f"{POD_MANAGER_CLASS}.delete_pod")