Skip to content

HBASE-30041 Upgrade hbase-server to use junit5 Part4#8000

Draft
liuxiaocs7 wants to merge 1 commit intoapache:masterfrom
liuxiaocs7:HBASE-30041
Draft

HBASE-30041 Upgrade hbase-server to use junit5 Part4#8000
liuxiaocs7 wants to merge 1 commit intoapache:masterfrom
liuxiaocs7:HBASE-30041

Conversation

@liuxiaocs7
Copy link
Copy Markdown
Member

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 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.* to org.junit.jupiter.* (assertions + lifecycle annotations).
  • Replaces JUnit4 @Category with JUnit5 @Tag using the *.TAG constants from the testclassification classes.
  • Converts JUnit4 Parameterized tests to the repo’s @HBaseParameterizedTestTemplate + parameters() + @TestTemplate model, and replaces TestName with TestInfo where 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.

Comment on lines +98 to 100
TableName tableName =
TableName.valueOf(testMethodName.replaceAll("[^a-zA-Z0-9]", "_"));
NavigableMap<byte[], Integer> scopes = new TreeMap<>(Bytes.BYTES_COMPARATOR);
Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
@liuxiaocs7 liuxiaocs7 marked this pull request as draft March 28, 2026 19:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants