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)

Reply via email to