Skip to content

HBASE-29968 Upgrade hbase-mapreduce to use junit5#7992

Merged
liuxiaocs7 merged 1 commit intoapache:branch-3from
liuxiaocs7:HBASE-29968-branch-3
Mar 28, 2026
Merged

HBASE-29968 Upgrade hbase-mapreduce to use junit5#7992
liuxiaocs7 merged 1 commit intoapache:branch-3from
liuxiaocs7:HBASE-29968-branch-3

Conversation

@liuxiaocs7
Copy link
Copy Markdown
Member

@liuxiaocs7 liuxiaocs7 added the backport This PR is a back port of some issue or issues already committed to master label Mar 27, 2026
@liuxiaocs7 liuxiaocs7 requested a review from Copilot March 27, 2026 08:20
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Upgrades the hbase-mapreduce test suite to JUnit 5 (Jupiter) to align with HBASE-29968 and remove reliance on the JUnit Vintage engine.

Changes:

  • Migrates JUnit 4 tests to JUnit 5 (assertions, lifecycle annotations, categories → tags, rules → TestInfo)
  • Converts parameterized tests to JUnit 5 @ParameterizedTest / @MethodSource
  • Updates test dependencies (Mockito JUnit Jupiter) and removes junit-vintage-engine from hbase-mapreduce

Reviewed changes

Copilot reviewed 87 out of 87 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java Adds Jupiter lifecycle annotations to a shared replication test base used by mapreduce tests.
hbase-mapreduce/pom.xml Switches to Mockito’s JUnit 5 integration and removes JUnit Vintage engine from this module.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshotV2NoCluster.java Minor formatting change while migrating to JUnit 5 conventions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/VerifyReplicationTestBase.java Migrates replication verification base tests to JUnit 5 (TestInfo, Jupiter lifecycle, assertions).
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationZkConnectionUri.java Replaces JUnit 4 categories/class rules with JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationZkClusterKey.java Replaces JUnit 4 categories/class rules with JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationSecureClusterCredentials.java Converts JUnit 4 parameterized test to JUnit 5 @ParameterizedTest + @MethodSource.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationRpcConnectionUri.java Replaces JUnit 4 categories/class rules with JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationRecompareRunnable.java Migrates Mockito runner usage to JUnit 5 extension; updates assertions/lifecycle.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationCrossDiffHdfs.java Migrates to JUnit 5 lifecycle, tags, and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationAdjunct.java Migrates to JUnit 5 lifecycle/tags and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionToolNpeFix.java Migrates to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionTool.java Migrates to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.java Migrates to JUnit 5, including replacing assertTrue(..., false) with fail(...).
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALPlayer.java Migrates to JUnit 5 and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALInputFormat.java Migrates to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTimeRangeMapRed.java Migrates to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSplit.java Migrates to JUnit 5 tags and TestInfo-based naming.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.java Migrates to JUnit 5; replaces TestName rule with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableRecordReader.java Migrates to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableOutputFormat.java Migrates to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceUtil.java Migrates to JUnit 5 tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java Migrates base class lifecycle to JUnit 5.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java Migrates to JUnit 5 tags and exception assertions (assertThrows).
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.java Migrates to JUnit 5 lifecycle and assertion signatures.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.java Migrates to JUnit 5 lifecycle/tags and exception testing via assertThrows.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestSyncTable.java Migrates to JUnit 5 and replaces TestName rule with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestSimpleTotalOrderPartitioner.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRowCounter.java Migrates to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRoundRobinTableInputFormat.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRegionSizeCalculator.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultithreadedTableMapper.java Migrates to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormatImpl.java Migrates to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormat.java Migrates to JUnit 5 lifecycle/tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.java Migrates to JUnit 5 tags and TestInfo-based naming.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormat.java Migrates to JUnit 5 lifecycle/tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMRIncrementalLoadWithLocality.java Converts JUnit 4 parameterized test to JUnit 5 @ParameterizedTest.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMRIncrementalLoad.java Converts JUnit 4 parameterized test to JUnit 5 @ParameterizedTest.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestJarFinder.java Migrates categories/class rules to JUnit 5 tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTsvParser.java Migrates to JUnit 5 tags and replaces expected-exception annotations with assertThrows.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTsv.java Migrates to JUnit 5 lifecycle/tags; replaces ExpectedException with assertThrows.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithVisibilityLabels.java Migrates to JUnit 5 lifecycle/tags and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithTTLs.java Migrates to JUnit 5 lifecycle/tags and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithOperationAttributes.java Migrates to JUnit 5 lifecycle/tags and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportExport.java Normalizes JUnit 5 @Tag usage via import.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHashTable.java Migrates to JUnit 5 lifecycle/tags and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHRegionPartitioner.java Migrates to JUnit 5 lifecycle/tags and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2WithSecurity.java Migrates to JUnit 5 lifecycle/tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.java Migrates ignore/annotations and assertions to JUnit 5 equivalents.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHBaseMRTestingUtility.java Migrates categories/class rules to JUnit 5 tags and assertion signatures.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestGroupingTableMapper.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCopyTableToPeerClusterWithZkUri.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCopyTableToPeerClusterWithRpcUri.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCopyTableToPeerClusterWithClusterKey.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCopyTable.java Migrates to JUnit 5 lifecycle/tags and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestConfigurePartitioner.java Migrates to JUnit 5 lifecycle/tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCellCounter.java Migrates to JUnit 5 lifecycle/tags and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.java Migrates to JUnit 5 lifecycle and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.java Migrates to JUnit 5 lifecycle and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/MRIncrementalLoadTestBase.java Refactors parameterized support for JUnit 5 and updates assertion signatures.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2TestBase.java Migrates to JUnit 5 assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/CopyTableToPeerClusterTestBase.java Migrates to JUnit 5 lifecycle and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/CopyTableTestBase.java Adapts shared test helpers to use TestInfo instead of TestName rule.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.java Migrates mapred snapshot input format tests to JUnit 5 lifecycle/tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableOutputFormatConnectionExhaust.java Migrates to JUnit 5 lifecycle/tags and assertion signatures.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.java Migrates mapred tests to JUnit 5 lifecycle/tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableMapReduce.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableInputFormat.java Migrates to JUnit 5 lifecycle/tags and exception testing via assertThrows.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestSplitTable.java Migrates to JUnit 5 tags and replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestRowCounter.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestMultiTableSnapshotInputFormat.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestIdentityTableMap.java Migrates categories/class rules to JUnit 5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestGroupingTableMap.java Migrates categories/class rules to JUnit 5 tags and assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestDriver.java Migrates categories/class rules to JUnit 5 tags.
Comments suppressed due to low confidence (3)

hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/VerifyReplicationTestBase.java:1

  • VerifyReplicationTestBase extends TestReplicationBase, which already declares an @AfterAll teardown. In JUnit 5, superclass @AfterAll methods are executed automatically, so explicitly calling TestReplicationBase.tearDownAfterClass() here can cause the base teardown to run twice (double-closing tables, shutting down clusters twice, etc.). Remove the explicit call and rely on Jupiter's inherited lifecycle behavior; keep only the subclass-specific cleanup (htable3.close()).
    hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java:1
  • The same lifecycle method is annotated with both JUnit 4 (@BeforeClass) and JUnit 5 (@BeforeAll). If both JUnit Vintage and Jupiter engines are enabled for a given module/surefire configuration, this can execute twice and cause test flakiness (e.g., double-starting mini clusters). Prefer using only the JUnit 5 annotations in this shared base now that mapreduce is moving to Jupiter, or ensure only one engine is active where this class is executed.
    hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.java:1
  • Using assertEquals(null, ...) makes failures harder to read and loses intent. Prefer assertNull(...) for null checks in JUnit 5.

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

assertEquals(0, HBaseTestingUtil.countRows(table), "Should start with empty table");
int numRegions = r.getStartKeys().length;
assertEquals("Should make " + regionNum + " regions", numRegions, regionNum);
assertEquals(numRegions, regionNum, "Should make " + regionNum + " regions");
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

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

In JUnit 5, assertEquals(expected, actual, message) reports expected vs actual values on failure. Here numRegions (actual) and regionNum (expected) are reversed, which will produce confusing diagnostics if the assertion fails. Swap the arguments so regionNum is the expected value and numRegions is the actual value.

Suggested change
assertEquals(numRegions, regionNum, "Should make " + regionNum + " regions");
assertEquals(regionNum, numRegions, "Should make " + regionNum + " regions");

Copilot uses AI. Check for mistakes.
@liuxiaocs7 liuxiaocs7 merged commit d571e92 into apache:branch-3 Mar 28, 2026
16 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport This PR is a back port of some issue or issues already committed to master

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants