Anton Vinogradov created IGNITE-28828:
-----------------------------------------
Summary: 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
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)