Skip to content

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

Merged
liuxiaocs7 merged 1 commit intoapache:branch-2from
liuxiaocs7:HBASE-29968-branch-2
Apr 4, 2026
Merged

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

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 28, 2026
@liuxiaocs7 liuxiaocs7 force-pushed the HBASE-29968-branch-2 branch from 3bd3290 to 1ac924a Compare March 28, 2026 17:51
@liuxiaocs7
Copy link
Copy Markdown
Member Author

Spotless check fails due to HBASE-29863, #7823

Let me file an addendum first

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

This PR updates the hbase-mapreduce module’s test suite to run on JUnit 5 (Jupiter) for branch-2 (HBASE-29968), modernizing test annotations/assertions and adjusting test dependencies accordingly.

Changes:

  • Migrates many mapreduce/mapred/replication tests from JUnit4 (@BeforeClass, @Category, JUnit4 assertions) to JUnit5 (@BeforeAll, @Tag, Jupiter assertions, TestInfo, etc.).
  • Updates Mockito usage for JUnit5 (switching the test dependency to mockito-junit-jupiter, adopting MockitoExtension, and using lenient() where needed).
  • Removes junit-vintage-engine from hbase-mapreduce’s test dependencies.

Reviewed changes

Copilot reviewed 75 out of 75 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java Adds JUnit5 lifecycle annotations alongside existing JUnit4 ones for shared replication test base.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshotV2NoCluster.java Minor formatting-only change.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/VerifyReplicationTestBase.java Migrates VerifyReplication tests to JUnit5, refactors class and lifecycle methods.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationSecureClusterCredentials.java Converts parameterized security test to JUnit5 @ParameterizedTest/@MethodSource.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationRecompareRunnable.java Converts to JUnit5 + MockitoExtension; adds lenient stubbing.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationCrossDiffHdfs.java Migrates to JUnit5 tags/lifecycle/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/replication/TestVerifyReplicationAdjunct.java Migrates to JUnit5; updates references to shared VerifyReplication helpers.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionToolNpeFix.java Migrates to JUnit5 tags and lifecycle hooks.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionTool.java Migrates to JUnit5 tags and lifecycle hooks.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.java Migrates to JUnit5; replaces “assertTrue(false)” patterns with fail(...).
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALPlayer.java Migrates to JUnit5; replaces TestName with TestInfo for unique table/output naming.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALInputFormat.java Migrates to JUnit5 tags/lifecycle hooks.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTimeRangeMapRed.java Migrates to JUnit5; simplifies assertion usage.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSplit.java Migrates to JUnit5; replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.java Migrates to JUnit5; replaces TestName with a TestInfo-derived method name.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableRecordReader.java Migrates to JUnit5 tags and lifecycle hooks.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableOutputFormat.java Migrates to JUnit5 tags/lifecycle; updates assertion argument ordering.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceUtil.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java Migrates shared MR test base to JUnit5 lifecycle annotations.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java Migrates to JUnit5 and replaces @Test(expected=...) with assertThrows.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYZYToEmpty.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYYToEmpty.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanYYXToEmpty.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOPPToEmpty.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToQPP.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanOBBToOPP.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToOPP.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToEmpty.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBB.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToBBA.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanEmptyToAPP.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.java Migrates base scan tests to JUnit5 lifecycle/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan.java Migrates to JUnit5 tags.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.java Migrates to JUnit5; replaces @Test(expected=...) with assertThrows; updates assertion messages.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestSyncTable.java Migrates to JUnit5; replaces TestName with TestInfo; updates assertion argument ordering.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestSimpleTotalOrderPartitioner.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRowCounter.java Migrates to JUnit5 tags/lifecycle/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRoundRobinTableInputFormat.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestRegionSizeCalculator.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultithreadedTableMapper.java Migrates to JUnit5 tags/lifecycle/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormatImpl.java Migrates to JUnit5 tags/lifecycle/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormat.java Migrates to JUnit5 tags/lifecycle.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.java Migrates to JUnit5; replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormat.java Migrates to JUnit5 lifecycle annotations.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestJarFinder.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithVisibilityLabels.java Migrates to JUnit5; replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithTTLs.java Migrates to JUnit5; replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTSVWithOperationAttributes.java Migrates to JUnit5; replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTsvParser.java Migrates to JUnit5; replaces @Test(expected=...) and try/catch with assertThrows.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportTsv.java Migrates to JUnit5; replaces ExpectedException with assertThrows; updates dry-run assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHRegionPartitioner.java Migrates to JUnit5; replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2WithSecurity.java Migrates to JUnit5 tags/lifecycle.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.java Migrates to JUnit5; replaces @Ignore with @Disabled; updates assertion ordering.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHBaseMRTestingUtility.java Migrates to JUnit5 tags/assertions; updates assertion parameter ordering.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestHashTable.java Migrates to JUnit5; replaces TestName with TestInfo; uses fail(...).
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestGroupingTableMapper.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCopyTable.java Migrates to JUnit5; replaces TestName with TestInfo and adapts base helpers.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCellCounter.java Migrates to JUnit5; replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.java Migrates shared snapshot test base to JUnit5 lifecycle/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.java Migrates shared multi-table test base to JUnit5 lifecycle/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/CopyTableToPeerClusterTestBase.java Refactors peer-cluster CopyTable tests into a new base class using JUnit5.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/CopyTableTestBase.java Updates shared CopyTable helpers to accept TestInfo instead of JUnit4 TestName.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.java Migrates mapred snapshot tests to JUnit5; replaces @Ignore with @Disabled.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableOutputFormatConnectionExhaust.java Migrates to JUnit5 tags/lifecycle.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.java Migrates to JUnit5 tags/lifecycle/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableMapReduce.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestTableInputFormat.java Migrates to JUnit5 tags/lifecycle; replaces @Test(expected=...) with assertThrows.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestSplitTable.java Migrates to JUnit5 tags; replaces TestName with TestInfo.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestRowCounter.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestMultiTableSnapshotInputFormat.java Migrates to JUnit5 tags (inherits mapreduce test logic).
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestIdentityTableMap.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestGroupingTableMap.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapred/TestDriver.java Migrates to JUnit5 tags/assertions.
hbase-mapreduce/pom.xml Switches to Jupiter + Mockito JUnit5 integration and removes the vintage engine.
Comments suppressed due to low confidence (2)

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

  • This class is declared abstract but contains many @Test methods, and there is currently no concrete subclass (no "extends VerifyReplicationTestBase" found in hbase-mapreduce/src/test/java). JUnit Jupiter will not run tests in an abstract test class, so the VerifyReplication test suite will be silently skipped. Make this class concrete again, or add a concrete Test* class that extends it so the tests execute.
    hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/CopyTableToPeerClusterTestBase.java:35
  • This class is abstract but includes multiple @Test methods, and there is no concrete subclass (no "extends CopyTableToPeerClusterTestBase" found in hbase-mapreduce/src/test/java). As a result, these peer-cluster CopyTable tests will not run under JUnit5. Either make this class concrete, or introduce a concrete TestCopyTableToPeerCluster* class extending it.

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

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

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


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

@liuxiaocs7 liuxiaocs7 force-pushed the HBASE-29968-branch-2 branch from 8578beb to 7fb4870 Compare April 2, 2026 11:58
@liuxiaocs7 liuxiaocs7 requested a review from Apache9 April 2, 2026 11:59
@liuxiaocs7
Copy link
Copy Markdown
Member Author

liuxiaocs7 commented Apr 3, 2026

After verification, the unit tests before and after the patch are completely consistent, so let me create the backport for other branches.

@liuxiaocs7 liuxiaocs7 force-pushed the HBASE-29968-branch-2 branch from 17d17fa to dfc8f30 Compare April 3, 2026 07:19
@liuxiaocs7 liuxiaocs7 merged commit 0dcfe23 into apache:branch-2 Apr 4, 2026
40 of 45 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