FrankChen021 commented on issue #13948: URL: https://github.com/apache/druid/issues/13948#issuecomment-5311580979
## Updated JUnit 5 migration plan The plan was refreshed against the latest `master` (`cea0d99504`, August 17, 2026). The following migration work is already merged: - [#19875](https://github.com/apache/druid/pull/19875): selected `extensions-core` tests. - [#19908](https://github.com/apache/druid/pull/19908): extensions-contrib tests plus shared processing `TestHelper` and group-by support. - [#19909](https://github.com/apache/druid/pull/19909) and [#19939](https://github.com/apache/druid/pull/19939): SQL leaf/core migrations. - [#19910](https://github.com/apache/druid/pull/19910), [#19920](https://github.com/apache/druid/pull/19920), [#19922](https://github.com/apache/druid/pull/19922), [#19923](https://github.com/apache/druid/pull/19923), [#19925](https://github.com/apache/druid/pull/19925), and [#19926](https://github.com/apache/druid/pull/19926): indexing-service/indexing migrations. - [#19940](https://github.com/apache/druid/pull/19940), [#19981](https://github.com/apache/druid/pull/19981), and [#19982](https://github.com/apache/druid/pull/19982): processing migration batches and shared JUnit 5 extensions. The original large server migration [#19911](https://github.com/apache/druid/pull/19911) was closed without merging. The latest `master` still contains the following JUnit 4 or Hamcrest source usage: | Module | Source files | |---|---:| | `server` | 379 | | `services` | 20 | | `embedded-tests` | 17 | ### Remaining server migration batches | PR | Scope | Approximate files | |---|---|---:| | PR1 | Remaining shared server-fixture adaptations, client/query tests, and query-serving tests | 70–80 | | PR2 | Metadata, segment metadata, catalog, Guice, lookup, and server indexing tests | 70–80 | | PR3 | Remaining segment tests, RPC, Curator, discovery, messages, and general initialization | 65–75 | | PR4 | Coordinator tests, duties, rules, loading, balancing, simulations, and compaction | 70–80 | | PR5 | Server coordination, metrics, logging, security, scheduling, broker, audit, and remaining server tests | 70–80 | | PR6 | `services`, `embedded-tests`, HTTP, and Jetty/server initialization tests | 70–80 | The shared-fixture portion of PR1 is now small because the processing helpers are already on `master`. PR1 only needs to address the remaining server cross-module cases: - make `QueryStackTests` and its consumers use `GroupByQueryRunnerTestHelper` instead of the JUnit 4-based `GroupByQueryRunnerTest`; - preserve or improve the Jupiter-compatible Derby connector while retaining the legacy rule adapter; and - migrate the client/query tests that consume these fixtures. ### Dependency structure Under this six-PR plan, PR1 is the only prerequisite. PR2–PR6 are independent siblings and should each branch directly from `master` after PR1 merges. They must not be stacked on one another. ```text PR1: shared server fixtures + first server batch | merged into master / / | \ \ PR2 PR3 PR4 PR5 PR6 \ \ | / / final cleanup ``` If all six migration PRs must be completely independent, the remaining shared server-fixture changes should first be extracted into a separate small foundation PR. Then PR1–PR6 can all branch from the updated `master`, at the cost of one additional prerequisite PR. JUnit 4, Vintage, migration-support, and Hamcrest dependencies must remain until the remaining processing Batch 4 ([#19980](https://github.com/apache/druid/pull/19980)), MSQ, indexing-service, server, services, and embedded tests are migrated. The final cleanup PR will then remove those dependencies, the obsolete OpenRewrite migration rule, and `dev/validate-junit5-usage` after a repository-wide audit and static-check run. -- 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]
