nevzheng opened a new issue, #13515:
URL: https://github.com/apache/gravitino/issues/13515

   ### Describe the proposal
   
   Database-backed tests in `core` currently combine several execution 
concerns: unit tests, default H2 coverage, optional MySQL and PostgreSQL 
coverage, and broad Docker-test selection. This makes it difficult to see which 
backend ran, verify that coverage is complete, reuse fixtures safely, or scale 
CI without duplicate or unsafe execution.
   
   This epic will make database coverage explicit before adding concurrency. 
The first task will split `core` into explicit unit, H2, MySQL, and PostgreSQL 
suites with independent CI lanes, backend-qualified test identities, distinct 
result and timing artifacts, and raw JaCoCo execution-data fan-in. Follow-up 
work will improve state isolation and fixture reuse before introducing finer 
sharding or bounded JVM forks.
   
   Guardrails:
   
   - Preserve existing test coverage and reconcile backend-qualified identities 
during the cutover.
   - Keep execution sequential within each database lane until shared schema 
and process-global state are isolated.
   - Do not use blanket `maxParallelForks` as a substitute for test isolation.
   - Require repeated timing, stability, and coverage evidence for each 
optimization.
   
   Completion conditions:
   
   - CI reports unit, H2, MySQL, and PostgreSQL results independently.
   - Reconciliation detects missing lanes, unexpected duplicates within a lane, 
and coverage loss relative to the pre-cutover baseline.
   - Raw JaCoCo execution data is merged before generating one combined `core` 
coverage report.
   - Shared database state and reusable fixtures have explicit ownership and 
lifecycle rules.
   - Any later sharding or bounded forking demonstrates a repeatable 
improvement without increased flakiness.
   
   Related public work: #13459, #13495, #13471, #12583, #12584, #6505, and 
#1198.
   
   ### Task list
   
   - [ ] Split `core` tests into explicit unit, H2, MySQL, and PostgreSQL 
lanes. A subtask will track this first change.
   - [ ] Isolate mutable database, schema, and process-global test state and 
remove hidden ordering dependencies.
   - [ ] Reuse backend fixtures once per test class for entity-storage tests 
tracked by #6505.
   - [ ] Generalize safe container and fixture reuse across compatible 
database-test groups.
   - [ ] Add backend-by-batch sharding while keeping execution sequential 
within each batch.
   - [ ] Evaluate bounded JVM forks only after isolation, reuse, and sharding, 
using repeated timing and reliability evidence.
   


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

Reply via email to