HBASE-30041 Upgrade hbase-server to use junit5 Part4#8000
HBASE-30041 Upgrade hbase-server to use junit5 Part4#8000liuxiaocs7 wants to merge 1 commit intoapache:masterfrom
Conversation
liuxiaocs7
commented
Mar 28, 2026
- see: HBASE-30041
There was a problem hiding this comment.
Pull request overview
This PR continues the JUnit4 → JUnit5 migration for hbase-server tests (HBASE-30041), updating assertions/annotations, category tagging, and parameterization patterns to align with the repository’s JUnit5 approach.
Changes:
- Migrates many test classes from
org.junit.*toorg.junit.jupiter.*(assertions + lifecycle annotations). - Replaces JUnit4
@Categorywith JUnit5@Tagusing the*.TAGconstants from the testclassification classes. - Converts JUnit4 Parameterized tests to the repo’s
@HBaseParameterizedTestTemplate+parameters()+@TestTemplatemodel, and replacesTestNamewithTestInfowhere needed.
Reviewed changes
Copilot reviewed 74 out of 74 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/wal/WALCorruptionWithMultiPutDueToDanglingByteBufferTestBase.java | Switch JUnit assertions/@Test to JUnit5 equivalents. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/WALCorruptionDueToDanglingByteBufferTestBase.java | Switch JUnit assertions/@Test to JUnit5 equivalents. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWrongMetaWALFileName.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll/@AfterAll. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplitWithDeletedTableData.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll/@AfterAll. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplitValueCompression.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplitToHFile.java | Migrate JUnit4 rules/lifecycle/assertions to JUnit5; replace TestName with TestInfo. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplitCompressed.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplitBoundedLogWriterCreation.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplit.java | JUnit5 migration: assertions, assumptions, lifecycle, and expected exceptions → assertThrows. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALRootDir.java | JUnit5 migration: assertions + lifecycle annotations; remove class rule. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALProvider.java | Replace @Category/rules with JUnit5 @Tag; switch assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALOpenAfterDNRollingStart.java | Convert JUnit4 Parameterized → @HBaseParameterizedTestTemplate + parameters() + @TestTemplate. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALMethods.java | Replace @Category/rules with JUnit5 @Tag; switch assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFiltering.java | Replace @Category/rules with JUnit5 lifecycle + tags; switch assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java | Replace TestName rule with TestInfo; migrate assertions/lifecycle to JUnit5. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestSecureWAL.java | Convert JUnit4 Parameterized → @HBaseParameterizedTestTemplate; migrate assertions/lifecycle to JUnit5. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestRecoveredEditsOutputSink.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll/@AfterAll; switch assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestReadWriteSeqIdFiles.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll/@AfterAll; switch assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestRaceBetweenGetWALAndGetWALs.java | Replace @Category/rules with JUnit5 @Tag; switch assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestParsePartialWALFile.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll/@AfterAll; switch assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestOutputSinkWriter.java | Switch assertions to JUnit5 and remove JUnit4 Assert usage. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogProvider.java | Replace TestName rule with TestInfo; migrate assertions/lifecycle to JUnit5. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionWithMultiPutDueToDanglingByteBuffer.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll/@AfterAll. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogCorruptionDueToDanglingByteBuffer.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll/@AfterAll. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestDisabledWAL.java | Replace TestName rule with TestInfo; migrate assertions/lifecycle to JUnit5. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestCompressedWALValueCompression.java | Convert JUnit4 Parameterized → @HBaseParameterizedTestTemplate + parameters(); JUnit5 lifecycle. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestCompressedWAL.java | Convert JUnit4 Parameterized → @HBaseParameterizedTestTemplate + parameters(); JUnit5 lifecycle. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestAsyncFSWALCorruptionDueToDanglingByteBuffer.java | Replace @Category/rules with JUnit5 @Tag + @BeforeAll/@AfterAll. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/wal/CompressedWALTestBase.java | Switch assertions/@Test to JUnit5 equivalents. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactorTTL.java | Replace TestName rule usage with TestInfo; migrate assertions/lifecycle to JUnit5. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactor.java | Migrate assertions/lifecycle + categories to JUnit5 tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionTTLRequest.java | Migrate assertions/lifecycle + categories to JUnit5 tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionRequest.java | Migrate assertions/lifecycle + categories to JUnit5 tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestZKStringFormatter.java | Replace @Category/rules with JUnit5 @Tag + @BeforeEach; switch assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestTableDescriptorChecker.java | JUnit5 migration; convert assertThrows calls to Jupiter signature. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestStealJobQueue.java | JUnit5 migration for assertions and lifecycle annotations. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestSortedList.java | Replace wildcard assert import with explicit JUnit5 assertions; switch to @Tag. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRootPath.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionSplitter.java | Replace TestName rule with TestInfo for per-test table naming; JUnit5 lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionSplitCalculator.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMoverWithRSGroupEnable.java | JUnit5 migration for lifecycle + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMoverUseIp.java | Replace TestName rule with TestInfo; migrate to JUnit5 assertions/lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMover3.java | Replace TestName rule usage with TestInfo; migrate to JUnit5 assertions/lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMover2.java | Replace TestName rule with TestInfo; migrate to JUnit5 assertions/lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMover1.java | Replace TestName rule with TestInfo; migrate to JUnit5 assertions/lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestProcDispatcher.java | Replace TestName rule usage with TestInfo; migrate to JUnit5 assertions/lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestLossyCounting.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestJSONMetricUtil.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestIdReadWriteLockWithObjectPool.java | Convert JUnit4 Parameterized → @HBaseParameterizedTestTemplate; migrate assertions/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestIdReadWriteLockStrongRef.java | JUnit5 migration; use Jupiter assertions instead of Assert. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestIdLock.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHFileArchiveUtil.java | Replace TestName rule usage with TestInfo for TableName creation; JUnit5 tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckWithoutTableHbaseReplication.java | JUnit5 migration; use TestInfo and Jupiter lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckReplication.java | Replace TestName rule usage with TestInfo; JUnit5 assertions/lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckMOB.java | JUnit5 migration; @Ignore → @Disabled, tags, and TestInfo injection. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.java | JUnit5 migration; @Ignore → @Disabled, tags, and Jupiter assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckComparator.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckCleanReplicationBarriers.java | JUnit5 migration for assertions/lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseConfTool.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestFSVisitor.java | JUnit5 migration for assertions/lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestFSUtils.java | JUnit5 migration for assertions/lifecycle/tags; adjust assertion argument ordering. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestFSTableDescriptors.java | Replace JUnit4 expected exceptions with assertThrows; use TestInfo for per-test dirs. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestEncryptionTest.java | Replace JUnit4 expected exceptions with assertThrows; migrate to JUnit5 tags/assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestDefaultEnvironmentEdge.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.java | Convert JUnit4 Parameterized → @HBaseParameterizedTestTemplate; JUnit5 lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestConnectionCache.java | JUnit5 migration for lifecycle + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestConfigurationUtil.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java | Replace wildcard assert import with explicit Jupiter assertions; migrate to tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestByteBuffUtils.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestBoundedPriorityBlockingQueue.java | JUnit5 migration for assertions/lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestBloomFilterChunk.java | JUnit5 migration for assertions + tagging. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/util/BaseTestHBaseFsck.java | Remove JUnit4 TestName rule field in base test class. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupMajorCompactionTTL.java | JUnit5 migration for lifecycle/tags and replace TestName usage with TestInfo. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| TableName tableName = | ||
| TableName.valueOf(testMethodName.replaceAll("[^a-zA-Z0-9]", "_")); | ||
| NavigableMap<byte[], Integer> scopes = new TreeMap<>(Bytes.BYTES_COMPARATOR); |
There was a problem hiding this comment.
This class is executed as a @TestTemplate with multiple walProvider parameters, but TableName is derived only from the Java method name (testSecureWAL). Unlike the old JUnit4 Parameterized + TestName behavior, JUnit5's testInfo.getTestMethod().get().getName() does not include the invocation index/parameter value, so different parameter invocations will reuse the same table/WAL identifiers and can collide with leftover state (WAL files, dirs). Build the name from testInfo.getDisplayName() and/or walProvider (and keep the sanitization) to guarantee uniqueness per invocation, or explicitly clean the WAL root between invocations.