HBASE-30138 Upgrade hbase-server to use junit5 Part16#8191
Draft
liuxiaocs7 wants to merge 2 commits intoapache:masterfrom
Draft
HBASE-30138 Upgrade hbase-server to use junit5 Part16#8191liuxiaocs7 wants to merge 2 commits intoapache:masterfrom
liuxiaocs7 wants to merge 2 commits intoapache:masterfrom
Conversation
Member
liuxiaocs7
commented
May 4, 2026
- see: HBASE-30138
There was a problem hiding this comment.
Pull request overview
This PR continues the HBASE-30138 effort to migrate hbase-server tests from JUnit4 to JUnit5, updating lifecycle annotations, assertions, categories/tags, and converting JUnit4 parameterized/rule patterns to their JUnit5 equivalents (including HBase’s @HBaseParameterizedTestTemplate).
Changes:
- Migrated numerous RegionServer-related tests from JUnit4 (
@Before/@After/@Category/@RunWith, Rules) to JUnit5 (@BeforeEach/@AfterEach/@Tag, extensions,TestInfo). - Converted JUnit4 parameterized tests to JUnit5
@TestTemplate+@HBaseParameterizedTestTemplatewithStream<Arguments> parameters(). - Updated assertions to JUnit5
org.junit.jupiter.api.Assertionsstyles and modern exception assertions (assertThrows).
Reviewed changes
Copilot reviewed 51 out of 51 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/regionserver/TestNotCleanupCompactedFileWhenRegionWarmup.java | JUnit5 lifecycle/tag/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestNewVersionBehaviorFromClientSide.java | Replace JUnit4 rules with TestInfo-based naming and JUnit5 annotations. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMutateRowsRecovery.java | JUnit5 lifecycle/tag/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControlBasic.java | Replace @Category with @Tag, JUnit5 assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.java | Replace JUnit4 Assert usage with JUnit5 assertions and tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.java | Convert JUnit4 parameterized test to @HBaseParameterizedTestTemplate + @TestTemplate. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithNoneAndUseDataEncoding.java | Convert parameterized runner to @HBaseParameterizedTestTemplate + constructor params. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithNoneAndNoDataEncoding.java | Convert parameterized runner to @HBaseParameterizedTestTemplate + constructor params. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithAlgoGZAndUseDataEncoding.java | Convert parameterized runner to @HBaseParameterizedTestTemplate + constructor params. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithAlgoGZAndNoDataEncoding.java | Convert parameterized runner to @HBaseParameterizedTestTemplate + constructor params. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.java | Refactor parameter handling for JUnit5 @TestTemplate and Stream<Arguments>. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMinVersions.java | Replace JUnit4 rules with TestInfo, JUnit5 tags/assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMinorCompaction.java | Replace TestName rule with TestInfo, JUnit5 lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.java | JUnit5 tag/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsUserAggregate.java | JUnit5 lifecycle/tags migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableRequests.java | JUnit5 tag/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableMetricsMap.java | JUnit5 lifecycle/tags/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java | JUnit5 lifecycle/tags/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionWrapperTableDescriptorHash.java | JUnit5 lifecycle/tags/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServerAggregate.java | JUnit5 tag/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java | JUnit5 lifecycle/tags migration (keeps registry cleanup). |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegion.java | JUnit5 tag migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsJvm.java | Migrate junit.framework/JUnit4 assertions to JUnit5; JUnit5 lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.java | JUnit5 lifecycle/tags/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMergesSplitsAddToTracker.java | Replace deprecated TableNameTestRule with TableNameTestExtension; JUnit5 migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.java | JUnit5 lifecycle/tags/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.java | Convert @Ignore to @Disabled; JUnit5 tags/lifecycle/assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java | JUnit5 lifecycle/tags/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreFlusher.java | Replace TestName rule with TestInfo; JUnit5 migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.java | JUnit5 lifecycle/tags/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMaxResultsPerColumnFamily.java | Replace TestName rule with TestInfo; JUnit5 lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMajorCompaction.java | Convert JUnit4 parameterized runner to @HBaseParameterizedTestTemplate + @TestTemplate. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java | JUnit5 lifecycle/tags/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestKeyValueScanFixture.java | JUnit5 tag/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.java | JUnit5 tag/assert migration; modernize assertThrows import. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestKeepDeletes.java | Replace TestName rule with TestInfo; JUnit5 lifecycle/tags/assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestJoinedScanners.java | Replace @Test(expected=...) with assertThrows; JUnit5 lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.java | Replace TestName rule with TestInfo; JUnit5 lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestInputStreamBlockDistribution.java | JUnit5 lifecycle/tags/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStoreFile.java | Replace TestName rule with TestInfo; JUnit5 lifecycle/tags/assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java | Replace TestName rule with TestInfo; migrate JUnit timeout to @Timeout. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.java | JUnit5 tag/assert migration for subclass of TestHRegion. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionTracing.java | Migrate OpenTelemetry + TableName helpers to JUnit5 extensions and lifecycle annotations. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.java | Convert JUnit4 parameterized runner to @HBaseParameterizedTestTemplate + @TestTemplate. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.java | Replace TestName rule with TestInfo; JUnit5 lifecycle/tags/assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.java | Replace TestName rule with TestInfo; JUnit5 lifecycle/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionFileSystem.java | Replace TestName rule with TestInfo; JUnit5 lifecycle/tags/assertions. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java | Large-scale JUnit5 migration: rules → TestInfo, expected-exception → assertThrows, tags/lifecycle updates. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHMobStore.java | Replace TestName rule with TestInfo; migrate to JUnit5 assertions/tags. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.java | JUnit5 tag/assert migration. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.java | JUnit5 lifecycle/tags/assert migration. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+117
to
+123
| @BeforeEach | ||
| public void setUp(TestInfo testInfo) throws Exception { | ||
| this.name = testInfo.getTestMethod().get().getName(); | ||
| this.htd = | ||
| UTIL.createTableDescriptor(TableName.valueOf(name.replace('[', 'i').replace(']', 'i')), | ||
| ColumnFamilyDescriptorBuilder.DEFAULT_MIN_VERSIONS, 3, HConstants.FOREVER, | ||
| ColumnFamilyDescriptorBuilder.DEFAULT_KEEP_DELETED); |
| @Before | ||
| public void setUp() throws IOException { | ||
| @BeforeEach | ||
| public void setUp() throws Throwable { |
Comment on lines
92
to
98
| ChunkCreator.initialize(MemStoreLAB.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null, | ||
| MemStoreLAB.INDEX_CHUNK_SIZE_PERCENTAGE_DEFAULT); | ||
| wal = HBaseTestingUtil.createWal(UTIL.getConfiguration(), | ||
| new Path(UTIL.getDataTestDir(), tableName.getNameAsString()), null); | ||
| region = HRegion.createHRegion(info, UTIL.getDataTestDir(), UTIL.getConfiguration(), desc, wal); | ||
| region = UTIL.createLocalHRegion(info, desc); | ||
| } |
Comment on lines
44
to
49
| @Test | ||
| public void testMetricsTableLatencies() { | ||
| TableName tn1 = TableName.valueOf("table1"); | ||
| TableName tn2 = TableName.valueOf("table2"); | ||
| MetricsTableRequests requests1 = new MetricsTableRequests(tn1, new Configuration()); | ||
| MetricsTableRequests requests2 = new MetricsTableRequests(tn2, new Configuration()); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.