Skip to content

Conversation

@kaxil
Copy link
Member

@kaxil kaxil commented Aug 21, 2025

Refactor large parametrized test from individual parameters to dataclass structure for better readability and maintainability. The test now uses a RequestTestCase dataclass instead of 7 separate parameters, making it much easier to add new test cases and understand existing ones.

This change makes the test suite more maintainable for developers working on the supervisor communication protocol.

All the existing tests have been ported over.

Tests:

task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_connection] PASSED                                                                                      [  2%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_connection_with_password] PASSED                                                                        [  4%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_connection_with_alias] PASSED                                                                           [  7%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_variable] PASSED                                                                                        [  9%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_variable] PASSED                                                                                        [ 12%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[delete_variable] PASSED                                                                                     [ 14%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[patch_task_instance_to_deferred] PASSED                                                                     [ 17%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[patch_task_instance_to_up_for_reschedule] PASSED                                                            [ 19%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom] PASSED                                                                                            [ 21%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_map_index] PASSED                                                                                  [ 24%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_not_found] PASSED                                                                                  [ 26%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_include_prior_dates] PASSED                                                                        [ 29%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_xcom] PASSED                                                                                            [ 31%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_xcom_with_map_index] PASSED                                                                             [ 34%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_xcom_with_map_index_and_mapped_length] PASSED                                                           [ 36%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[delete_xcom] PASSED                                                                                         [ 39%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[up_for_retry] PASSED                                                                                        [ 41%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_rtif] PASSED                                                                                            [ 43%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[succeed_task] PASSED                                                                                        [ 46%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_by_name] PASSED                                                                                   [ 48%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_by_uri] PASSED                                                                                    [ 51%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_events_by_uri_and_name] PASSED                                                                    [ 53%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_events_by_uri] PASSED                                                                             [ 56%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_events_by_name] PASSED                                                                            [ 58%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_events_by_asset_alias] PASSED                                                                     [ 60%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[validate_inlets_and_outlets] PASSED                                                                         [ 63%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_prev_successful_dagrun] PASSED                                                                          [ 65%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[dag_run_trigger] PASSED                                                                                     [ 68%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[dag_run_trigger_already_exists] PASSED                                                                      [ 70%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_dag_run_state] PASSED                                                                                   [ 73%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_previous_dagrun] PASSED                                                                                 [ 75%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_previous_dagrun_with_state] PASSED                                                                      [ 78%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_task_reschedule_start_date] PASSED                                                                      [ 80%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_ti_count] PASSED                                                                                        [ 82%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_dr_count] PASSED                                                                                        [ 85%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_task_states] PASSED                                                                                     [ 87%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_seq_item] PASSED                                                                                   [ 90%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_seq_item_not_found] PASSED                                                                         [ 92%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_seq_slice] PASSED                                                                                  [ 95%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[patch_task_instance_to_skipped] PASSED                                                                      [ 97%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[create_hitl_detail_payload] PASSED                                                                          [100%]

^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@kaxil kaxil force-pushed the better-handle-request-test branch from 524ad96 to 2e7d39d Compare August 21, 2025 19:00
Refactor large parametrized test from individual parameters to dataclass
structure for better readability and maintainability. The test now uses
a `RequestTestCase` dataclass instead of 7 separate parameters, making it
much easier to add new test cases and understand existing ones.

This change makes the test suite more maintainable for developers working
on the supervisor communication protocol.

All the existing tests have been ported over.

Tests:

```
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_connection] PASSED                                                                                      [  2%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_connection_with_password] PASSED                                                                        [  4%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_connection_with_alias] PASSED                                                                           [  7%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_variable] PASSED                                                                                        [  9%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_variable] PASSED                                                                                        [ 12%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[delete_variable] PASSED                                                                                     [ 14%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[patch_task_instance_to_deferred] PASSED                                                                     [ 17%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[patch_task_instance_to_up_for_reschedule] PASSED                                                            [ 19%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom] PASSED                                                                                            [ 21%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_map_index] PASSED                                                                                  [ 24%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_not_found] PASSED                                                                                  [ 26%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_include_prior_dates] PASSED                                                                        [ 29%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_xcom] PASSED                                                                                            [ 31%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_xcom_with_map_index] PASSED                                                                             [ 34%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_xcom_with_map_index_and_mapped_length] PASSED                                                           [ 36%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[delete_xcom] PASSED                                                                                         [ 39%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[up_for_retry] PASSED                                                                                        [ 41%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[set_rtif] PASSED                                                                                            [ 43%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[succeed_task] PASSED                                                                                        [ 46%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_by_name] PASSED                                                                                   [ 48%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_by_uri] PASSED                                                                                    [ 51%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_events_by_uri_and_name] PASSED                                                                    [ 53%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_events_by_uri] PASSED                                                                             [ 56%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_events_by_name] PASSED                                                                            [ 58%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_asset_events_by_asset_alias] PASSED                                                                     [ 60%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[validate_inlets_and_outlets] PASSED                                                                         [ 63%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_prev_successful_dagrun] PASSED                                                                          [ 65%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[dag_run_trigger] PASSED                                                                                     [ 68%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[dag_run_trigger_already_exists] PASSED                                                                      [ 70%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_dag_run_state] PASSED                                                                                   [ 73%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_previous_dagrun] PASSED                                                                                 [ 75%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_previous_dagrun_with_state] PASSED                                                                      [ 78%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_task_reschedule_start_date] PASSED                                                                      [ 80%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_ti_count] PASSED                                                                                        [ 82%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_dr_count] PASSED                                                                                        [ 85%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_task_states] PASSED                                                                                     [ 87%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_seq_item] PASSED                                                                                   [ 90%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_seq_item_not_found] PASSED                                                                         [ 92%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[get_xcom_seq_slice] PASSED                                                                                  [ 95%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[patch_task_instance_to_skipped] PASSED                                                                      [ 97%]
task-sdk/tests/task_sdk/execution_time/test_supervisor.py::TestHandleRequest::test_handle_requests[create_hitl_detail_payload] PASSED                                                                          [100%]
```
@kaxil kaxil force-pushed the better-handle-request-test branch from 2e7d39d to 1160eba Compare August 21, 2025 19:41
@kaxil kaxil merged commit 819db98 into apache:main Aug 21, 2025
76 checks passed
@kaxil kaxil deleted the better-handle-request-test branch August 21, 2025 20:35
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Aug 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants