kaxil commented on code in PR #68997:
URL: https://github.com/apache/airflow/pull/68997#discussion_r3689893706
##########
providers/standard/tests/unit/standard/sensors/test_external_task_sensor.py:
##########
@@ -1445,6 +1446,121 @@ def test_external_task_sensor_deferrable(self,
dag_maker):
assert exc.value.trigger.external_task_ids == ["test_task"]
assert exc.value.trigger.logical_dates == [DEFAULT_DATE]
+ def test_poke_interval_set_on_init(self):
+ """Test that poke_interval is set on init and the deprecated
poll_interval attribute mirrors it."""
+ sensor = ExternalTaskSensor(
+ task_id=TASK_ID,
+ external_task_id=EXTERNAL_TASK_ID,
+ external_dag_id=EXTERNAL_DAG_ID,
+ poke_interval=30,
+ )
+
+ assert sensor.poke_interval == 30
+ with pytest.warns(AirflowProviderDeprecationWarning,
match="poll_interval"):
+ assert sensor.poll_interval == 30
+
+ def test_poll_interval_attribute_get_set_deprecated(self):
+ """Reading or writing the poll_interval attribute is deprecated but
still mirrors poke_interval."""
+ sensor = ExternalTaskSensor(
+ task_id=TASK_ID,
+ external_task_id=EXTERNAL_TASK_ID,
+ external_dag_id=EXTERNAL_DAG_ID,
+ poke_interval=30,
+ )
+
+ with pytest.warns(AirflowProviderDeprecationWarning,
match="poll_interval"):
+ sensor.poll_interval = 15
+
+ assert sensor.poke_interval == 15
+
+ def test_poke_interval_default_when_unset(self):
+ """The BaseSensor default of 60.0 must be preserved."""
+ sensor = ExternalTaskSensor(
+ task_id=TASK_ID,
+ external_task_id=EXTERNAL_TASK_ID,
+ external_dag_id=EXTERNAL_DAG_ID,
+ )
+
+ assert sensor.poke_interval == 60.0
+
+ def test_poke_interval_accepts_timedelta(self):
+ """poke_interval should accept a timedelta, coerced to seconds, same
as the base sensor."""
+ sensor = ExternalTaskSensor(
+ task_id=TASK_ID,
+ external_task_id=EXTERNAL_TASK_ID,
+ external_dag_id=EXTERNAL_DAG_ID,
+ poke_interval=timedelta(seconds=5),
+ )
+
+ assert sensor.poke_interval == 5.0
+
+ def test_poke_interval_no_warning_when_poll_interval_unset(self, recwarn):
+ """Passing only poke_interval must not emit the poll_interval
deprecation warning."""
+ sensor = ExternalTaskSensor(
+ task_id=TASK_ID,
+ external_task_id=EXTERNAL_TASK_ID,
+ external_dag_id=EXTERNAL_DAG_ID,
+ poke_interval=15,
+ )
+
+ assert sensor.poke_interval == 15
+ assert not any(issubclass(w.category,
AirflowProviderDeprecationWarning) for w in recwarn.list)
+
+ def test_poll_interval_deprecated_and_sets_poke_interval(self):
+ """poll_interval is deprecated, but its value is still respected as
poke_interval."""
+ with pytest.warns(AirflowProviderDeprecationWarning,
match="poll_interval"):
+ sensor = ExternalTaskSensor(
+ task_id=TASK_ID,
+ external_task_id=EXTERNAL_TASK_ID,
+ external_dag_id=EXTERNAL_DAG_ID,
+ poll_interval=45,
+ )
+
+ assert sensor.poke_interval == 45
+
+ def test_poll_interval_zero_still_deprecated(self):
+ """Regression test: a falsy poll_interval (0) must still take the
deprecation path."""
+ with pytest.warns(AirflowProviderDeprecationWarning,
match="poll_interval"):
+ sensor = ExternalTaskSensor(
+ task_id=TASK_ID,
+ external_task_id=EXTERNAL_TASK_ID,
+ external_dag_id=EXTERNAL_DAG_ID,
+ poll_interval=0,
+ )
+
+ assert sensor.poke_interval == 0
+
+ def test_poke_interval_overrides_poll_interval_when_both_set(self):
+ """When both are provided, the deprecated poll_interval takes
precedence."""
Review Comment:
The suggested wording labels `poke_interval` as the deprecated one, but it's
`poll_interval` that's deprecated. Since the assertion checks that
`poke_interval == 10` wins:
```suggestion
"""When both are provided, poke_interval takes precedence over the
deprecated poll_interval."""
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]