[
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)