Skip to content

test: migrate extensions-contrib tests to JUnit 5 - #19908

Open
FrankChen021 wants to merge 6 commits into
apache:masterfrom
FrankChen021:codex/junit5-migrate-extensions-contrib
Open

test: migrate extensions-contrib tests to JUnit 5#19908
FrankChen021 wants to merge 6 commits into
apache:masterfrom
FrankChen021:codex/junit5-migrate-extensions-contrib

Conversation

@FrankChen021

@FrankChen021 FrankChen021 commented Aug 6, 2026

Copy link
Copy Markdown
Member

Part of #13948.

Summary

This PR migrates the remaining extensions-contrib test source usage from JUnit 4 to JUnit 5.

  • All migrated extensions-contrib test sources use Jupiter tests and assertions.
  • Hamcrest-free assertions are used throughout, including druid-exact-count-bitmap.
  • Direct test-scoped junit:junit and org.hamcrest:hamcrest declarations have been removed from the remaining contrib POMs.
  • No production code changes are included.

Stacking and prerequisite policy

This PR intentionally owns only extensions-contrib. It does not duplicate or modify shared SQL or server fixtures.

The coordinated prerequisite stack is:

  • The SQL/Quidem batch owns BaseCalciteQueryTest, DruidExceptionAssertions, QueryTestRunner, and the related SQL test migrations. The validated local prerequisite ref is codex/tmp-junit5-sql-quidem at 07c84bc5ce3443236836d3d462c84a5ed65602d5.
  • The server batch owns server/QueryStackTests and its related server fixture migrations. The validated local prerequisite ref is codex/tmp-junit5-server at f725c2c490294a7d6089e0e0b4063c080012b1ac.

Those shared paths are deliberately absent from this PR. The prerequisite branches are not currently published as upstream PR branches, so this PR remains based on master; once those batches are published or merged, rebase/retarget this contrib-only branch onto that stack before merging.

Against current upstream master alone, SQL test compilation for the inherited contrib fixtures still requires the org.hamcrest.Matcher signatures exposed by the pre-migration BaseCalciteQueryTest, and the old server fixture still contains JUnit 4 runtime usage. Those are the exact prerequisite dependencies; this PR does not retain compatibility declarations for them. This is a shared SQL/server prerequisite issue, not a dependency on #19875 itself.

Related migration PRs: #19875, #19876, #19877, #19878, #19879, #19880, #19881, and #19882.

Validation

  • CloudFiles focused tests: 3 tests passed, 0 failures: CloudFilesObjectApiProxyTest and CloudFilesByteSourceTest.
  • Exact-count SQL test: 5 tests passed, 0 failures in a temporary local compatibility classpath used only to exercise the migrated contrib test; the temporary JUnit 4/Hamcrest overlay was removed before commit.
  • Checkstyle and SpotBugs for the six affected contrib modules (the five dependency-cleanup modules plus CloudFiles): build passed, 0 Checkstyle violations, 0 SpotBugs bugs/errors.
  • Source audit: no JUnit 4, Hamcrest, Matcher<...>, or Hamcrest assertThat usage remains under extensions-contrib/**/src/test.
  • POM audit: no direct JUnit 4/Vintage/JUnitParams/Hamcrest declarations remain under extensions-contrib.
  • git diff --check: passed.

The two Copilot comments on CloudFiles were fixed in 901605720b and are now handled as resolved/outdated threads: the assertion argument order is corrected, and the first openStream() call uses Assertions.assertThrows(IOException.class, ...).

Copilot AI lite review requested due to automatic review settings August 6, 2026 17:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Migrates remaining extensions-contrib test suites from JUnit 4 to JUnit 5 (Jupiter), updating test code and module POMs to remove legacy JUnit 4/Vintage/Hamcrest/JUnitParams usage where possible.

Changes:

  • Updated Java test sources to use JUnit Jupiter annotations/assertions (including parameterized tests and exception assertions).
  • Updated module POMs to add JUnit Jupiter dependencies and remove JUnit 4 / Vintage / JUnitParams / unnecessary Hamcrest dependencies.
  • Introduced a small JUnit 5 helper (DeltaAssertions) to replace Hamcrest-based DruidException matchers in Delta Lake tests.

Reviewed changes

Copilot reviewed 202 out of 202 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnTopNTest.java Migrates TopN tests from JUnit 4 rules to JUnit 5 assertions.
extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnGroupByTest.java Migrates GroupBy tests from JUnit 4 lifecycle/assertions to JUnit 5.
extensions-contrib/virtual-columns/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java Migrates parameterized tests from JUnit 4 runner to JUnit 5 @ParameterizedTest.
extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorFactoryTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/time-min-max/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/Vintage-related deps.
extensions-contrib/thrift-extensions/src/test/java/org/apache/druid/data/input/thrift/ThriftInputFormatTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/thrift-extensions/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 + Hamcrest deps.
extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchToQuantilesPostAggregatorTest.java Migrates ExpectedException rule to JUnit 5 assertThrows.
extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchToQuantilePostAggregatorTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchObjectStrategyTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorFactoryTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/tdigestsketch/pom.xml Adds JUnit Jupiter deps; retains test Hamcrest for inherited Matcher signatures.
extensions-contrib/statsd-emitter/src/test/java/org/apache/druid/emitter/statsd/StatsDEmitterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/statsd-emitter/src/test/java/org/apache/druid/emitter/statsd/DimensionConverterTest.java Migrates assertions/imports to JUnit 5 (JUnit 5 message arg order).
extensions-contrib/statsd-emitter/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/sqlserver-metadata-storage/src/test/java/org/apache/druid/metadata/storage/sqlserver/SQLServerConnectorTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/sqlserver-metadata-storage/src/test/java/org/apache/druid/metadata/storage/sqlserver/CustomStatementRewriterTest.java Migrates lifecycle/assertions to JUnit 5; replaces junit.framework.Assert usage.
extensions-contrib/sqlserver-metadata-storage/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/spectator-histogram/src/test/java/org/apache/druid/spectator/histogram/sql/SpectatorHistogramSqlAggregatorTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/spectator-histogram/src/test/java/org/apache/druid/spectator/histogram/SpectatorHistogramIndexBasedComplexColumnTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/spectator-histogram/pom.xml Adds JUnit Jupiter deps + mockito-junit-jupiter; retains Hamcrest for inherited Matcher signatures.
extensions-contrib/redis-cache/src/test/java/org/apache/druid/client/cache/RedisClusterCacheTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/redis-cache/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/Hamcrest dependency declarations.
extensions-contrib/rabbit-stream-indexing-service/src/test/java/org/apache/druid/indexing/rabbitstream/RabbitStreamIndexTaskIOConfigTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/rabbit-stream-indexing-service/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/Hamcrest deps.
extensions-contrib/prometheus-emitter/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/opentsdb-emitter/src/test/java/org/apache/druid/emitter/opentsdb/OpentsdbSenderTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/opentsdb-emitter/src/test/java/org/apache/druid/emitter/opentsdb/OpentsdbEventTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/opentsdb-emitter/src/test/java/org/apache/druid/emitter/opentsdb/OpentsdbEmitterConfigTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/opentsdb-emitter/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/opentelemetry-emitter/src/test/java/org/apache/druid/emitter/opentelemetry/OpenTelemetryEmitterTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/opentelemetry-emitter/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongSumAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongSumAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongMinAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongMinAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongMeanNoNullAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongMeanNoNullAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongMeanAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongMeanAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongMaxAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/LongMaxAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleSumAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleSumAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleMinAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleMinAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleMeanNoNullAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleMeanNoNullAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleMeanAveragerWithPeriodTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleMeanAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleMeanAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleMaxAveragerTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/DoubleMaxAveragerFactoryTest.java Replaces Hamcrest instance checks with JUnit 5 assertInstanceOf.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/BaseAveragerFactoryTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/averagers/AveragerFactoryWrapperTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/PostAveragerAggregatorCalculatorTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/MovingAverageQueryTest.java Migrates from JUnit 4 parameterized runner to Jupiter parameterized tests.
extensions-contrib/moving-average-query/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/Hamcrest deps.
extensions-contrib/momentsketch/src/test/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchQuantilePostAggregatorTest.java Migrates ExpectedException rule to JUnit 5 assertThrows.
extensions-contrib/momentsketch/src/test/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMinPostAggregatorTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/momentsketch/src/test/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMaxPostAggregatorTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/momentsketch/src/test/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchAggregatorFactoryTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/momentsketch/src/test/java/org/apache/druid/query/aggregation/momentsketch/MomentSketchWrapperTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/momentsketch/src/test/java/org/apache/druid/query/aggregation/momentsketch/MomentSketchObjectStrategyTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/momentsketch/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/kafka-emitter/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/Hamcrest deps.
extensions-contrib/influxdb-emitter/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/influx-extensions/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/JUnitParams/Hamcrest deps.
extensions-contrib/grpc-query/src/test/java/org/apache/druid/grpc/client/GrpcResponseHandlerTest.java Migrates static assertions to JUnit 5.
extensions-contrib/grpc-query/src/test/java/org/apache/druid/grpc/GrpcQueryTest.java Migrates static assertions to JUnit 5.
extensions-contrib/grpc-query/src/test/java/org/apache/druid/grpc/DriverTest.java Migrates static assertions to JUnit 5.
extensions-contrib/grpc-query/src/test/java/org/apache/druid/grpc/BasicAuthTest.java Migrates assertions to JUnit 5 (including assertThrows).
extensions-contrib/grpc-query/pom.xml Adds JUnit Jupiter deps; retains test Hamcrest for inherited Matcher signatures.
extensions-contrib/graphite-emitter/src/test/java/org/apache/druid/emitter/graphite/GraphiteEmitterConfigTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/graphite-emitter/src/test/java/org/apache/druid/emitter/graphite/DruidToWhiteListBasedConverterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/graphite-emitter/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/JUnitParams deps.
extensions-contrib/gce-extensions/src/test/java/org/apache/druid/indexing/overlord/autoscaling/gce/GceUtilsTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/gce-extensions/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/druid-ranger-security/src/test/java/org/apache/druid/security/ranger/authorizer/RangerAuthorizerTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/druid-ranger-security/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/RestCatalogTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/ResidualFilterModeTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/LocalCatalogTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/HiveIcebergCatalogTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/input/GlueIcebergCatalogTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergTimeWindowFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergRangeFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergOrFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergNotFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergIntervalFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergEqualsFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/src/test/java/org/apache/druid/iceberg/filter/IcebergAndFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-iceberg-extensions/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaTimeUtilsTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputSourceSerdeTest.java Migrates assertions/imports to JUnit 5; replaces assertThrows.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/input/DeltaInputRowTest.java Removes Hamcrest matcher usage, adopts DeltaAssertions helper.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaOrFilterTest.java Replaces Hamcrest-based exception matcher with DeltaAssertions.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaNotFilterTest.java Replaces Hamcrest-based exception matcher with DeltaAssertions.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanOrEqualsFilterTest.java Replaces Hamcrest-based exception matcher with DeltaAssertions.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaLessThanFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanOrEqualsFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaGreaterThanFilterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaEqualsFilterTest.java Replaces Hamcrest-based exception matcher with DeltaAssertions.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaAndFilterTest.java Replaces Hamcrest-based exception matcher with DeltaAssertions.
extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/DeltaAssertions.java Adds a JUnit 5 helper assertion for INVALID_INPUT DruidExceptions.
extensions-contrib/druid-deltalake-extensions/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/Vintage/Hamcrest deps.
extensions-contrib/dropwizard-emitter/src/test/java/org/apache/druid/emitter/dropwizard/DropwizardEmitterConfigTest.java Migrates lifecycle/assertions to JUnit 5; calls base setup in @BeforeEach.
extensions-contrib/dropwizard-emitter/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/distinctcount/src/test/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountTopNQueryTest.java Migrates lifecycle annotations to JUnit 5.
extensions-contrib/distinctcount/src/test/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountTimeseriesQueryTest.java Migrates @Test import to JUnit 5.
extensions-contrib/distinctcount/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/Vintage/Hamcrest deps.
extensions-contrib/ddsketch/src/test/java/org/apache/druid/query/aggregation/ddsketch/DDSketchToQuantilesPostAggregatorTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/ddsketch/src/test/java/org/apache/druid/query/aggregation/ddsketch/DDSketchToQuantilePostAggregatorTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/ddsketch/src/test/java/org/apache/druid/query/aggregation/ddsketch/DDSketchObjectStrategyTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/ddsketch/src/test/java/org/apache/druid/query/aggregation/ddsketch/DDSketchAggregatorFactoryTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/ddsketch/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulServiceIdsTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulLeaderSelectorTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeDiscoveryProviderTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulDruidNodeAnnouncerTest.java Migrates lifecycle/assertions to JUnit 5; removes JUnit4 runner.
extensions-contrib/consul-extensions/src/test/java/org/apache/druid/consul/discovery/ConsulClientsSecurityTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/consul-extensions/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumSqlAggregatorTest.java Migrates assertThrows static import to JUnit 5.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorTimeseriesTest.java Adds Jupiter @Test annotations on overrides.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorTest.java Adds Jupiter @Test annotation on override.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/sum/CompressedBigDecimalSumAggregatorGroupByTest.java Converts JUnit 4 parameterized constructor pattern to Jupiter method parameterization.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinSqlAggregatorTest.java Migrates assertThrows static import to JUnit 5.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorTimeseriesTest.java Adds Jupiter @Test annotations on overrides.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorTest.java Adds Jupiter @Test annotation on override.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/min/CompressedBigDecimalMinAggregatorGroupByTest.java Converts JUnit 4 runner to Jupiter parameterized test method.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorTimeseriesTest.java Adds Jupiter @Test annotations on overrides.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorTest.java Adds Jupiter @Test annotation on override.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/max/CompressedBigDecimalMaxAggregatorGroupByTest.java Converts JUnit 4 parameterized constructor pattern to Jupiter method parameterization.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTestBase.java Migrates base test helper assertions to JUnit 5.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalColumnTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/CompressedBigDecimalCachingTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/ByteBufferCompressedBigDecimalTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/compressed-bigdecimal/pom.xml Adds JUnit Jupiter deps; retains test Hamcrest for inherited Matcher signatures; removes JUnit 4/Vintage deps.
extensions-contrib/cloudfiles-extensions/src/test/java/org/apache/druid/storage/cloudfiles/CloudFilesObjectApiProxyTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/cloudfiles-extensions/src/test/java/org/apache/druid/storage/cloudfiles/CloudFilesDataSegmentPusherTest.java Migrates TemporaryFolder rule to JUnit 5 @TempDir.
extensions-contrib/cloudfiles-extensions/src/test/java/org/apache/druid/storage/cloudfiles/CloudFilesByteSourceTest.java Migrates assertions/imports and test annotation to JUnit 5.
extensions-contrib/cloudfiles-extensions/pom.xml Adds JUnit Jupiter deps; removes JUnit 4 dependency.
extensions-contrib/ambari-metrics-emitter/src/test/java/org/apache/druid/emitter/ambari/metrics/DruidToWhiteListBasedConverterTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/ambari-metrics-emitter/src/test/java/org/apache/druid/emitter/ambari/metrics/AmbariMetricsEmitterTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/ambari-metrics-emitter/src/test/java/org/apache/druid/emitter/ambari/metrics/AmbariMetricsEmitterConfigTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/ambari-metrics-emitter/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/JUnitParams deps.
extensions-contrib/aliyun-oss-extensions/src/test/java/org/apache/druid/storage/aliyun/OssTimestampVersionedDataFinderTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/aliyun-oss-extensions/src/test/java/org/apache/druid/storage/aliyun/OssStorageDruidModuleTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/aliyun-oss-extensions/src/test/java/org/apache/druid/storage/aliyun/OssObjectSummaryIteratorTest.java Migrates assert message argument order to JUnit 5.
extensions-contrib/aliyun-oss-extensions/src/test/java/org/apache/druid/storage/aliyun/OssDataSegmentPusherTest.java Migrates TemporaryFolder rule to JUnit 5 @TempDir, updates assertions.
extensions-contrib/aliyun-oss-extensions/src/test/java/org/apache/druid/storage/aliyun/OssDataSegmentPusherConfigTest.java Migrates assertions/imports to JUnit 5.
extensions-contrib/aliyun-oss-extensions/src/test/java/org/apache/druid/storage/aliyun/OssDataSegmentKillerTest.java Migrates from JUnit4 EasyMockRunner to JUnit5 EasyMockExtension.
extensions-contrib/aliyun-oss-extensions/src/test/java/org/apache/druid/storage/aliyun/OssDataSegmentArchiverTest.java Migrates lifecycle/assertions to JUnit 5.
extensions-contrib/aliyun-oss-extensions/pom.xml Adds JUnit Jupiter deps; removes JUnit 4/Hamcrest(3.0) dependency declarations.
Suppressed comments (2)

extensions-contrib/druid-deltalake-extensions/src/test/java/org/apache/druid/delta/filter/DeltaNotFilterTest.java:1

  • Typo in the asserted message: 'requiers' should be 'requires'. If this string mirrors a production error message, updating the production message and this assertion together will improve consistency and user-facing readability.
    extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java:1
  • This method name reads like a test case but is used as a per-invocation initializer for parameterized inputs. Renaming it to something like initParams(...) / setUpParams(...) (and keeping it non-public if possible) would make its intent clearer when scanning the test class.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@FrankChen021

Copy link
Copy Markdown
Member Author

Dependency ownership update: the shared SQL fixture migration is now PR #19909, the shared indexing fixtures are #19910, and the server fixtures are #19911. This contrib PR remains limited to extensions-contrib and keeps no JUnit 4 or Hamcrest compatibility declarations. Part of #13948.

@FrankChen021 FrankChen021 left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Audit of all 34 extensions-contrib/**/pom.xml files and all 563 Java files found one real issue:

  • extensions-contrib/druid-exact-count-bitmap/pom.xml removed the legacy JUnit 4/Hamcrest dependencies and retained junit-jupiter-api, but omitted junit-jupiter-engine even though the module contains JUnit 5 tests. The fix adds the test-scoped Jupiter engine.

The full audit found zero remaining JUnit 4-related or Hamcrest imports and zero stale junit:junit, Vintage, JUnitParams, system-rules, or direct Hamcrest dependencies in extensions-contrib. The focused Bitmap64ExactCountModuleTest passed (1 test, 0 failures).

Fix committed as 6f8ef24e897e8c636af0c93491e22c402b32a310 and pushed to codex/junit5-migrate-extensions-contrib.

Reviewed 204 PR-changed files under extensions-contrib.


This is an automated review by Codex GPT-5.5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants