[ 
https://issues.apache.org/jira/browse/IGNITE-28828?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anton Vinogradov resolved IGNITE-28828.
---------------------------------------
    Resolution: Fixed

merged to master

> Split several overloaded test suites to reduce the RunAll critical path
> -----------------------------------------------------------------------
>
>                 Key: IGNITE-28828
>                 URL: https://issues.apache.org/jira/browse/IGNITE-28828
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Anton Vinogradov
>            Assignee: Anton Vinogradov
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> h3. Motivation
> Analysis of a recent full RunAll run (build #45474, ~2h14m wall-clock) shows 
> the
> total time is driven not by the agent pool (33 agents, peak 32 used) but by a 
> few
> long-running suites that, combined with FIFO queue ordering, finish late and 
> define
> the tail. The theoretical floor for the run is the single longest suite, so 
> shortening
> the longest suites directly shortens the whole run.
> Several Java suites run far above the median (~16 min): SPI (Discovery) 55m,
> Consistency 54m, Queries 2 52m, Cache 5 49m, Cache 2 45m, Cache (Failover) 
> 1/2 ~42m,
> Snapshots 2 42m, Cache 9 40m, Cache 6 36m, Queries 1 36m, Snapshots 1 36m.
> h3. Change
> Split each of the following suites into two balanced halves (by historical 
> per-class
> runtime), following the existing numbered-suite pattern. No production code 
> is touched;
> this is test-infrastructure only. No test class is added or removed — each 
> split is an
> exact partition of the original suite's class set.
> || Suite || was || new class || target after ||
> | Queries 2 | 52m | IgniteBinaryCacheQueryTestSuite5 | ~24m / ~24m |
> | Queries 1 | 36m | IgniteBinaryCacheQueryTestSuite6 | ~17m / ~17m |
> | SPI (Discovery) | 55m | IgniteSpiDiscoverySelfTestSuite2 | ~27m / ~27m |
> | Consistency | 54m | IgniteCacheConsistencySelfTestSuite2 | ~27m / ~26m |
> | Cache (Failover) 1 | 42m | IgniteCacheFailoverTestSuite4 | ~20m / ~21m |
> | Cache (Failover) 2 | 44m | IgniteCacheFailoverTestSuite5 | dominated by one 
> test* |
> | Cache 2 | 45m | IgniteCacheTestSuite14 | ~22m / ~22m |
> | Cache 5 | 49m | IgniteCacheTestSuite15 | dominated by one test* |
> | Cache 6 | 36m | IgniteCacheTestSuite16 | ~18m / ~18m |
> | Cache 9 | 40m | IgniteCacheTestSuite17 | ~20m / ~20m |
> | Snapshots 1 | 36m | IgniteSnapshotTestSuite7 | ~18m / ~17m |
> | Snapshots 2 | 42m | IgniteSnapshotTestSuite8 | ~21m / ~21m |
> (*) Cache 5 is dominated by CacheSerializableTransactionsTest (~31m) and 
> Cache (Failover) 2
> by a single ~24m class. Splitting helps only partially here; optimizing those 
> individual
> tests is a separate follow-up.
> New TeamCity build configurations for the new suites must be added to the 
> RunAll chain
> (copy the sibling suite config, change the TEST_SUITE parameter, add to 
> RunAll snapshot
> dependencies).
> h3. Verification
> * ignite-core and ignite-indexing test sources compile.
> * Strict checkstyle (-Pcheckstyle) passes.
> * For every split, the union of (trimmed original + new suite) equals the 
> original
>   class set exactly — no test lost, no duplication.
> h3. Out of scope (follow-ups)
> * Cache 3 (delegates to IgniteCacheTestSuite3.suite()) and Disk Page 
> Compressions 1/4
>   (extend AbstractIgnitePdsCompressionTestSuite) use different composition 
> mechanisms.
> * PDS (Indexing) can be split without code by giving its two sub-suites 
> separate configs.
> * Platform .NET (Windows) (~85m) and C++ are different stacks and remain the 
> next ceiling.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to