Skip to content

HBASE-30098 Rewrite RestoreSnapshotFromClientTestBase and its sub cla…#8107

Open
Apache9 wants to merge 2 commits intoapache:masterfrom
Apache9:HBASE-30098
Open

HBASE-30098 Rewrite RestoreSnapshotFromClientTestBase and its sub cla…#8107
Apache9 wants to merge 2 commits intoapache:masterfrom
Apache9:HBASE-30098

Conversation

@Apache9
Copy link
Copy Markdown
Contributor

@Apache9 Apache9 commented Apr 20, 2026

…sses

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 rewrites the RestoreSnapshotFromClient test hierarchy to use JUnit 5 style parameterized test templates (constructor-injected parameters via @HBaseParameterizedTestTemplate) instead of JUnit 4 Parameterized + rules, while keeping coverage for both normal and MOB snapshot restore scenarios.

Changes:

  • Migrate leaf test classes from JUnit4 @RunWith(Parameterized.class)/@Category to JUnit5 @HBaseParameterizedTestTemplate/@Tag with constructor parameter injection.
  • Refactor RestoreSnapshotFromClientTestBase to carry numReplicas, provide a shared parameters() stream, and use JUnit5 lifecycle hooks (@BeforeEach/@AfterEach/@AfterAll) and TestInfo for unique per-invocation naming.
  • Update test base subclasses to use @TestTemplate methods and pass numReplicas through to snapshot/table helpers.

Reviewed changes

Copilot reviewed 19 out of 19 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/client/TestRestoreSnapshotFromClientSimple.java Convert leaf test to JUnit5 template + constructor parameter.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSchemaChange.java Convert leaf test to JUnit5 template + constructor parameter.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientGetCompactionState.java Convert leaf test to JUnit5 template + constructor parameter.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientClone.java Convert leaf test to JUnit5 template + constructor parameter.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterTruncate.java Convert leaf test to JUnit5 template + constructor parameter.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterSplittingRegions.java Convert leaf test to JUnit5 template + constructor parameter.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSimple.java Convert MOB leaf test to JUnit5 template + constructor parameter; use numReplicas directly.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSchemaChange.java Convert MOB leaf test to JUnit5 template + constructor parameter; use numReplicas directly.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.java Convert MOB leaf test to JUnit5 template + constructor parameter; use numReplicas directly.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientClone.java Convert MOB leaf test to JUnit5 template + constructor parameter; use numReplicas directly.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.java Convert MOB leaf test to JUnit5 template + constructor parameter.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterSplittingRegions.java Convert MOB leaf test to JUnit5 template + constructor parameter.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientTestBase.java Central refactor: JUnit5 lifecycle, shared parameters(), store numReplicas, use TestInfo for unique names.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSimpleTestBase.java Switch tests to @TestTemplate and use numReplicas.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java Switch tests to @TestTemplate and accept numReplicas via constructor.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java Switch tests to @TestTemplate and accept numReplicas via constructor.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientCloneTestBase.java Switch tests to @TestTemplate and use numReplicas.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterTruncateTestBase.java Switch test to @TestTemplate and use numReplicas.
hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterSplittingRegionsTestBase.java Switch test to @TestTemplate and accept numReplicas via constructor.

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

Comment on lines 33 to 35
TableName tableName = TableName.valueOf(getValidMethodName());
SnapshotTestingUtils.createTable(TEST_UTIL, tableName, getNumReplicas(), FAMILY);
SnapshotTestingUtils.createTable(TEST_UTIL, tableName, numReplicas, FAMILY);
SnapshotTestingUtils.loadData(TEST_UTIL, tableName, 500, FAMILY);
Copy link

Copilot AI Apr 20, 2026

Choose a reason for hiding this comment

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

testRestoreSnapshotAfterTruncate creates and operates on a separate local tableName (shadowing the instance field), but @AfterEach in RestoreSnapshotFromClientTestBase only deletes the instance field table. This leaves the truncate-test table behind after each invocation, which can accumulate across parameter runs and other tests in the same JVM. Consider reusing the instance tableName created in @BeforeEach, or explicitly delete the locally-created table (e.g., via TEST_UTIL.deleteTableIfAny(...)) in a finally/@AfterEach hook for this test.

Copilot uses AI. Check for mistakes.
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