HBASE-30098 Rewrite RestoreSnapshotFromClientTestBase and its sub cla…#8107
HBASE-30098 Rewrite RestoreSnapshotFromClientTestBase and its sub cla…#8107Apache9 wants to merge 2 commits intoapache:masterfrom
Conversation
There was a problem hiding this comment.
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)/@Categoryto JUnit5@HBaseParameterizedTestTemplate/@Tagwith constructor parameter injection. - Refactor
RestoreSnapshotFromClientTestBaseto carrynumReplicas, provide a sharedparameters()stream, and use JUnit5 lifecycle hooks (@BeforeEach/@AfterEach/@AfterAll) andTestInfofor unique per-invocation naming. - Update test base subclasses to use
@TestTemplatemethods and passnumReplicasthrough 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.
| 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); |
There was a problem hiding this comment.
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.
…sses