Skip to content

HBASE-30124 Upgrade hbase-server to use junit5 Part14#8151

Open
liuxiaocs7 wants to merge 4 commits intoapache:masterfrom
liuxiaocs7:HBASE-30124
Open

HBASE-30124 Upgrade hbase-server to use junit5 Part14#8151
liuxiaocs7 wants to merge 4 commits intoapache:masterfrom
liuxiaocs7:HBASE-30124

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

Migrates a large set of hbase-server tests from JUnit 4 to JUnit Jupiter (JUnit 5) as part of the ongoing HBASE-30124 upgrade effort.

Changes:

  • Replaces JUnit4 annotations/rules/categories (@Before/@After, @BeforeClass/@AfterClass, @Rule, @Category, @RunWith(Parameterized.class)) with JUnit5 equivalents (@BeforeEach/@AfterEach, @BeforeAll/@AfterAll, @Tag, @TestTemplate, extensions).
  • Updates assertions to org.junit.jupiter.api.Assertions signatures (including message-parameter ordering changes).
  • Converts several parameterized tests to use @HBaseParameterizedTestTemplate with parameters() returning Stream<Arguments> and constructor injection.

Reviewed changes

Copilot reviewed 83 out of 83 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/wal/WALDurabilityTestBase.java Switches to JUnit5 lifecycle and assertions; replaces TestName rule usage.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALSyncTimeoutException.java Migrates to JUnit5 annotations/tags and Assertions; removes JUnit4 rules/categories.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplayValueCompression.java Migrates to JUnit5 and adjusts inheritance/override patterns for WAL creation.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplayCompressed.java Migrates to JUnit5 and adjusts inheritance/override patterns for WAL creation.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplayBoundedLogWriterCreation.java Migrates to JUnit5 and refactors setup/WAL creation hooks.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java Adds JUnit5 @BeforeAll and factors WAL creation into helper for reuse.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALEdit.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALConfiguration.java Converts parameterized test to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALCellCodecWithCompression.java Converts to @HBaseParameterizedTestTemplate + @TestTemplate, updates assertions/import conflicts.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.java Migrates to JUnit5 lifecycle and tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSyncFutureCache.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSyncFuture.java Replaces JUnit4 expected-exception style with assertThrows.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.java Migrates to JUnit5 assertions/tags and updates message ordering.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSecureWALReplay.java Migrates to JUnit5 and adjusts setup + WAL creation override.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSecureAsyncWALReplay.java Migrates to JUnit5 setup/tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestProtobufLog.java Migrates to JUnit5 tags and removes JUnit4 class rule.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestMetricsWAL.java Migrates to JUnit5 and replaces TestName rule with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.java Migrates to JUnit5 tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRolling.java Migrates to JUnit5 tags/setup and updates assertion message ordering.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollPeriod.java Migrates to JUnit5 and explicitly invokes base-class setup.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollAbort.java Converts parameterized JUnit4 test to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHBaseWalOnEC.java Converts parameterized JUnit4 test to @HBaseParameterizedTestTemplate + lifecycle updates.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestFSWALEntry.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestFSHLogDurability.java Migrates to JUnit5 tags and corrects test classification usage.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java Migrates to JUnit5; replaces TestName rule usage with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestDurability.java Converts parameterized JUnit4 test to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.java Migrates to JUnit5 and replaces expected-exception annotation with assertThrows.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestCompressor.java Migrates to JUnit5 and replaces expected-exception annotation with assertThrows.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestCombinedAsyncWriter.java Migrates to JUnit5; replaces TestName rule usage with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncWALReplayValueCompression.java Migrates to JUnit5 setup/tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncWALReplayCompressed.java Migrates to JUnit5 setup/tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncWALReplay.java Migrates to JUnit5 lifecycle; ensures setup is executed only for this class via TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncProtobufLog.java Migrates to JUnit5 lifecycle/tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncLogRolling.java Migrates to JUnit5 lifecycle/tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncLogRollPeriod.java Migrates to JUnit5 and explicitly invokes base-class setup.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWALRollStuck.java Migrates to JUnit5 lifecycle/tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWALDurability.java Migrates to JUnit5 tags/lifecycle and corrects test classification usage.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWAL.java Migrates to JUnit5 lifecycle/tags and adapts to base test-name changes.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogTestHelper.java Migrates assertions to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java Migrates to JUnit5 lifecycle and replaces TestName rule usage with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestProtobufLog.java Migrates to JUnit5 lifecycle and replaces TestName rule usage with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRolling.java Migrates to JUnit5 lifecycle; replaces TestName rule usage with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRollPeriod.java Migrates to JUnit5 teardown; setup invoked explicitly by subclasses.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java Migrates to JUnit5 lifecycle; replaces TestName rule usage with TestInfo; converts expected exceptions to assertThrows.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/throttle/TestStoreHotnessProtector.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/throttle/TestFlushWithThroughputController.java Migrates to JUnit5 lifecycle/tags; replaces TestName rule usage with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/throttle/TestCompactionWithThroughputController.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileTrackerValidationUtils.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileTrackerFactory.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileListFilePrinter.java Migrates to JUnit5; replaces deprecated TableNameTestRule with TableNameTestExtension.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileListFile.java Migrates to JUnit5 lifecycle/tags; replaces TestName rule usage with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/storefiletracker/TestRegionWithFileBasedStoreFileTracker.java Migrates to JUnit5 lifecycle/tags; replaces TestName rule usage with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/storefiletracker/TestMigrationStoreFileTracker.java Converts parameterized JUnit4 test to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/storefiletracker/TestChangeStoreFileTracker.java Migrates to JUnit5; replaces deprecated TableNameTestRule with TableNameTestExtension; converts expected exceptions to assertThrows.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/regionreplication/TestStartupWithLegacyRegionReplicationEndpoint.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/regionreplication/TestRegionReplicationSinkCallbackAndFlushConcurrently.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/regionreplication/TestRegionReplicationSink.java Migrates to JUnit5 lifecycle; replaces deprecated TableNameTestRule with TableNameTestExtension.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/regionreplication/TestRegionReplicationForWriteException.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/regionreplication/TestRegionReplicationForSkipWAL.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/regionreplication/TestRegionReplicationForFlushMarker.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/regionreplication/TestRegionReplicationFlushRequester.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/regionreplication/TestRegionReplicationBufferManager.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/querymatcher/TestUserScanQueryMatcher.java Migrates to JUnit5 tags/tests/assertions with updated message ordering.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/querymatcher/TestScanWildcardColumnTracker.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/querymatcher/TestScanDeleteTracker.java Migrates to JUnit5 lifecycle/tags/assertions; replaces wildcard static import.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/querymatcher/TestExplicitColumnTracker.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/querymatcher/TestCompactionScanQueryMatcher.java Migrates to JUnit5 tags/tests/assertions with updated message ordering.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/querymatcher/AbstractTestScanQueryMatcher.java Migrates setup from @Before to @BeforeEach.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/metrics/TestMetricsThrottleExceptions.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/http/TestRSStatusPage.java Migrates to JUnit5 lifecycle/tags; replaces TestName rule usage with TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestStripeCompactor.java Converts parameterized JUnit4 test to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestStripeCompactionPolicy.java Converts parameterized JUnit4 test to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestRowKeyDateTieringValueProvider.java Migrates to JUnit5 lifecycle/tags and converts expected exceptions to assertThrows.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestOffPeakHours.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.java Migrates to JUnit5; replaces ExpectedException rule with assertThrows + message assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestDateTieredCompactor.java Converts parameterized JUnit4 test to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.java Migrates to JUnit5 lifecycle/tags/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestCurrentHourProvider.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestCompactor.java Migrates assertions to JUnit5 and updates message ordering.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestCompactedHFilesDischarger.java Migrates to JUnit5 lifecycle/tags/assertions with updated message ordering.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestCloseChecker.java Migrates to JUnit5 tags/tests/assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/PerfTestCompactionPolicies.java Converts parameterized JUnit4 test to @HBaseParameterizedTestTemplate + @TestTemplate.

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

Comment on lines +74 to 77
@TestTemplate
public void testEncodeDecodeOffKVsWithTagsWithTagsCompression() throws Exception {
doTest(true, false);
}
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

testEncodeDecodeOffKVsWithTagsWithTagsCompression currently calls doTest(true, false), which exercises the on-heap KV path. Given the test name and doTest(..., offheapKV) signature, this should likely pass true for the offheapKV argument so the off-heap encoding/decoding path is actually covered.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Will file another jira to resolve this issue

Copy link
Copy Markdown
Member Author

@liuxiaocs7 liuxiaocs7 Apr 28, 2026

Choose a reason for hiding this comment

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

see: HBASE-30128 and #8158

@liuxiaocs7 liuxiaocs7 requested a review from Copilot April 27, 2026 16:29
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 83 out of 83 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (5)

hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRollPeriod.java:1

  • setUpBeforeClass is no longer annotated, so it won't run under JUnit 5. This will likely break subclasses (e.g., TestLogRollPeriod, TestAsyncLogRollPeriod) that depend on the mini cluster being started here. Add @BeforeAll (and the corresponding import) to this method.
    hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java:1
  • setUpBeforeClass lost its lifecycle annotation during the JUnit 4 -> 5 migration, so it will not execute automatically for concrete subclasses. Since this is the shared base for WAL replay tests (and already has an @AfterAll teardown), restore a @BeforeAll annotation here instead of relying on each subclass to call it manually.
    hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/throttle/TestStoreHotnessProtector.java:1
  • JUnit Jupiter's assertEquals signature is assertEquals(expected, actual), but these calls are using actual first. While equality checks still pass when values match, failures will report inverted expected/actual and can be misleading. Swap argument order (or use assertNull(exception.get()) for the first assertion).
    hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSyncFuture.java:1
  • This assertThrows block includes assertions for behavior that should not throw (the first get(timeout)), and it will stop executing at the first thrown exception. To make the test intent clearer and ensure the non-throwing path is always verified, keep assertEquals(txid, syncFuture.get(timeout)) outside the assertThrows, and wrap only the final syncFuture.reset(...).get(timeout) call.
    hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRolling.java:1
  • There are two @BeforeEach methods in the same class, and JUnit 5 does not guarantee a stable execution order across JVMs/tools. If setUp() or downstream methods rely on name being initialized first, this can become flaky. Prefer folding name initialization into setUp(TestInfo testInfo) (single @BeforeEach) or otherwise ensuring deterministic ordering.

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

# Conflicts:
#	hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollAbort.java
@liuxiaocs7
Copy link
Copy Markdown
Member Author

I checked, and the number of UTs is the same before and after the modification

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.

3 participants