Skip to content

HBASE-30136 Upgrade hbase-server to use junit5 Part15#8185

Open
liuxiaocs7 wants to merge 3 commits intoapache:masterfrom
liuxiaocs7:HBASE-30136
Open

HBASE-30136 Upgrade hbase-server to use junit5 Part15#8185
liuxiaocs7 wants to merge 3 commits intoapache:masterfrom
liuxiaocs7:HBASE-30136

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 unit tests from JUnit 4 to JUnit 5 as part of the ongoing HBASE-30136 effort, aligning tests with Jupiter annotations/assertions and updating parameterization patterns used across the codebase.

Changes:

  • Replaces JUnit4 annotations/rules (@Before, @After, @Rule, @RunWith(Parameterized.class), @Category, etc.) with JUnit5 equivalents (@BeforeEach, @AfterEach, @Tag, @TestTemplate, etc.).
  • Updates assertions to org.junit.jupiter.api.Assertions and refactors expected-exception patterns to assertThrows.
  • Converts parameterized tests to use @HBaseParameterizedTestTemplate / Jupiter parameter sources and updates temp-dir usage from TemporaryFolder to @TempDir.

Reviewed changes

Copilot reviewed 57 out of 57 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/storefiletracker/TestChangeStoreFileTracker.java Replace TableName JUnit extension usage with TestInfo and JUnit5 lifecycle.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.java Convert JUnit4 rules/categories to JUnit5 @Tag + TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestFlushRegionEntry.java Migrate lifecycle and assertions to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.java Migrate categories/lifecycle hooks to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.java Replace JUnit4 rule-based naming and assertions with JUnit5 equivalents.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.java Move from Assume/rules to Jupiter Assumptions + TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java Convert lifecycle, categories, and assertion signatures to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.java Convert lifecycle/categories/assertions to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.java Convert lifecycle/rules to JUnit5 TestInfo + assertion updates.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEncryptionDisabled.java Replace ExpectedException rule with assertThrows and JUnit5 lifecycle.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDirectStoreSplitsMerges.java Replace rules/categories with JUnit5 @Tag and TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.java Migrate JUnit4 Assert usage and lifecycle to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.java Replace JUnit4 asserts/categories with JUnit5 equivalents.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java Convert lifecycle/rules to JUnit5 TestInfo and update assertion signatures.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.java Replace JUnit4 categories/asserts with JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.java Replace categories/rules with JUnit5 tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyHeterogeneousStorage.java Replace categories/rules with JUnit5 tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.java Replace categories/rules with JUnit5 tags.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDataTieringManager.java Replace categories/rules/assertions with JUnit5 equivalents.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDataBlockEncodingTool.java Replace JUnit4 lifecycle/categories with JUnit5; resolve Tag name conflict.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.java Replace categories/assertions with JUnit5 equivalents.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCustomCellDataTieringManager.java Replace categories/lifecycle/assertions with JUnit5 equivalents; adjust javadoc link.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.java Replace categories/lifecycle/assertions with JUnit5 equivalents.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactorMemLeak.java Replace lifecycle/rules with JUnit5 TestInfo and update assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionWithShippingCoprocessor.java Replace lifecycle/rules/categories with JUnit5 @Tag + TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.java Replace categories/rules with JUnit5 tags (inherits base test behavior).
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionWithByteBuff.java Replace lifecycle/categories with JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionState.java Convert JUnit4 parameterization/rules to JUnit5 @HBaseParameterizedTestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionPolicy.java Convert lifecycle hooks to JUnit5 and update assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.java Replace categories/lifecycle and JUnit4 @Ignore with JUnit5 @Disabled.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.java Convert JUnit4 Parameterized runner to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionFileNotFound.java Convert lifecycle/categories and failures to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.java Convert lifecycle/rules to JUnit5 TestInfo; update assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionArchiveConcurrentClose.java Convert lifecycle/rules to JUnit5 TestInfo; update assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionAfterBulkLoad.java Convert to @HBaseParameterizedTestTemplate and update temp-dir handling.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompaction.java Convert lifecycle/rules/categories and disabled utility method to JUnit5 equivalents.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.java Convert JUnit4 parameterized class to Jupiter parameterized class pattern + lifecycle updates.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.java Convert lifecycle/categories to JUnit5 and adjust setup/teardown ordering.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.java Convert lifecycle and failure handling to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestColumnSeeking.java Replace rules/categories with JUnit5 @Tag + TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestClusterId.java Convert lifecycle/categories to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.java Convert JUnit4 parameterization to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCleanupMetaWAL.java Convert lifecycle/categories to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.java Convert lifecycle/categories/assertions to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileAfterFailover.java Convert lifecycle/categories/assertions to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.java Replace rules/categories with JUnit5 @Tag + TestInfo.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCellFlatSet.java Convert JUnit4 parameterization to @HBaseParameterizedTestTemplate + @TestTemplate.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.java Convert JUnit4 parameterization to @HBaseParameterizedTestTemplate; use TestInfo naming.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBytesReadServerSideScanMetrics.java Convert lifecycle/rules/categories to JUnit5 @Tag + TestInfo; update assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBulkloadBase.java Replace TemporaryFolder/TestName with @TempDir + TestInfo; update parameter source.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBulkLoad.java Convert to @HBaseParameterizedTestTemplate and replace expected-exception annotations with assertThrows.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBrokenStoreFileCleaner.java Convert lifecycle/categories/assertions to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBootstrapNodeManager.java Convert lifecycle/categories/assertions to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBloomFilterFaulty.java Convert lifecycle/rules/categories to JUnit5 TestInfo + updated assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBlocksScanned.java Convert lifecycle/categories to JUnit5.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBlocksRead.java Convert lifecycle/rules/categories to JUnit5 TestInfo + updated assertions.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java Convert lifecycle/rules/categories to JUnit5 TestInfo; update assertions/javadoc link.

💡 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 56 out of 56 changed files in this pull request and generated no new comments.


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

@AfterAll
public static void after() throws Exception {
TEST_UTIL.shutdownMiniZKCluster();
TEST_UTIL.shutdownMiniCluster();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OK, we fixed an old bug here...

@After
@AfterEach
public void teardown() throws Exception {
HTU.shutdownMiniCluster();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This means we need to restart the cluster for every test method? Can file another issue to dig more, maybe we should split this to two tests, where we start cluster with different cacheType.

@Override
public void setUp() throws Exception {
@BeforeEach
public void setUp(TestInfo testInfo) throws Exception {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is the behavior expected? Better introduce some dummy abstract method and call it in the parent test class, and implement the dummy method in this sub class, so it will be more clear?

}
} catch (InterruptedException e) {
Assume.assumeNoException(e);
Assumptions.abort(e.getMessage());
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a bit strange, anyway, can be a separated issue.

LOG.error("Got an exception during compaction", e);
if (e instanceof FileNotFoundException) {
Assert.fail("Got a FNFE during compaction");
fail("Got a FNFE during compaction");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

A bit strange that why not just throw the exception out...

regionServer.getCompactSplitThread().onConfigurationChange(conf);
} catch (IllegalArgumentException iae) {
Assert.fail("Update bigger configuration failed!");
fail("Update bigger configuration failed!");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It is not good that we eat the exception information...

"History size has not increased");
long t = memstore.timeOfOldestEdit();
assertTrue("Time of oldest edit is not Long.MAX_VALUE", t == Long.MAX_VALUE);
assertTrue(t == Long.MAX_VALUE, "Time of oldest edit is not Long.MAX_VALUE");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

assertEquals

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