FrankChen021 commented on issue #13948:
URL: https://github.com/apache/druid/issues/13948#issuecomment-5225613611

   ### Proposed batching for `processing`, benchmarks, and cloud-common JUnit 5 
migration
   
   The previous processing migration branch changed about 300 files. After 
reviewing its shared fixtures, inheritance relationships, and cross-module test 
dependencies, the migration can be rebuilt as four independent PRs of 
approximately 50–80 files each.
   
   First, create one intentionally small shared prerequisite PR from the latest 
`master`. It should add JUnit 5 adapters while preserving the JUnit 4 APIs 
still used by other modules:
   
   - Add `CloserExtension` without changing or removing `CloserRule`.
   - Add `LoggerCaptureExtension` without changing or removing 
`LoggerCaptureRule`.
   - Add JUnit 5-compatible temp-directory overloads to `NestedDataTestUtils` 
while preserving its `TemporaryFolder` overloads.
   - Keep reusable groupBy factory behavior in `GroupByQueryRunnerTestHelper` 
without renaming existing APIs.
   - Reuse the `JupiterAssertions` and `TempDirExtension` support introduced by 
#19875.
   - Do not remove JUnit 4, Vintage, or Hamcrest dependencies in this 
prerequisite.
   
   After that prerequisite merges, create these sibling PRs directly from 
`master`. They will depend only on the shared prerequisite, not on one another:
   
   1. **Common utilities, data, timeline, benchmarks, and cloud common — about 
74 files**
      - Common Java utilities, collections, data-input tests, HLL, Guice, and 
timeline tests.
      - `cloud/aws-common` and `cloud/gcp-common` tests.
      - Benchmark tests.
      - Keep the benchmark Hamcrest dependency while inherited SQL test APIs 
still expose Hamcrest types.
   
   2. **Frame, expressions, nested data, segment filters, and joins — about 77 
files**
      - Frame tests and `FrameTestUtil` consumers.
      - Expression tests, `MacroTestBase`, and all of its subclasses.
      - Nested-data and virtual-column tests.
      - Segment filter and join tests, including the 
`BaseHashJoinSegmentCursorFactoryTest` hierarchy.
   
   3. **Segment core, serialization, and incremental indexes — about 56 files**
      - Segment core and column serialization tests.
      - Incremental-index tests.
      - `IndexMergerTestBase` and all of its subclasses.
      - Migrated users of the additive `CloserExtension`.
   
   4. **Query tests — about 73 files**
      - Aggregation, groupBy, scan, topN, timeseries, metadata, search, and 
other query families.
      - Keep `GroupByQueryRunnerTest` and its closely related tests in this 
batch.
      - Preserve public/shared test APIs used by extensions, server, MSQ, and 
benchmarks.
   
   During these four PRs, `processing/pom.xml` should retain JUnit 4, Vintage, 
and Hamcrest so that tests not yet migrated continue to compile. Shared 
Hamcrest APIs such as `DruidExceptionMatcher` and `ExceptionMatcher` should 
also remain unchanged because they are consumed by SQL, server, 
indexing-service, MSQ, embedded tests, and extensions.
   
   After all four migration PRs merge:
   
   - Create a focused processing dependency-cleanup PR to remove JUnit 4, 
Vintage, JUnitParams, migration-support, and obsolete rule dependencies that 
are no longer used.
   - Handle Hamcrest removal separately by first migrating its shared APIs and 
repository-wide consumers; avoid introducing a duplicate in-project matcher 
framework solely to replace Hamcrest.
   
   This structure keeps each main migration PR reviewable and independently 
compilable, while the only shared dependency is a small backward-compatible 
fixture PR.
   


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to