sunchao opened a new pull request, #5459:
URL: https://github.com/apache/datafusion-comet/pull/5459

   ## Why are the changes needed?
   
   The main Iceberg Spark test task is one of Comet CI's longest paths. In a 
[recent successful 
job](https://github.com/apache/datafusion-comet/actions/runs/32751494106/job/97518377579),
 test execution consumed about 67 minutes, including 18.7 minutes in 
`TestStructuredStreamingRead3` and 10.7 minutes in 
`TestRewriteDataFilesAction`. The job finished after 78 minutes including setup 
and compilation.
   
   **Which issue does this PR close?** None. This is a CI scheduling 
improvement that retains the existing supported versions and test coverage.
   
   ## What changes were proposed in this PR?
   
   Split the main Iceberg Spark test task across four isolated workers. Keep 
the long structured-streaming family together and assign all remaining classes 
automatically by a stable hash. New classes therefore receive a worker without 
maintaining a test allowlist. Nested classes stay with their enclosing class, 
and all classes remain available on the test classpath for inherited fixtures 
and framework discovery.
   
   A workflow-side Gradle init script adds an exclusion predicate to the 
existing candidate selection. It does not replace Gradle's existing 
includes/excludes or JUnit's tag and parameterized-test handling. Each worker 
uploads its candidate inventory and JUnit reports, with distinct names for 
reruns.
   
   Run a lightweight coverage-equivalence fixture once per Iceberg version in 
the existing short runtime job. Native compilation, extensions, runtime-test 
commands, and existing Comet/Gradle build flags are otherwise unchanged. This 
PR intentionally leaves repeated JVM compilation for separate work.
   
   ## How was this PR tested?
   
   - Ran the real Gradle/JUnit fixture with Gradle 8.14.4/JDK 17 and Gradle 
8.12.1/JDK 11. Both runs verified that the four workers equal the unsharded set 
of 10 candidate classes and 12 executed cases exactly once.
   - Covered nested, parameterized, inherited, dynamic, and newly named tests; 
existing include/exclude patterns, exclusion predicates, and JUnit tags; 
single-worker equivalence; and isolation from another Test task.
   - Verified that a failing test still fails Gradle, and invalid worker 
indices or task names fail explicitly.
   - Checked the streaming family in all four configured Iceberg releases, the 
change filters, and the unchanged native/extension jobs and existing test 
flags. Passed actionlint, Python syntax, documentation formatting, Apache RAT, 
and `git diff --check`.
   
   Full Iceberg suites and hosted elapsed-time improvements have not been 
measured for this patch. Additional workers repeat the existing 
setup/compilation work; the expected improvement is in wall-clock test 
completion, not necessarily total runner-minutes. The main test workers have 
new shard-suffixed check names, so any external requirements that refer to the 
old individual check should be checked.
   


-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to