This is an automated email from the ASF dual-hosted git repository.

Apache9 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new 60e22abcbd8 HBASE-30098 Rewrite RestoreSnapshotFromClientTestBase and 
its sub classes (#8107)
60e22abcbd8 is described below

commit 60e22abcbd89461092799a73975874724e624e98
Author: Duo Zhang <[email protected]>
AuthorDate: Fri Apr 24 18:38:16 2026 +0800

    HBASE-30098 Rewrite RestoreSnapshotFromClientTestBase and its sub classes 
(#8107)
    
    Signed-off-by: Xiao Liu <[email protected]>
---
 ...hotFromClientAfterSplittingRegionsTestBase.java |  8 +++-
 ...oreSnapshotFromClientAfterTruncateTestBase.java | 42 +++++++++++--------
 .../RestoreSnapshotFromClientCloneTestBase.java    | 18 +++++----
 ...apshotFromClientGetCompactionStateTestBase.java | 10 +++--
 ...toreSnapshotFromClientSchemaChangeTestBase.java | 12 ++++--
 .../RestoreSnapshotFromClientSimpleTestBase.java   | 22 +++++-----
 .../client/RestoreSnapshotFromClientTestBase.java  | 47 +++++++++++-----------
 ...oreSnapshotFromClientAfterSplittingRegions.java | 23 ++++++-----
 ...tMobRestoreSnapshotFromClientAfterTruncate.java | 23 ++++++-----
 .../TestMobRestoreSnapshotFromClientClone.java     | 23 ++++++-----
 ...estoreSnapshotFromClientGetCompactionState.java | 23 ++++++-----
 ...stMobRestoreSnapshotFromClientSchemaChange.java | 23 ++++++-----
 .../TestMobRestoreSnapshotFromClientSimple.java    | 23 ++++++-----
 ...oreSnapshotFromClientAfterSplittingRegions.java | 36 ++++++-----------
 ...TestRestoreSnapshotFromClientAfterTruncate.java | 36 ++++++-----------
 .../client/TestRestoreSnapshotFromClientClone.java | 36 ++++++-----------
 ...estoreSnapshotFromClientGetCompactionState.java | 36 ++++++-----------
 .../TestRestoreSnapshotFromClientSchemaChange.java | 36 ++++++-----------
 .../TestRestoreSnapshotFromClientSimple.java       | 36 ++++++-----------
 19 files changed, 238 insertions(+), 275 deletions(-)

diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterSplittingRegionsTestBase.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterSplittingRegionsTestBase.java
index a065c1efb42..823a0fb091a 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterSplittingRegionsTestBase.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterSplittingRegionsTestBase.java
@@ -20,12 +20,16 @@ package org.apache.hadoop.hbase.client;
 import java.io.IOException;
 import java.util.List;
 import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
-import org.junit.Test;
+import org.junit.jupiter.api.TestTemplate;
 
 public class RestoreSnapshotFromClientAfterSplittingRegionsTestBase
   extends RestoreSnapshotFromClientTestBase {
 
-  @Test
+  protected RestoreSnapshotFromClientAfterSplittingRegionsTestBase(int 
numReplicas) {
+    super(numReplicas);
+  }
+
+  @TestTemplate
   public void testRestoreSnapshotAfterSplittingRegions() throws IOException, 
InterruptedException {
     List<RegionInfo> regionInfos = admin.getRegions(tableName);
     RegionReplicaUtil.removeNonDefaultRegions(regionInfos);
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterTruncateTestBase.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterTruncateTestBase.java
index f4c2e13564a..3f9cf8c1347 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterTruncateTestBase.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterTruncateTestBase.java
@@ -19,30 +19,38 @@ package org.apache.hadoop.hbase.client;
 
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
-import org.junit.Test;
+import org.junit.jupiter.api.TestTemplate;
 
 public class RestoreSnapshotFromClientAfterTruncateTestBase
   extends RestoreSnapshotFromClientTestBase {
 
-  @Test
+  protected RestoreSnapshotFromClientAfterTruncateTestBase(int numReplicas) {
+    super(numReplicas);
+  }
+
+  @TestTemplate
   public void testRestoreSnapshotAfterTruncate() throws Exception {
     TableName tableName = TableName.valueOf(getValidMethodName());
-    SnapshotTestingUtils.createTable(TEST_UTIL, tableName, getNumReplicas(), 
FAMILY);
-    SnapshotTestingUtils.loadData(TEST_UTIL, tableName, 500, FAMILY);
-    int numOfRows = 0;
+    SnapshotTestingUtils.createTable(TEST_UTIL, tableName, numReplicas, 
FAMILY);
+    try {
+      SnapshotTestingUtils.loadData(TEST_UTIL, tableName, 500, FAMILY);
+      int numOfRows = 0;
 
-    try (Table table = TEST_UTIL.getConnection().getTable(tableName)) {
-      numOfRows = countRows(table);
-    }
-    // take snapshot
-    admin.snapshot("snap", tableName);
-    admin.disableTable(tableName);
-    admin.truncateTable(tableName, false);
-    admin.disableTable(tableName);
-    admin.restoreSnapshot("snap");
+      try (Table table = TEST_UTIL.getConnection().getTable(tableName)) {
+        numOfRows = countRows(table);
+      }
+      // take snapshot
+      admin.snapshot("snap", tableName);
+      admin.disableTable(tableName);
+      admin.truncateTable(tableName, false);
+      admin.disableTable(tableName);
+      admin.restoreSnapshot("snap");
 
-    admin.enableTable(tableName);
-    verifyRowCount(TEST_UTIL, tableName, numOfRows);
-    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
getNumReplicas());
+      admin.enableTable(tableName);
+      verifyRowCount(TEST_UTIL, tableName, numOfRows);
+      SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
numReplicas);
+    } finally {
+      TEST_UTIL.deleteTable(tableName);
+    }
   }
 }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientCloneTestBase.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientCloneTestBase.java
index 584d4f03b60..d1481c28c48 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientCloneTestBase.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientCloneTestBase.java
@@ -21,17 +21,21 @@ import java.io.IOException;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-import org.junit.Test;
+import org.junit.jupiter.api.TestTemplate;
 
 public class RestoreSnapshotFromClientCloneTestBase extends 
RestoreSnapshotFromClientTestBase {
 
-  @Test
+  protected RestoreSnapshotFromClientCloneTestBase(int numReplicas) {
+    super(numReplicas);
+  }
+
+  @TestTemplate
   public void testCloneSnapshotOfCloned() throws IOException, 
InterruptedException {
     TableName clonedTableName =
       TableName.valueOf(getValidMethodName() + "-" + 
EnvironmentEdgeManager.currentTime());
     admin.cloneSnapshot(snapshotName0, clonedTableName);
     verifyRowCount(TEST_UTIL, clonedTableName, snapshot0Rows);
-    SnapshotTestingUtils.verifyReplicasCameOnline(clonedTableName, admin, 
getNumReplicas());
+    SnapshotTestingUtils.verifyReplicasCameOnline(clonedTableName, admin, 
numReplicas);
     admin.disableTable(clonedTableName);
     admin.snapshot(snapshotName2, clonedTableName);
     TEST_UTIL.deleteTable(clonedTableName);
@@ -39,25 +43,25 @@ public class RestoreSnapshotFromClientCloneTestBase extends 
RestoreSnapshotFromC
 
     admin.cloneSnapshot(snapshotName2, clonedTableName);
     verifyRowCount(TEST_UTIL, clonedTableName, snapshot0Rows);
-    SnapshotTestingUtils.verifyReplicasCameOnline(clonedTableName, admin, 
getNumReplicas());
+    SnapshotTestingUtils.verifyReplicasCameOnline(clonedTableName, admin, 
numReplicas);
     TEST_UTIL.deleteTable(clonedTableName);
   }
 
-  @Test
+  @TestTemplate
   public void testCloneAndRestoreSnapshot() throws IOException, 
InterruptedException {
     TEST_UTIL.deleteTable(tableName);
     waitCleanerRun();
 
     admin.cloneSnapshot(snapshotName0, tableName);
     verifyRowCount(TEST_UTIL, tableName, snapshot0Rows);
-    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
getNumReplicas());
+    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
numReplicas);
     waitCleanerRun();
 
     admin.disableTable(tableName);
     admin.restoreSnapshot(snapshotName0);
     admin.enableTable(tableName);
     verifyRowCount(TEST_UTIL, tableName, snapshot0Rows);
-    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
getNumReplicas());
+    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
numReplicas);
   }
 
   private void waitCleanerRun() throws InterruptedException {
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java
index 2dedd4bd4a6..ffcf1f76135 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java
@@ -17,15 +17,19 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.IOException;
-import org.junit.Test;
+import org.junit.jupiter.api.TestTemplate;
 
 public class RestoreSnapshotFromClientGetCompactionStateTestBase
   extends RestoreSnapshotFromClientTestBase {
 
-  @Test
+  protected RestoreSnapshotFromClientGetCompactionStateTestBase(int 
numReplicas) {
+    super(numReplicas);
+  }
+
+  @TestTemplate
   public void testGetCompactionStateAfterRestoringSnapshot()
     throws IOException, InterruptedException {
     // Take a snapshot
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java
index c05818397c2..3d89abe3b5d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.IOException;
 import java.util.HashSet;
@@ -31,11 +31,15 @@ import 
org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.CommonFSUtils;
 import org.apache.hadoop.hbase.util.FSUtils;
-import org.junit.Test;
+import org.junit.jupiter.api.TestTemplate;
 
 public class RestoreSnapshotFromClientSchemaChangeTestBase
   extends RestoreSnapshotFromClientTestBase {
 
+  protected RestoreSnapshotFromClientSchemaChangeTestBase(int numReplicas) {
+    super(numReplicas);
+  }
+
   private Set<String> getFamiliesFromFS(final TableName tableName) throws 
IOException {
     MasterFileSystem mfs = 
TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterFileSystem();
     Set<String> families = new HashSet<>();
@@ -52,7 +56,7 @@ public class RestoreSnapshotFromClientSchemaChangeTestBase
     return ColumnFamilyDescriptorBuilder.of(TEST_FAMILY2);
   }
 
-  @Test
+  @TestTemplate
   public void testRestoreSchemaChange() throws Exception {
     Table table = TEST_UTIL.getConnection().getTable(tableName);
 
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSimpleTestBase.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSimpleTestBase.java
index a2437d2b6a5..7e1a7c44287 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSimpleTestBase.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSimpleTestBase.java
@@ -17,19 +17,23 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.IOException;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException;
 import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-import org.junit.Test;
+import org.junit.jupiter.api.TestTemplate;
 
 public class RestoreSnapshotFromClientSimpleTestBase extends 
RestoreSnapshotFromClientTestBase {
 
-  @Test
+  protected RestoreSnapshotFromClientSimpleTestBase(int numReplicas) {
+    super(numReplicas);
+  }
+
+  @TestTemplate
   public void testRestoreSnapshot() throws IOException {
     verifyRowCount(TEST_UTIL, tableName, snapshot1Rows);
     admin.disableTable(tableName);
@@ -38,30 +42,30 @@ public class RestoreSnapshotFromClientSimpleTestBase 
extends RestoreSnapshotFrom
     admin.restoreSnapshot(snapshotName0);
     admin.enableTable(tableName);
     verifyRowCount(TEST_UTIL, tableName, snapshot0Rows);
-    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
getNumReplicas());
+    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
numReplicas);
 
     // Restore from emptySnapshot
     admin.disableTable(tableName);
     admin.restoreSnapshot(emptySnapshot);
     admin.enableTable(tableName);
     verifyRowCount(TEST_UTIL, tableName, 0);
-    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
getNumReplicas());
+    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
numReplicas);
 
     // Restore from snapshot-1
     admin.disableTable(tableName);
     admin.restoreSnapshot(snapshotName1);
     admin.enableTable(tableName);
     verifyRowCount(TEST_UTIL, tableName, snapshot1Rows);
-    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
getNumReplicas());
+    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
numReplicas);
 
     // Restore from snapshot-1
     TEST_UTIL.deleteTable(tableName);
     admin.restoreSnapshot(snapshotName1);
     verifyRowCount(TEST_UTIL, tableName, snapshot1Rows);
-    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
getNumReplicas());
+    SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, 
numReplicas);
   }
 
-  @Test
+  @TestTemplate
   public void testCorruptedSnapshot() throws IOException, InterruptedException 
{
     SnapshotTestingUtils.corruptSnapshot(TEST_UTIL, snapshotName0);
     TableName cloneName =
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientTestBase.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientTestBase.java
index c4d2c7a62e9..633861d9fb6 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientTestBase.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientTestBase.java
@@ -18,6 +18,7 @@
 package org.apache.hadoop.hbase.client;
 
 import java.io.IOException;
+import java.util.stream.Stream;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.HConstants;
@@ -26,12 +27,11 @@ import 
org.apache.hadoop.hbase.master.snapshot.SnapshotManager;
 import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.rules.TestName;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestInfo;
+import org.junit.jupiter.params.provider.Arguments;
 
 /**
  * Base class for testing restore snapshot
@@ -51,13 +51,16 @@ public class RestoreSnapshotFromClientTestBase {
   protected int snapshot1Rows;
   protected Admin admin;
 
-  @Rule
-  public TestName name = new TestName();
+  protected int numReplicas;
 
-  @BeforeClass
-  public static void setupCluster() throws Exception {
-    setupConf(TEST_UTIL.getConfiguration());
-    TEST_UTIL.startMiniCluster(3);
+  private String testName;
+
+  protected RestoreSnapshotFromClientTestBase(int numReplicas) {
+    this.numReplicas = numReplicas;
+  }
+
+  public static Stream<Arguments> parameters() {
+    return Stream.of(Arguments.of(1), Arguments.of(3));
   }
 
   protected static void setupConf(Configuration conf) {
@@ -69,7 +72,7 @@ public class RestoreSnapshotFromClientTestBase {
     
TEST_UTIL.getConfiguration().setBoolean("hbase.master.enabletable.roundrobin", 
true);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     TEST_UTIL.shutdownMiniCluster();
   }
@@ -79,10 +82,12 @@ public class RestoreSnapshotFromClientTestBase {
    * snapshotName1) of different states. The tableName, snapshotNames and the 
number of rows in the
    * snapshot are initialized.
    */
-  @Before
-  public void setup() throws Exception {
+  @BeforeEach
+  public void setUp(TestInfo testInfo) throws Exception {
     this.admin = TEST_UTIL.getAdmin();
     long tid = EnvironmentEdgeManager.currentTime();
+    testName = testInfo.getTestMethod().get().getName()
+      + testInfo.getDisplayName().replaceAll("[^0-9A-Za-z_]", "_");
     tableName = TableName.valueOf(getValidMethodName() + "-" + tid);
     emptySnapshot = "emptySnaptb-" + tid;
     snapshotName0 = "snaptb0-" + tid;
@@ -116,22 +121,18 @@ public class RestoreSnapshotFromClientTestBase {
   }
 
   protected void createTable() throws Exception {
-    SnapshotTestingUtils.createTable(TEST_UTIL, tableName, getNumReplicas(), 
FAMILY);
+    SnapshotTestingUtils.createTable(TEST_UTIL, tableName, numReplicas, 
FAMILY);
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     TEST_UTIL.deleteTable(tableName);
     SnapshotTestingUtils.deleteAllSnapshots(TEST_UTIL.getAdmin());
     SnapshotTestingUtils.deleteArchiveDirectory(TEST_UTIL);
   }
 
-  protected int getNumReplicas() {
-    return 1;
-  }
-
   protected int countRows(Table table, byte[]... families) throws IOException {
-    return TEST_UTIL.countRows(table, families);
+    return HBaseTestingUtil.countRows(table, families);
   }
 
   protected void verifyRowCount(HBaseTestingUtil util, TableName tableName, 
long expectedRows)
@@ -145,6 +146,6 @@ public class RestoreSnapshotFromClientTestBase {
   }
 
   protected final String getValidMethodName() {
-    return name.getMethodName().replaceAll("[^0-9A-Za-z_]", "_");
+    return testName;
   }
 }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterSplittingRegions.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterSplittingRegions.java
index 50694c9726d..c06c960b5c2 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterSplittingRegions.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterSplittingRegions.java
@@ -19,27 +19,28 @@ package org.apache.hadoop.hbase.client;
 
 import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.mob.MobConstants;
 import org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestMobRestoreSnapshotFromClientAfterSplittingRegions
   extends RestoreSnapshotFromClientAfterSplittingRegionsTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestMobRestoreSnapshotFromClientAfterSplittingRegions.class);
+  public TestMobRestoreSnapshotFromClientAfterSplittingRegions(int 
numReplicas) {
+    super(numReplicas);
+  }
 
-  @BeforeClass
-  public static void setupCluster() throws Exception {
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
     setupConf(TEST_UTIL.getConfiguration());
     TEST_UTIL.startMiniCluster(3);
   }
@@ -51,7 +52,7 @@ public class 
TestMobRestoreSnapshotFromClientAfterSplittingRegions
 
   @Override
   protected void createTable() throws Exception {
-    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, 
getNumReplicas(), FAMILY);
+    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, numReplicas, 
FAMILY);
   }
 
   @Override
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.java
index d530582b36b..d1a03a68806 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.java
@@ -19,27 +19,28 @@ package org.apache.hadoop.hbase.client;
 
 import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.mob.MobConstants;
 import org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestMobRestoreSnapshotFromClientAfterTruncate
   extends RestoreSnapshotFromClientAfterTruncateTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestMobRestoreSnapshotFromClientAfterTruncate.class);
+  public TestMobRestoreSnapshotFromClientAfterTruncate(int numReplicas) {
+    super(numReplicas);
+  }
 
-  @BeforeClass
-  public static void setupCluster() throws Exception {
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
     setupConf(TEST_UTIL.getConfiguration());
     TEST_UTIL.startMiniCluster(3);
   }
@@ -51,7 +52,7 @@ public class TestMobRestoreSnapshotFromClientAfterTruncate
 
   @Override
   protected void createTable() throws Exception {
-    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, 
getNumReplicas(), FAMILY);
+    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, numReplicas, 
FAMILY);
   }
 
   @Override
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientClone.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientClone.java
index 73a3b3ab92c..7fca59bab0c 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientClone.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientClone.java
@@ -19,26 +19,27 @@ package org.apache.hadoop.hbase.client;
 
 import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.mob.MobConstants;
 import org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestMobRestoreSnapshotFromClientClone extends 
RestoreSnapshotFromClientCloneTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestMobRestoreSnapshotFromClientClone.class);
+  public TestMobRestoreSnapshotFromClientClone(int numReplicas) {
+    super(numReplicas);
+  }
 
-  @BeforeClass
-  public static void setupCluster() throws Exception {
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
     setupConf(TEST_UTIL.getConfiguration());
     TEST_UTIL.startMiniCluster(3);
   }
@@ -50,7 +51,7 @@ public class TestMobRestoreSnapshotFromClientClone extends 
RestoreSnapshotFromCl
 
   @Override
   protected void createTable() throws Exception {
-    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, 
getNumReplicas(), FAMILY);
+    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, numReplicas, 
FAMILY);
   }
 
   @Override
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.java
index c3279ea5e25..01e8a24905d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.java
@@ -19,27 +19,28 @@ package org.apache.hadoop.hbase.client;
 
 import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.mob.MobConstants;
 import org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestMobRestoreSnapshotFromClientGetCompactionState
   extends RestoreSnapshotFromClientGetCompactionStateTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestMobRestoreSnapshotFromClientGetCompactionState.class);
+  public TestMobRestoreSnapshotFromClientGetCompactionState(int numReplicas) {
+    super(numReplicas);
+  }
 
-  @BeforeClass
-  public static void setupCluster() throws Exception {
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
     setupConf(TEST_UTIL.getConfiguration());
     TEST_UTIL.startMiniCluster(3);
   }
@@ -51,7 +52,7 @@ public class 
TestMobRestoreSnapshotFromClientGetCompactionState
 
   @Override
   protected void createTable() throws Exception {
-    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, 
getNumReplicas(), FAMILY);
+    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, numReplicas, 
FAMILY);
   }
 
   @Override
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSchemaChange.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSchemaChange.java
index e741ae5d8e1..bdd81eecdbe 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSchemaChange.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSchemaChange.java
@@ -19,27 +19,28 @@ package org.apache.hadoop.hbase.client;
 
 import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.mob.MobConstants;
 import org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestMobRestoreSnapshotFromClientSchemaChange
   extends RestoreSnapshotFromClientSchemaChangeTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestMobRestoreSnapshotFromClientSchemaChange.class);
+  public TestMobRestoreSnapshotFromClientSchemaChange(int numReplicas) {
+    super(numReplicas);
+  }
 
-  @BeforeClass
-  public static void setupCluster() throws Exception {
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
     setupConf(TEST_UTIL.getConfiguration());
     TEST_UTIL.startMiniCluster(3);
   }
@@ -51,7 +52,7 @@ public class TestMobRestoreSnapshotFromClientSchemaChange
 
   @Override
   protected void createTable() throws Exception {
-    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, 
getNumReplicas(), FAMILY);
+    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, numReplicas, 
FAMILY);
   }
 
   @Override
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSimple.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSimple.java
index 2c36fb9d339..9a29536e36d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSimple.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSimple.java
@@ -19,27 +19,28 @@ package org.apache.hadoop.hbase.client;
 
 import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.mob.MobConstants;
 import org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestMobRestoreSnapshotFromClientSimple
   extends RestoreSnapshotFromClientSimpleTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestMobRestoreSnapshotFromClientSimple.class);
+  public TestMobRestoreSnapshotFromClientSimple(int numReplicas) {
+    super(numReplicas);
+  }
 
-  @BeforeClass
-  public static void setupCluster() throws Exception {
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
     setupConf(TEST_UTIL.getConfiguration());
     TEST_UTIL.startMiniCluster(3);
   }
@@ -51,7 +52,7 @@ public class TestMobRestoreSnapshotFromClientSimple
 
   @Override
   protected void createTable() throws Exception {
-    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, 
getNumReplicas(), FAMILY);
+    MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, numReplicas, 
FAMILY);
   }
 
   @Override
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterSplittingRegions.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterSplittingRegions.java
index eadf9fdf8b2..1236525f54e 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterSplittingRegions.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterSplittingRegions.java
@@ -17,37 +17,25 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import java.util.Arrays;
-import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@RunWith(Parameterized.class)
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestRestoreSnapshotFromClientAfterSplittingRegions
   extends RestoreSnapshotFromClientAfterSplittingRegionsTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestRestoreSnapshotFromClientAfterSplittingRegions.class);
-
-  @Parameter
-  public int numReplicas;
-
-  @Parameters(name = "{index}: regionReplication={0}")
-  public static List<Object[]> params() {
-    return Arrays.asList(new Object[] { 1 }, new Object[] { 3 });
+  public TestRestoreSnapshotFromClientAfterSplittingRegions(int numReplicas) {
+    super(numReplicas);
   }
 
-  @Override
-  protected int getNumReplicas() {
-    return numReplicas;
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
+    setupConf(TEST_UTIL.getConfiguration());
+    TEST_UTIL.startMiniCluster(3);
   }
 }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterTruncate.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterTruncate.java
index fa438cb2c72..0cc7655365d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterTruncate.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterTruncate.java
@@ -17,37 +17,25 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import java.util.Arrays;
-import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@RunWith(Parameterized.class)
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestRestoreSnapshotFromClientAfterTruncate
   extends RestoreSnapshotFromClientAfterTruncateTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestRestoreSnapshotFromClientAfterTruncate.class);
-
-  @Parameter
-  public int numReplicas;
-
-  @Parameters(name = "{index}: regionReplication={0}")
-  public static List<Object[]> params() {
-    return Arrays.asList(new Object[] { 1 }, new Object[] { 3 });
+  public TestRestoreSnapshotFromClientAfterTruncate(int numReplicas) {
+    super(numReplicas);
   }
 
-  @Override
-  protected int getNumReplicas() {
-    return numReplicas;
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
+    setupConf(TEST_UTIL.getConfiguration());
+    TEST_UTIL.startMiniCluster(3);
   }
 }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientClone.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientClone.java
index f1a556f2018..9eeef8efd75 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientClone.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientClone.java
@@ -17,36 +17,24 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import java.util.Arrays;
-import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@RunWith(Parameterized.class)
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestRestoreSnapshotFromClientClone extends 
RestoreSnapshotFromClientCloneTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRestoreSnapshotFromClientClone.class);
-
-  @Parameter
-  public int numReplicas;
-
-  @Parameters(name = "{index}: regionReplication={0}")
-  public static List<Object[]> params() {
-    return Arrays.asList(new Object[] { 1 }, new Object[] { 3 });
+  public TestRestoreSnapshotFromClientClone(int numReplicas) {
+    super(numReplicas);
   }
 
-  @Override
-  protected int getNumReplicas() {
-    return numReplicas;
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
+    setupConf(TEST_UTIL.getConfiguration());
+    TEST_UTIL.startMiniCluster(3);
   }
 }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientGetCompactionState.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientGetCompactionState.java
index c3cb892f47d..0dbd7d2b81b 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientGetCompactionState.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientGetCompactionState.java
@@ -17,37 +17,25 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import java.util.Arrays;
-import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@RunWith(Parameterized.class)
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestRestoreSnapshotFromClientGetCompactionState
   extends RestoreSnapshotFromClientGetCompactionStateTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestRestoreSnapshotFromClientGetCompactionState.class);
-
-  @Parameter
-  public int numReplicas;
-
-  @Parameters(name = "{index}: regionReplication={0}")
-  public static List<Object[]> params() {
-    return Arrays.asList(new Object[] { 1 }, new Object[] { 3 });
+  public TestRestoreSnapshotFromClientGetCompactionState(int numReplicas) {
+    super(numReplicas);
   }
 
-  @Override
-  protected int getNumReplicas() {
-    return numReplicas;
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
+    setupConf(TEST_UTIL.getConfiguration());
+    TEST_UTIL.startMiniCluster(3);
   }
 }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSchemaChange.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSchemaChange.java
index 818a33e9452..6b3c5b24b39 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSchemaChange.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSchemaChange.java
@@ -17,37 +17,25 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import java.util.Arrays;
-import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@RunWith(Parameterized.class)
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestRestoreSnapshotFromClientSchemaChange
   extends RestoreSnapshotFromClientSchemaChangeTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestRestoreSnapshotFromClientSchemaChange.class);
-
-  @Parameter
-  public int numReplicas;
-
-  @Parameters(name = "{index}: regionReplication={0}")
-  public static List<Object[]> params() {
-    return Arrays.asList(new Object[] { 1 }, new Object[] { 3 });
+  public TestRestoreSnapshotFromClientSchemaChange(int numReplicas) {
+    super(numReplicas);
   }
 
-  @Override
-  protected int getNumReplicas() {
-    return numReplicas;
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
+    setupConf(TEST_UTIL.getConfiguration());
+    TEST_UTIL.startMiniCluster(3);
   }
 }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSimple.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSimple.java
index 8cbb7ab01c8..27c345ecc42 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSimple.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSimple.java
@@ -17,36 +17,24 @@
  */
 package org.apache.hadoop.hbase.client;
 
-import java.util.Arrays;
-import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
 
-@RunWith(Parameterized.class)
-@Category({ LargeTests.class, ClientTests.class })
+@Tag(LargeTests.TAG)
+@Tag(ClientTests.TAG)
+@HBaseParameterizedTestTemplate(name = "{index}: regionReplication={0}")
 public class TestRestoreSnapshotFromClientSimple extends 
RestoreSnapshotFromClientSimpleTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRestoreSnapshotFromClientSimple.class);
-
-  @Parameter
-  public int numReplicas;
-
-  @Parameters(name = "{index}: regionReplication={0}")
-  public static List<Object[]> params() {
-    return Arrays.asList(new Object[] { 1 }, new Object[] { 3 });
+  public TestRestoreSnapshotFromClientSimple(int numReplicas) {
+    super(numReplicas);
   }
 
-  @Override
-  protected int getNumReplicas() {
-    return numReplicas;
+  @BeforeAll
+  public static void setUpBeforeClass() throws Exception {
+    setupConf(TEST_UTIL.getConfiguration());
+    TEST_UTIL.startMiniCluster(3);
   }
 }


Reply via email to