Consolidate OpenLineage e2e tests into airflow-e2e-tests#69671
Conversation
|
Love it !!!! |
The credit goes to @jason810496 for the idea :) |
|
ALMOST ! |
Thanks Shahar for consolidating this! |
87dec0a to
5844acb
Compare
|
CC: @kacpermuda |
kacpermuda
left a comment
There was a problem hiding this comment.
Two more comments, in general a very nice cleanup PR moving these tests to a common structure. Thanks for doing it !
The OpenLineage provider e2e suite was introduced as a standalone `providers-e2e-tests/` framework with its own docker-compose stack, harness, Dockerfile, breeze command and CI workflow. Review feedback on the introducing PR pointed out that `airflow-e2e-tests/` already hosts deployed-stack suites for providers (Elasticsearch/OpenSearch remote logging, Kafka event-driven), so a second parallel framework duplicates setup that already exists. Fold OpenLineage in as an `openlineage` E2E test mode: it reuses the shared docker-compose base, the testcontainers conftest, and the `AirflowClient`, adding only an overlay for the OpenLineage env config and a small runner that drives the provider's system-test DAGs. The separate framework, its breeze command, workspace member and dedicated workflow are removed; the older-Airflow compatibility matrix is dropped along with them.
The repo root was computed with an off-by-one parents index, so the system-test DAGs source resolved outside the repository and the e2e session failed at startup in CI. Reuse AIRFLOW_ROOT_PATH from the e2e framework constants instead of re-deriving it. Generated-by: Claude Code (Fable 5)
The shared AirflowClient parsed every response body as JSON, but the variable-deletion cleanup in the OpenLineage e2e harness issues DELETE requests that return 204 No Content, whose empty body is not valid JSON.
Review feedback on the consolidation asked to keep the compatibility coverage that ran the OpenLineage suite against older released Airflow versions with current provider code — it catches core-vs-provider breakages early, which matters for a provider as tightly coupled to core as OpenLineage. To keep PR CI cheap, the compat matrix now runs on canary (scheduled / main) only; PRs still run the PROD-image job. Also restores the suite's README next to the tests for debugging reference.
5ac6613 to
65b671d
Compare
…label The compat matrix was gated to canary-only, giving no way to exercise it on a PR for a larger OpenLineage change. Add a dedicated run-openlineage-e2e-compat-tests selective-check output (canary or the explicit 'full tests needed' label) so maintainers can opt a PR in, while keeping it off ordinary OpenLineage PRs. Deliberately not tied to derived full_tests_needed, matching the run-ui-e2e-tests convention.
kacpermuda
left a comment
There was a problem hiding this comment.
All looks good, thanks for cleaning it up.
Backport failed to create: v3-3-test. View the failure log Run detailsNote: As of Merging PRs targeted for Airflow 3.X In matter of doubt please ask in #release-management Slack channel.
You can attempt to backport this manually by running: cherry_picker 37783b8 v3-3-testThis should apply the commit to the v3-3-test branch and leave the commit in conflict state marking After you have resolved the conflicts, you can continue the backport process by running: cherry_picker --continueIf you don't have cherry-picker installed, see the installation guide. |
* Consolidate OpenLineage e2e tests into airflow-e2e-tests The OpenLineage provider e2e suite was introduced as a standalone `providers-e2e-tests/` framework with its own docker-compose stack, harness, Dockerfile, breeze command and CI workflow. Review feedback on the introducing PR pointed out that `airflow-e2e-tests/` already hosts deployed-stack suites for providers (Elasticsearch/OpenSearch remote logging, Kafka event-driven), so a second parallel framework duplicates setup that already exists. Fold OpenLineage in as an `openlineage` E2E test mode: it reuses the shared docker-compose base, the testcontainers conftest, and the `AirflowClient`, adding only an overlay for the OpenLineage env config and a small runner that drives the provider's system-test DAGs. The separate framework, its breeze command, workspace member and dedicated workflow are removed; the older-Airflow compatibility matrix is dropped along with them. * Fix OpenLineage e2e system-tests path resolution The repo root was computed with an off-by-one parents index, so the system-test DAGs source resolved outside the repository and the e2e session failed at startup in CI. Reuse AIRFLOW_ROOT_PATH from the e2e framework constants instead of re-deriving it. Generated-by: Claude Code (Fable 5) * Fix OpenLineage e2e crash on 204 responses from variable deletion The shared AirflowClient parsed every response body as JSON, but the variable-deletion cleanup in the OpenLineage e2e harness issues DELETE requests that return 204 No Content, whose empty body is not valid JSON. * Restore OpenLineage e2e older-Airflow compat matrix and README Review feedback on the consolidation asked to keep the compatibility coverage that ran the OpenLineage suite against older released Airflow versions with current provider code — it catches core-vs-provider breakages early, which matters for a provider as tightly coupled to core as OpenLineage. To keep PR CI cheap, the compat matrix now runs on canary (scheduled / main) only; PRs still run the PROD-image job. Also restores the suite's README next to the tests for debugging reference. * Allow triggering OpenLineage e2e compat matrix via full-tests-needed label The compat matrix was gated to canary-only, giving no way to exercise it on a PR for a larger OpenLineage change. Add a dedicated run-openlineage-e2e-compat-tests selective-check output (canary or the explicit 'full tests needed' label) so maintainers can opt a PR in, while keeping it off ordinary OpenLineage PRs. Deliberately not tied to derived full_tests_needed, matching the run-ui-e2e-tests convention.

Following review feedback on #69212, the OpenLineage provider e2e tests are consolidated into the existing
airflow-e2e-tests/framework instead of the standaloneproviders-e2e-tests/framework introduced there.airflow-e2e-tests/already hosts deployed-stack suites for providers (Elasticsearch/OpenSearch remote logging, Kafka event-driven), so the separate framework duplicated setup that already exists. OpenLineage now runs as anopenlineage--e2e-test-mode: it reuses the shared docker-compose base, the testcontainers conftest, and the sharedAirflowClient, adding only a compose overlay for the OpenLineage env config and a small runner that drives the provider's system-test DAGs.The standalone
providers-e2e-tests/tree, itsbreeze testing providers-e2e-testscommand, its uv workspace member and its dedicated CI workflow are removed. The older-Airflow compatibility matrix (the only feature unique to that framework) is dropped along with it.related: #69212
Was generative AI tooling used to co-author this PR?
Generated-by: Claude Code (Opus 4.8) following the guidelines