[FEA] Add Iceberg fast test matrix [fast-ut] - #15876
Conversation
Signed-off-by: Ray Liu <liurenjie2008@gmail.com>
|
Signed-off-by: Ray Liu <liurenjie2008@gmail.com>
Signed-off-by: Ray Liu <liurenjie2008@gmail.com>
Signed-off-by: Ray Liu <liurenjie2008@gmail.com>
Signed-off-by: Ray Liu <liurenjie2008@gmail.com>
Signed-off-by: Ray Liu <liurenjie2008@gmail.com>
Signed-off-by: Ray Liu <liurenjie2008@gmail.com>
There was a problem hiding this comment.
Use a positive marker for the Iceberg matrix smoke suite
Adding is_iceberg_test_fast_run() to 79 existing tests makes CI-selection policy part of each test and creates a large mechanical diff. It also causes future Iceberg tests to enter the reduced matrix suite by default unless they explicitly add the skip condition. Please use ICEBERG_TEST_MATRIX_SMOKE_ONLY=1 to enable this mode, register @pytest.mark.iceberg_matrix_smoke, and apply the marker only to the intentionally selected cases. The runner can then use -m "iceberg and iceberg_matrix_smoke" in matrix-smoke mode, while normal and remote-catalog runs continue using -m iceberg. This keeps the smoke suite as an explicit allowlist and removes the repeated conditional changes.
There was a problem hiding this comment.
Supported Spark × Iceberg combinations can and should be derived from Maven release profiles and module POMs. This JSON is not the source of truth has already diverged:
- Spark 3.5.0 => no Iceberg version.
- Spark 3.5.4 => despite packaging 1.9.x and 1.10.x selects none for testging
- Spark 3.5.5 => omits packaged 1.10.x support.
There was a problem hiding this comment.
It's a combination of upstream oss with our pom, and they are not diverged.
For example: Spark 3.5.0 => no Iceberg version, there is no 3.5.0 listed the json.
| expected_versions.update( | ||
| spark_version for spark_version in spark_shims | ||
| if _spark_family(spark_version) == family and | ||
| _version_tuple(spark_version) >= minimum_tuple) |
There was a problem hiding this comment.
This >= minimum inference is not supported by the upstream data. Iceberg libs.versions.toml records exact Spark dependency/test pins—for example, Iceberg 1.11 pins Spark 3.5.8 and consumes it directly as both a compileOnly and integration-test dependency (catalog, build). It does not declare that pin as the minimum compatible Spark patch. Routine upstream pin bumps would therefore silently remove older patches from our matrix. Please retain this only as tested-baseline metadata, if we need it for sampling, and derive packaged support from our release profiles.
There was a problem hiding this comment.
Treating upstream recorded version as minimum patch version is following the discussion we had last time, please check the google doc for reference.
| iceberg_versions="1.9.2 1.10.1" | ||
| iceberg_versions=$(python jenkins/get_iceberg_versions.py \ | ||
| --spark-version "$spark_ver") || return 1 | ||
| if [[ -z "$iceberg_versions" ]]; then |
There was a problem hiding this comment.
Could an empty selection fail when the chosen release profile packages an Iceberg module? Matrix drift currently sends Spark 3.5.0 and 3.5.4 through this branch, reporting success after running zero version-detection tests. Skipping is appropriate when the POM profile genuinely has no Iceberg integration; otherwise this should fail loudly.
There was a problem hiding this comment.
If we trust the result of get_iceberg_versions.py, then I think it's fine.
I think this is similar to what we do, but using a positive marker is easier to maintain. cc @yinqingh WDYT? I'm fine with both. |
Signed-off-by: Ray Liu <liurenjie2008@gmail.com>
From the caller’s perspective, I would still only need to set ICEBERG_TEST_MATRIX_SMOKE_ONLY=1 to run the smoke suite, so there’s no behavioral change for me if I understand correctly. I’m fine with this approach if the positive marker makes the suite easier to maintain. |
Fixes #15875.
Description
Expand Iceberg integration-test coverage across the supported Spark and Iceberg version matrix without running the complete test suite for every combination.
This change:
iceberg/iceberg-versions.json, based on Apache Iceberg's Spark patch baselines.ICEBERG_TEST_FAST_RUN=1for local Hadoop-catalog runs; the flag defaults to0when it is not set.AI assistance disclosure: This change and pull request description were prepared with Codex and reviewed by the author before submission and update.
Testing performed:
scala2.13/pom.xml.ICEBERG_TEST_FAST_RUNvalues.git diff --check.Full GPU integration tests were not run locally because the required built artifacts and GPU test environment were unavailable.
Checklists
Documentation
Testing
(Please provide the names of the existing tests in the PR description.)
Performance