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

zhangduo 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 af9d37e342f HBASE-29918 Upgrade hbase-diagnostics to use junit5 (#7788)
af9d37e342f is described below

commit af9d37e342f5ca55bd41e16c63560c5eb7dc1601
Author: Liu Xiao <[email protected]>
AuthorDate: Tue Mar 3 22:00:51 2026 +0800

    HBASE-29918 Upgrade hbase-diagnostics to use junit5 (#7788)
    
    Signed-off-by: Duo Zhang <[email protected]>
---
 hbase-diagnostics/pom.xml                          |   5 -
 .../hadoop/hbase/TestClientClusterMetrics.java     | 211 ++++++++++-----------
 .../hadoop/hbase/TestPerformanceEvaluation.java    |  27 ++-
 .../hbase/io/encoding/TestEncodedSeekers.java      |  36 ++--
 .../io/encoding/TestLoadAndSwitchEncodeOnDisk.java |  28 +--
 .../hadoop/hbase/security/TestEncryptionUtil.java  |  49 +++--
 .../hadoop/hbase/util/TestLoadTestKVGenerator.java |  17 +-
 .../hbase/util/TestMiniClusterLoadEncoded.java     |  26 ++-
 .../hbase/util/TestMiniClusterLoadParallel.java    |  26 +--
 .../hbase/util/TestMiniClusterLoadSequential.java  |  43 ++---
 ...tBoundedRegionGroupingStrategyUsingWPETool.java |  41 ++--
 .../TestFSHLogProviderWithConcurrentWrites.java    |  32 ++--
 .../wal/TestBoundedRegionGroupingStrategy.java     |  58 +++---
 13 files changed, 263 insertions(+), 336 deletions(-)

diff --git a/hbase-diagnostics/pom.xml b/hbase-diagnostics/pom.xml
index 5f366ffccb5..60e908217e5 100644
--- a/hbase-diagnostics/pom.xml
+++ b/hbase-diagnostics/pom.xml
@@ -181,11 +181,6 @@
       <artifactId>junit-jupiter-params</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/TestClientClusterMetrics.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/TestClientClusterMetrics.java
index a459074ba27..a63d9585fa0 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/TestClientClusterMetrics.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/TestClientClusterMetrics.java
@@ -17,6 +17,11 @@
  */
 package org.apache.hadoop.hbase;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
 import java.io.IOException;
 import java.security.PrivilegedAction;
 import java.util.EnumSet;
@@ -58,19 +63,13 @@ import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;
 import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-@Category(MediumTests.class)
-public class TestClientClusterMetrics {
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestClientClusterMetrics.class);
+@Tag(MediumTests.TAG)
+public class TestClientClusterMetrics {
 
   private static HBaseTestingUtil UTIL;
   private static Admin ADMIN;
@@ -94,7 +93,7 @@ public class TestClientClusterMetrics {
     }
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     Configuration conf = HBaseConfiguration.create();
     conf.set(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY, 
MyObserver.class.getName());
@@ -120,23 +119,21 @@ public class TestClientClusterMetrics {
   public void testDefaults() throws Exception {
     ClusterMetrics origin = ADMIN.getClusterMetrics();
     ClusterMetrics defaults = 
ADMIN.getClusterMetrics(EnumSet.allOf(Option.class));
-    Assert.assertEquals(origin.getHBaseVersion(), defaults.getHBaseVersion());
-    Assert.assertEquals(origin.getClusterId(), defaults.getClusterId());
-    Assert.assertEquals(origin.getAverageLoad(), defaults.getAverageLoad(), 0);
-    Assert.assertEquals(origin.getBackupMasterNames().size(),
-      defaults.getBackupMasterNames().size());
-    Assert.assertEquals(origin.getDeadServerNames().size(), 
defaults.getDeadServerNames().size());
-    Assert.assertEquals(origin.getRegionCount(), defaults.getRegionCount());
-    Assert.assertEquals(origin.getLiveServerMetrics().size(),
-      defaults.getLiveServerMetrics().size());
-    Assert.assertEquals(origin.getMasterInfoPort(), 
defaults.getMasterInfoPort());
-    Assert.assertEquals(origin.getServersName().size(), 
defaults.getServersName().size());
-    Assert.assertEquals(ADMIN.getRegionServers().size(), 
defaults.getServersName().size());
+    assertEquals(origin.getHBaseVersion(), defaults.getHBaseVersion());
+    assertEquals(origin.getClusterId(), defaults.getClusterId());
+    assertEquals(origin.getAverageLoad(), defaults.getAverageLoad(), 0);
+    assertEquals(origin.getBackupMasterNames().size(), 
defaults.getBackupMasterNames().size());
+    assertEquals(origin.getDeadServerNames().size(), 
defaults.getDeadServerNames().size());
+    assertEquals(origin.getRegionCount(), defaults.getRegionCount());
+    assertEquals(origin.getLiveServerMetrics().size(), 
defaults.getLiveServerMetrics().size());
+    assertEquals(origin.getMasterInfoPort(), defaults.getMasterInfoPort());
+    assertEquals(origin.getServersName().size(), 
defaults.getServersName().size());
+    assertEquals(ADMIN.getRegionServers().size(), 
defaults.getServersName().size());
     // We decommission the first online region server and verify the metrics.
     List<ServerName> serverNames = origin.getServersName().subList(0, 1);
     ADMIN.decommissionRegionServers(serverNames, false);
-    Assert.assertEquals(1, 
ADMIN.getClusterMetrics().getDecommissionedServerNames().size());
-    
Assert.assertEquals(ADMIN.getClusterMetrics().getDecommissionedServerNames().get(0),
+    assertEquals(1, 
ADMIN.getClusterMetrics().getDecommissionedServerNames().size());
+    
assertEquals(ADMIN.getClusterMetrics().getDecommissionedServerNames().get(0),
       serverNames.get(0));
   }
 
@@ -150,23 +147,21 @@ public class TestClientClusterMetrics {
         asyncAdmin.getClusterMetrics(EnumSet.allOf(Option.class));
       ClusterMetrics origin = originFuture.get();
       ClusterMetrics defaults = defaultsFuture.get();
-      Assert.assertEquals(origin.getHBaseVersion(), 
defaults.getHBaseVersion());
-      Assert.assertEquals(origin.getClusterId(), defaults.getClusterId());
-      Assert.assertEquals(origin.getHBaseVersion(), 
defaults.getHBaseVersion());
-      Assert.assertEquals(origin.getClusterId(), defaults.getClusterId());
-      Assert.assertEquals(origin.getAverageLoad(), defaults.getAverageLoad(), 
0);
-      Assert.assertEquals(origin.getBackupMasterNames().size(),
-        defaults.getBackupMasterNames().size());
-      Assert.assertEquals(origin.getDeadServerNames().size(), 
defaults.getDeadServerNames().size());
-      Assert.assertEquals(origin.getRegionCount(), defaults.getRegionCount());
-      Assert.assertEquals(origin.getLiveServerMetrics().size(),
-        defaults.getLiveServerMetrics().size());
-      Assert.assertEquals(origin.getMasterInfoPort(), 
defaults.getMasterInfoPort());
-      Assert.assertEquals(origin.getServersName().size(), 
defaults.getServersName().size());
+      assertEquals(origin.getHBaseVersion(), defaults.getHBaseVersion());
+      assertEquals(origin.getClusterId(), defaults.getClusterId());
+      assertEquals(origin.getHBaseVersion(), defaults.getHBaseVersion());
+      assertEquals(origin.getClusterId(), defaults.getClusterId());
+      assertEquals(origin.getAverageLoad(), defaults.getAverageLoad(), 0);
+      assertEquals(origin.getBackupMasterNames().size(), 
defaults.getBackupMasterNames().size());
+      assertEquals(origin.getDeadServerNames().size(), 
defaults.getDeadServerNames().size());
+      assertEquals(origin.getRegionCount(), defaults.getRegionCount());
+      assertEquals(origin.getLiveServerMetrics().size(), 
defaults.getLiveServerMetrics().size());
+      assertEquals(origin.getMasterInfoPort(), defaults.getMasterInfoPort());
+      assertEquals(origin.getServersName().size(), 
defaults.getServersName().size());
       origin.getTableRegionStatesCount().forEach(((tableName, 
regionStatesCount) -> {
         RegionStatesCount defaultRegionStatesCount =
           defaults.getTableRegionStatesCount().get(tableName);
-        Assert.assertEquals(defaultRegionStatesCount, regionStatesCount);
+        assertEquals(defaultRegionStatesCount, regionStatesCount);
       }));
     }
   }
@@ -188,7 +183,7 @@ public class TestClientClusterMetrics {
       @Override
       public boolean evaluate() throws Exception {
         ClusterMetrics metrics = 
ADMIN.getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS));
-        Assert.assertNotNull(metrics);
+        assertNotNull(metrics);
         return metrics.getRegionCount() > 0;
       }
     });
@@ -196,20 +191,20 @@ public class TestClientClusterMetrics {
     EnumSet<Option> options =
       EnumSet.of(Option.LIVE_SERVERS, Option.DEAD_SERVERS, 
Option.SERVERS_NAME);
     ClusterMetrics metrics = ADMIN.getClusterMetrics(options);
-    Assert.assertNotNull(metrics);
+    assertNotNull(metrics);
     // exclude a dead region server
-    Assert.assertEquals(SLAVES - 1, numRs);
+    assertEquals(SLAVES - 1, numRs);
     // live servers = nums of regionservers
     // By default, HMaster don't carry any regions so it won't report its load.
     // Hence, it won't be in the server list.
-    Assert.assertEquals(numRs, metrics.getLiveServerMetrics().size());
-    Assert.assertTrue(metrics.getRegionCount() > 0);
-    Assert.assertNotNull(metrics.getDeadServerNames());
-    Assert.assertEquals(1, metrics.getDeadServerNames().size());
+    assertEquals(numRs, metrics.getLiveServerMetrics().size());
+    assertTrue(metrics.getRegionCount() > 0);
+    assertNotNull(metrics.getDeadServerNames());
+    assertEquals(1, metrics.getDeadServerNames().size());
     ServerName deadServerName = metrics.getDeadServerNames().iterator().next();
-    Assert.assertEquals(DEAD.getServerName(), deadServerName);
-    Assert.assertNotNull(metrics.getServersName());
-    Assert.assertEquals(numRs, metrics.getServersName().size());
+    assertEquals(DEAD.getServerName(), deadServerName);
+    assertNotNull(metrics.getServersName());
+    assertEquals(numRs, metrics.getServersName().size());
   }
 
   @Test
@@ -220,22 +215,21 @@ public class TestClientClusterMetrics {
     table.put(new Put(Bytes.toBytes("k3")).addColumn(CF, Bytes.toBytes("q3"), 
Bytes.toBytes("v3")));
 
     ClusterMetrics metrics = ADMIN.getClusterMetrics();
-    Assert.assertEquals(metrics.getTableRegionStatesCount().size(), 2);
-    Assert.assertEquals(
+    assertEquals(metrics.getTableRegionStatesCount().size(), 2);
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getRegionsInTransition(),
       0);
-    Assert.assertEquals(
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getOpenRegions(),
 1);
-    Assert.assertEquals(
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getTotalRegions(),
 1);
-    Assert.assertEquals(
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getClosedRegions(),
 0);
-    Assert.assertEquals(
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getSplitRegions(),
 0);
-    Assert.assertEquals(
-      
metrics.getTableRegionStatesCount().get(TABLE_NAME).getRegionsInTransition(), 
0);
-    
Assert.assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getOpenRegions(),
 1);
-    
Assert.assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getTotalRegions(),
 1);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getRegionsInTransition(),
 0);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getOpenRegions(),
 1);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getTotalRegions(),
 1);
 
     UTIL.deleteTable(TABLE_NAME);
   }
@@ -251,18 +245,17 @@ public class TestClientClusterMetrics {
     insertData(TABLE_NAME, startRowNum, rowCount);
 
     ClusterMetrics metrics = ADMIN.getClusterMetrics();
-    Assert.assertEquals(metrics.getTableRegionStatesCount().size(), 2);
-    Assert.assertEquals(
+    assertEquals(metrics.getTableRegionStatesCount().size(), 2);
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getRegionsInTransition(),
       0);
-    Assert.assertEquals(
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getOpenRegions(),
 1);
-    Assert.assertEquals(
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getTotalRegions(),
 1);
-    Assert.assertEquals(
-      
metrics.getTableRegionStatesCount().get(TABLE_NAME).getRegionsInTransition(), 
0);
-    
Assert.assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getOpenRegions(),
 1);
-    
Assert.assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getTotalRegions(),
 1);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getRegionsInTransition(),
 0);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getOpenRegions(),
 1);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getTotalRegions(),
 1);
 
     int splitRowNum = startRowNum + rowCount / 2;
     byte[] splitKey = Bytes.toBytes("" + splitRowNum);
@@ -271,20 +264,19 @@ public class TestClientClusterMetrics {
     ADMIN.split(TABLE_NAME, splitKey);
 
     metrics = ADMIN.getClusterMetrics();
-    Assert.assertEquals(metrics.getTableRegionStatesCount().size(), 2);
-    Assert.assertEquals(
+    assertEquals(metrics.getTableRegionStatesCount().size(), 2);
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getRegionsInTransition(),
       0);
-    Assert.assertEquals(
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getOpenRegions(),
 1);
-    Assert.assertEquals(
+    assertEquals(
       
metrics.getTableRegionStatesCount().get(TableName.META_TABLE_NAME).getTotalRegions(),
 1);
-    Assert.assertEquals(
-      
metrics.getTableRegionStatesCount().get(TABLE_NAME).getRegionsInTransition(), 
0);
-    
Assert.assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getOpenRegions(),
 2);
-    
Assert.assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getTotalRegions(),
 3);
-    
Assert.assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getSplitRegions(),
 1);
-    
Assert.assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getClosedRegions(),
 0);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getRegionsInTransition(),
 0);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getOpenRegions(),
 2);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getTotalRegions(),
 3);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getSplitRegions(),
 1);
+    
assertEquals(metrics.getTableRegionStatesCount().get(TABLE_NAME).getClosedRegions(),
 0);
 
     UTIL.deleteTable(TABLE_NAME);
   }
@@ -305,14 +297,14 @@ public class TestClientClusterMetrics {
         activeName = active.getServerName();
       }
     }
-    Assert.assertNotNull(active);
-    Assert.assertEquals(1, numActive);
-    Assert.assertEquals(MASTERS, masterThreads.size());
+    assertNotNull(active);
+    assertEquals(1, numActive);
+    assertEquals(MASTERS, masterThreads.size());
     // Retrieve master and backup masters infos only.
     EnumSet<Option> options = EnumSet.of(Option.MASTER, Option.BACKUP_MASTERS);
     ClusterMetrics metrics = ADMIN.getClusterMetrics(options);
-    Assert.assertTrue(metrics.getMasterName().equals(activeName));
-    Assert.assertEquals(MASTERS - 1, metrics.getBackupMasterNames().size());
+    assertTrue(metrics.getMasterName().equals(activeName));
+    assertEquals(MASTERS - 1, metrics.getBackupMasterNames().size());
   }
 
   @Test
@@ -337,7 +329,7 @@ public class TestClientClusterMetrics {
         try {
           doPut();
         } catch (IOException e) {
-          Assert.fail("Exception:" + e.getMessage());
+          fail("Exception:" + e.getMessage());
         }
         return null;
       }
@@ -352,7 +344,7 @@ public class TestClientClusterMetrics {
         try {
           doGet();
         } catch (IOException e) {
-          Assert.fail("Exception:" + e.getMessage());
+          fail("Exception:" + e.getMessage());
         }
         return null;
       }
@@ -367,10 +359,10 @@ public class TestClientClusterMetrics {
         try {
           Table table = 
createConnection(UTIL.getConfiguration()).getTable(TABLE_NAME);
           for (Result result : table.getScanner(new Scan().setFilter(new 
FilterAllFilter()))) {
-            Assert.fail("Should have filtered all rows");
+            fail("Should have filtered all rows");
           }
         } catch (IOException e) {
-          Assert.fail("Exception:" + e.getMessage());
+          fail("Exception:" + e.getMessage());
         }
         return null;
       }
@@ -383,25 +375,22 @@ public class TestClientClusterMetrics {
     for (byte[] user : userMap.keySet()) {
       switch (Bytes.toString(user)) {
         case "FOO_USER_METRIC_TEST":
-          Assert.assertEquals(1,
-            userMap.get(user).getWriteRequestCount() - 
writeMetaMetricForUserFoo);
+          assertEquals(1, userMap.get(user).getWriteRequestCount() - 
writeMetaMetricForUserFoo);
           break;
         case "BAR_USER_METRIC_TEST":
-          Assert.assertEquals(1,
-            userMap.get(user).getReadRequestCount() - 
readMetaMetricForUserBar);
-          Assert.assertEquals(0, userMap.get(user).getWriteRequestCount());
+          assertEquals(1, userMap.get(user).getReadRequestCount() - 
readMetaMetricForUserBar);
+          assertEquals(0, userMap.get(user).getWriteRequestCount());
           break;
         case "TEST_USER_METRIC_TEST":
-          Assert.assertEquals(1,
+          assertEquals(1,
             userMap.get(user).getFilteredReadRequests() - 
filteredMetaReqeustForTestUser);
-          Assert.assertEquals(0, userMap.get(user).getWriteRequestCount());
+          assertEquals(0, userMap.get(user).getWriteRequestCount());
           break;
         default:
           // current user
-          
Assert.assertEquals(UserProvider.instantiate(conf).getCurrent().getName(),
-            Bytes.toString(user));
+          assertEquals(UserProvider.instantiate(conf).getCurrent().getName(), 
Bytes.toString(user));
           // Read/write count because of Meta operations
-          Assert.assertTrue(userMap.get(user).getReadRequestCount() > 1);
+          assertTrue(userMap.get(user).getReadRequestCount() > 1);
           break;
       }
     }
@@ -431,7 +420,7 @@ public class TestClientClusterMetrics {
         break;
       }
     }
-    Assert.assertTrue("Expected task not found in master task list", found);
+    assertTrue(found, "Expected task not found in master task list");
     // Get the tasks information (carried in server metrics)
     found = false;
     for (ServerMetrics serverMetrics : 
clusterMetrics.getLiveServerMetrics().values()) {
@@ -447,7 +436,7 @@ public class TestClientClusterMetrics {
     }
     // We will fall through here if getClusterMetrics(TASKS) did not correctly 
process the
     // task list.
-    Assert.assertTrue("Expected task not found in server load", found);
+    assertTrue(found, "Expected task not found in server load");
   }
 
   private RegionMetrics getMetaMetrics() throws IOException {
@@ -459,7 +448,7 @@ public class TestClientClusterMetrics {
         return metaMetrics;
       }
     }
-    Assert.fail("Should have find meta metrics");
+    fail("Should have find meta metrics");
     return null;
   }
 
@@ -471,7 +460,7 @@ public class TestClientClusterMetrics {
       public boolean evaluate() throws Exception {
         Map<byte[], UserMetrics> metrics = 
ADMIN.getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS))
           .getLiveServerMetrics().values().iterator().next().getUserMetrics();
-        Assert.assertNotNull(metrics);
+        assertNotNull(metrics);
         // including current user + noOfUsers
         return metrics.keySet().size() > noOfUsers;
       }
@@ -500,14 +489,14 @@ public class TestClientClusterMetrics {
     EnumSet<Option> options = EnumSet.of(Option.MASTER_COPROCESSORS, 
Option.HBASE_VERSION,
       Option.CLUSTER_ID, Option.BALANCER_ON);
     ClusterMetrics metrics = ADMIN.getClusterMetrics(options);
-    Assert.assertEquals(1, metrics.getMasterCoprocessorNames().size());
-    Assert.assertNotNull(metrics.getHBaseVersion());
-    Assert.assertNotNull(metrics.getClusterId());
-    Assert.assertTrue(metrics.getAverageLoad() == 0.0);
-    Assert.assertNotNull(metrics.getBalancerOn());
+    assertEquals(1, metrics.getMasterCoprocessorNames().size());
+    assertNotNull(metrics.getHBaseVersion());
+    assertNotNull(metrics.getClusterId());
+    assertTrue(metrics.getAverageLoad() == 0.0);
+    assertNotNull(metrics.getBalancerOn());
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     if (ADMIN != null) {
       ADMIN.close();
@@ -519,10 +508,10 @@ public class TestClientClusterMetrics {
   public void testObserver() throws IOException {
     int preCount = MyObserver.PRE_COUNT.get();
     int postCount = MyObserver.POST_COUNT.get();
-    
Assert.assertTrue(ADMIN.getClusterMetrics().getMasterCoprocessorNames().stream()
+    assertTrue(ADMIN.getClusterMetrics().getMasterCoprocessorNames().stream()
       .anyMatch(s -> s.equals(MyObserver.class.getSimpleName())));
-    Assert.assertEquals(preCount + 1, MyObserver.PRE_COUNT.get());
-    Assert.assertEquals(postCount + 1, MyObserver.POST_COUNT.get());
+    assertEquals(preCount + 1, MyObserver.PRE_COUNT.get());
+    assertEquals(postCount + 1, MyObserver.POST_COUNT.get());
   }
 
   private static void insertData(final TableName tableName, int startRow, int 
rowCount)
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/TestPerformanceEvaluation.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/TestPerformanceEvaluation.java
index 84b211d4e31..eb11aed45a6 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/TestPerformanceEvaluation.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/TestPerformanceEvaluation.java
@@ -17,12 +17,12 @@
  */
 package org.apache.hadoop.hbase;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import com.codahale.metrics.Histogram;
 import com.codahale.metrics.Snapshot;
@@ -53,17 +53,14 @@ import 
org.apache.hadoop.hbase.regionserver.CompactingMemStore;
 import org.apache.hadoop.hbase.testclassification.MiscTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.hbase.util.GsonUtil;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
 import org.apache.hbase.thirdparty.com.google.gson.Gson;
 
-@Category({ MiscTests.class, SmallTests.class })
+@Tag(MiscTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestPerformanceEvaluation {
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestPerformanceEvaluation.class);
 
   private static final HBaseTestingUtil HTU = new HBaseTestingUtil();
 
@@ -168,7 +165,7 @@ public class TestPerformanceEvaluation {
         break;
       }
     }
-    assertTrue("We need to get a value more than 1000", foundValue);
+    assertTrue(foundValue, "We need to get a value more than 1000");
   }
 
   @Test
@@ -385,7 +382,7 @@ public class TestPerformanceEvaluation {
     assertEquals("val1", options.getCommandProperties().get("prop1"));
   }
 
-  class PESampleTestImpl extends PerformanceEvaluation.Test {
+  static class PESampleTestImpl extends PerformanceEvaluation.Test {
 
     PESampleTestImpl(Connection con, TestOptions options, Status status) {
       super(con, options, status);
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.java
index 4b8db2967f7..45b6fa7016f 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.java
@@ -17,16 +17,16 @@
  */
 package org.apache.hadoop.hbase.io.encoding;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Stream;
 import org.apache.hadoop.hbase.ArrayBackedTag;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.KeyValue;
@@ -48,24 +48,17 @@ import 
org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.LoadTestKVGenerator;
 import org.apache.hadoop.hbase.util.Strings;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
 
 /**
  * Tests encoded seekers by loading and reading values.
  */
-@Category({ IOTests.class, LargeTests.class })
-@RunWith(Parameterized.class)
[email protected](IOTests.TAG)
[email protected](LargeTests.TAG)
+@HBaseParameterizedTestTemplate
 public class TestEncodedSeekers {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestEncodedSeekers.class);
-
   private static final String TABLE_NAME = "encodedSeekersTable";
   private static final String CF_NAME = "encodedSeekersCF";
   private static final byte[] CF_BYTES = Bytes.toBytes(CF_NAME);
@@ -87,17 +80,16 @@ public class TestEncodedSeekers {
   /** Enable when debugging */
   private static final boolean VERBOSE = false;
 
-  @Parameters
-  public static Collection<Object[]> parameters() {
-    List<Object[]> paramList = new ArrayList<>();
+  public static Stream<Arguments> parameters() {
+    List<Arguments> params = new ArrayList<>();
     for (DataBlockEncoding encoding : DataBlockEncoding.values()) {
       for (boolean includeTags : new boolean[] { false, true }) {
         for (boolean compressTags : new boolean[] { false, true }) {
-          paramList.add(new Object[] { encoding, includeTags, compressTags });
+          params.add(Arguments.of(encoding, includeTags, compressTags));
         }
       }
     }
-    return paramList;
+    return params.stream();
   }
 
   public TestEncodedSeekers(DataBlockEncoding encoding, boolean includeTags, 
boolean compressTags) {
@@ -106,7 +98,7 @@ public class TestEncodedSeekers {
     this.compressTags = compressTags;
   }
 
-  @Test
+  @TestTemplate
   public void testEncodedSeeker() throws IOException {
     System.err.println("Testing encoded seekers for encoding : " + encoding + 
", includeTags : "
       + includeTags + ", compressTags : " + compressTags);
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/io/encoding/TestLoadAndSwitchEncodeOnDisk.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/io/encoding/TestLoadAndSwitchEncodeOnDisk.java
index 6cbef50c9d0..d6b18f8ec9f 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/io/encoding/TestLoadAndSwitchEncodeOnDisk.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/io/encoding/TestLoadAndSwitchEncodeOnDisk.java
@@ -17,11 +17,10 @@
  */
 package org.apache.hadoop.hbase.io.encoding;
 
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HRegionLocation;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
@@ -34,33 +33,22 @@ import org.apache.hadoop.hbase.io.compress.Compression;
 import org.apache.hadoop.hbase.io.hfile.CacheConfig;
 import org.apache.hadoop.hbase.regionserver.HRegionServer;
 import org.apache.hadoop.hbase.testclassification.IOTests;
-import org.apache.hadoop.hbase.testclassification.MediumTests;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.TestMiniClusterLoadSequential;
 import org.apache.hadoop.hbase.util.Threads;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
 /**
  * Uses the load tester
  */
-@Category({ IOTests.class, MediumTests.class })
+@Tag(IOTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestLoadAndSwitchEncodeOnDisk extends 
TestMiniClusterLoadSequential {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestLoadAndSwitchEncodeOnDisk.class);
-
   /** We do not alternate the multi-put flag in this test. */
   private static final boolean USE_MULTI_PUT = true;
 
-  /** Un-parameterize the test */
-  @Parameters
-  public static Collection<Object[]> parameters() {
-    return Arrays.asList(new Object[][] { new Object[0] });
-  }
-
   public TestLoadAndSwitchEncodeOnDisk() {
     super(USE_MULTI_PUT, DataBlockEncoding.PREFIX);
     conf.setBoolean(CacheConfig.CACHE_BLOCKS_ON_WRITE_KEY, true);
@@ -118,7 +106,7 @@ public class TestLoadAndSwitchEncodeOnDisk extends 
TestMiniClusterLoadSequential
       Scan s = new Scan().withStartRow(startkey);
       ResultScanner scanner = t.getScanner(s);
       Result r = scanner.next();
-      org.junit.Assert.assertTrue(r != null && r.size() > 0);
+      assertTrue(r != null && r.size() > 0);
       scanner.close();
     }
   }
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/security/TestEncryptionUtil.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/security/TestEncryptionUtil.java
index 8c6ae1ec50a..6b2ce9ae2a8 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/security/TestEncryptionUtil.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/security/TestEncryptionUtil.java
@@ -17,15 +17,15 @@
  */
 package org.apache.hadoop.hbase.security;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.security.Key;
 import java.security.KeyException;
 import javax.crypto.spec.SecretKeySpec;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.io.crypto.Encryption;
 import org.apache.hadoop.hbase.io.crypto.MockAesKeyProvider;
@@ -33,20 +33,16 @@ import org.apache.hadoop.hbase.io.crypto.aes.AES;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ ClientTests.class, SmallTests.class })
+@Tag(ClientTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestEncryptionUtil {
 
   private static final String INVALID_HASH_ALG = 
"this-hash-algorithm-not-exists hopefully... :)";
   private static final String DEFAULT_HASH_ALGORITHM = "use-default";
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestEncryptionUtil.class);
-
   // There does not seem to be a ready way to test either 
getKeyFromBytesOrMasterKey
   // or createEncryptionContext, and the existing code under MobUtils appeared 
to be
   // untested. Not ideal!
@@ -71,9 +67,9 @@ public class TestEncryptionUtil {
     testKeyWrapping("SHA-384");
   }
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testKeyWrappingWithInvalidHashAlg() throws Exception {
-    testKeyWrapping(INVALID_HASH_ALG);
+    assertThrows(RuntimeException.class, () -> 
testKeyWrapping(INVALID_HASH_ALG));
   }
 
   @Test
@@ -96,12 +92,12 @@ public class TestEncryptionUtil {
     testWALKeyWrapping("SHA-384");
   }
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testWALKeyWrappingWithInvalidHashAlg() throws Exception {
-    testWALKeyWrapping(INVALID_HASH_ALG);
+    assertThrows(RuntimeException.class, () -> 
testWALKeyWrapping(INVALID_HASH_ALG));
   }
 
-  @Test(expected = KeyException.class)
+  @Test
   public void testWALKeyWrappingWithIncorrectKey() throws Exception {
     // set up the key provider for testing to resolve a key for our test 
subject
     Configuration conf = new Configuration(); // we don't need 
HBaseConfiguration for this
@@ -118,14 +114,15 @@ public class TestEncryptionUtil {
     assertNotNull(wrappedKeyBytes);
 
     // unwrap with an incorrect key
-    EncryptionUtil.unwrapWALKey(conf, "other", wrappedKeyBytes);
+    assertThrows(KeyException.class,
+      () -> EncryptionUtil.unwrapWALKey(conf, "other", wrappedKeyBytes));
   }
 
-  @Test(expected = KeyException.class)
+  @Test
   public void testHashAlgorithmMismatchWhenFailExpected() throws Exception {
     Configuration conf = new Configuration(); // we don't need 
HBaseConfiguration for this
     conf.setBoolean(Encryption.CRYPTO_KEY_FAIL_ON_ALGORITHM_MISMATCH_CONF_KEY, 
true);
-    testKeyWrappingWithMismatchingAlgorithms(conf);
+    assertThrows(KeyException.class, () -> 
testKeyWrappingWithMismatchingAlgorithms(conf));
   }
 
   @Test
@@ -165,8 +162,8 @@ public class TestEncryptionUtil {
     // only secretkeyspec supported for now
     assertTrue(unwrappedKey instanceof SecretKeySpec);
     // did we get back what we wrapped?
-    assertTrue("Unwrapped key bytes do not match original",
-      Bytes.equals(keyBytes, unwrappedKey.getEncoded()));
+    assertTrue(Bytes.equals(keyBytes, unwrappedKey.getEncoded()),
+      "Unwrapped key bytes do not match original");
 
     // unwrap with an incorrect key
     try {
@@ -201,8 +198,8 @@ public class TestEncryptionUtil {
     // only secretkeyspec supported for now
     assertTrue(unwrappedKey instanceof SecretKeySpec);
     // did we get back what we wrapped?
-    assertTrue("Unwrapped key bytes do not match original",
-      Bytes.equals(keyBytes, unwrappedKey.getEncoded()));
+    assertTrue(Bytes.equals(keyBytes, unwrappedKey.getEncoded()),
+      "Unwrapped key bytes do not match original");
   }
 
   private void testKeyWrappingWithMismatchingAlgorithms(Configuration conf) 
throws Exception {
@@ -230,8 +227,8 @@ public class TestEncryptionUtil {
     assertNotNull(unwrappedKey);
 
     // did we get back what we wrapped?
-    assertTrue("Unwrapped key bytes do not match original",
-      Bytes.equals(keyBytes, unwrappedKey.getEncoded()));
+    assertTrue(Bytes.equals(keyBytes, unwrappedKey.getEncoded()),
+      "Unwrapped key bytes do not match original");
   }
 
 }
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestLoadTestKVGenerator.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestLoadTestKVGenerator.java
index 1c35c7f0314..fea1c0bf850 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestLoadTestKVGenerator.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestLoadTestKVGenerator.java
@@ -17,26 +17,21 @@
  */
 package org.apache.hadoop.hbase.util;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.HashSet;
 import java.util.Random;
 import java.util.Set;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.MiscTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ MiscTests.class, SmallTests.class })
+@Tag(MiscTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestLoadTestKVGenerator {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestLoadTestKVGenerator.class);
-
   private static final int MIN_LEN = 10;
   private static final int MAX_LEN = 20;
 
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.java
index c45e396fc91..f27f8ece682 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.java
@@ -18,38 +18,34 @@
 package org.apache.hadoop.hbase.util;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import java.util.stream.Stream;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MiscTests;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.params.provider.Arguments;
 
 /**
  * Runs a load test on a mini HBase cluster with data block encoding turned 
on. Compared to other
  * load-test-style unit tests, this one writes a smaller amount of data, but 
goes through all
  * available data block encoding algorithms.
  */
-@Category({ MiscTests.class, LargeTests.class })
+@Tag(MiscTests.TAG)
+@Tag(LargeTests.TAG)
+@HBaseParameterizedTestTemplate
 public class TestMiniClusterLoadEncoded extends TestMiniClusterLoadParallel {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestMiniClusterLoadEncoded.class);
-
   /** We do not alternate the multi-put flag in this test. */
   private static final boolean USE_MULTI_PUT = true;
 
-  @Parameters
-  public static Collection<Object[]> parameters() {
-    List<Object[]> parameters = new ArrayList<>();
+  public static Stream<Arguments> parameters() {
+    List<Arguments> params = new ArrayList<>();
     for (DataBlockEncoding dataBlockEncoding : DataBlockEncoding.values()) {
-      parameters.add(new Object[] { dataBlockEncoding });
+      params.add(Arguments.of(dataBlockEncoding));
     }
-    return parameters;
+    return params.stream();
   }
 
   public TestMiniClusterLoadEncoded(DataBlockEncoding encoding) {
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.java
index e5136a1ffd4..b655b280e1d 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.java
@@ -17,36 +17,36 @@
  */
 package org.apache.hadoop.hbase.util;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import java.util.stream.Stream;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MiscTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
 
 /**
  * A write/read/verify load test on a mini HBase cluster. Tests reading and 
writing at the same
  * time.
  */
-@Category({ MiscTests.class, LargeTests.class })
-@RunWith(Parameterized.class)
+@Tag(MiscTests.TAG)
+@Tag(LargeTests.TAG)
+@HBaseParameterizedTestTemplate
 public class TestMiniClusterLoadParallel extends TestMiniClusterLoadSequential 
{
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestMiniClusterLoadParallel.class);
+  public static Stream<Arguments> parameters() {
+    return TestMiniClusterLoadSequential.parameters();
+  }
 
   public TestMiniClusterLoadParallel(boolean isMultiPut, DataBlockEncoding 
encoding) {
     super(isMultiPut, encoding);
   }
 
   @Override
-  @Test
+  @TestTemplate
   public void loadTest() throws Exception {
     prepareForLoadTest();
 
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.java
index 6f9fa5b0e0e..31faf3361a9 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.java
@@ -17,16 +17,16 @@
  */
 package org.apache.hadoop.hbase.util;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.stream.Stream;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ClusterMetrics.Option;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.TableName;
@@ -41,28 +41,22 @@ import 
org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MiscTests;
 import org.apache.hadoop.hbase.util.test.LoadTestDataGenerator;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
  * A write/read/verify load test on a mini HBase cluster. Tests reading and 
then writing.
  */
-@Category({ MiscTests.class, LargeTests.class })
-@RunWith(Parameterized.class)
+@Tag(MiscTests.TAG)
+@Tag(LargeTests.TAG)
+@HBaseParameterizedTestTemplate
 public class TestMiniClusterLoadSequential {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestMiniClusterLoadSequential.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestMiniClusterLoadSequential.class);
 
   protected static final TableName TABLE = TableName.valueOf("load_test_tbl");
@@ -91,25 +85,24 @@ public class TestMiniClusterLoadSequential {
     conf.setFloat(HConstants.LOAD_BALANCER_SLOP_KEY, 10.0f);
   }
 
-  @Parameters
-  public static Collection<Object[]> parameters() {
-    List<Object[]> parameters = new ArrayList<>();
+  public static Stream<Arguments> parameters() {
+    List<Arguments> params = new ArrayList<>();
     for (boolean multiPut : new boolean[] { false, true }) {
       for (DataBlockEncoding dataBlockEncoding : new DataBlockEncoding[] { 
DataBlockEncoding.NONE,
         DataBlockEncoding.PREFIX }) {
-        parameters.add(new Object[] { multiPut, dataBlockEncoding });
+        params.add(Arguments.of(multiPut, dataBlockEncoding));
       }
     }
-    return parameters;
+    return params.stream();
   }
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     LOG.debug("Test setup: isMultiPut=" + isMultiPut);
     TEST_UTIL.startMiniCluster(NUM_RS);
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     LOG.debug("Test teardown: isMultiPut=" + isMultiPut);
     TEST_UTIL.shutdownMiniCluster();
@@ -128,7 +121,7 @@ public class TestMiniClusterLoadSequential {
     return writer;
   }
 
-  @Test
+  @TestTemplate
   public void loadTest() throws Exception {
     prepareForLoadTest();
     runLoadTestOnExistingTable();
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategyUsingWPETool.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategyUsingWPETool.java
index e58e3312c1c..1dc50ac0fb4 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategyUsingWPETool.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategyUsingWPETool.java
@@ -17,41 +17,40 @@
  */
 package org.apache.hadoop.hbase.wal;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import java.util.stream.Stream;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.testclassification.LargeTests;
+import org.apache.hadoop.hbase.HBaseParameterizedTestTemplate;
+import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RegionServerTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
 
 /**
  * Tests for TestBoundedRegionGroupingStrategy which use 
WALPerformanceEvaluation for WAL data
  * creation. This class was created as part of refactoring for 
hbase-diagnostics module creation in
  * HBASE-28432 to break cyclic dependency.
  */
-@RunWith(Parameterized.class)
-@Category({ RegionServerTests.class, LargeTests.class })
+@Tag(RegionServerTests.TAG)
+@Tag(MediumTests.TAG)
+@HBaseParameterizedTestTemplate
 public class TestBoundedRegionGroupingStrategyUsingWPETool
   extends TestBoundedRegionGroupingStrategy {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestBoundedRegionGroupingStrategyUsingWPETool.class);
+  public TestBoundedRegionGroupingStrategyUsingWPETool(String walProvider) {
+    super(walProvider);
+  }
 
-  private static final Logger LOG =
-    
LoggerFactory.getLogger(TestBoundedRegionGroupingStrategyUsingWPETool.class);
+  public static Stream<Arguments> parameters() {
+    return TestBoundedRegionGroupingStrategy.parameters();
+  }
 
   /**
    * Write to a log file with three concurrent threads and verifying all data 
is written.
    */
-  @Test
+  @TestTemplate
   public void testConcurrentWrites() throws Exception {
     // Run the WPE tool with three threads writing 3000 edits each 
concurrently.
     // When done, verify that all edits were written.
@@ -63,7 +62,7 @@ public class TestBoundedRegionGroupingStrategyUsingWPETool
   /**
    * Make sure we can successfully run with more regions then our bound.
    */
-  @Test
+  @TestTemplate
   public void testMoreRegionsThanBound() throws Exception {
     final String parallelism =
       Integer.toString(BoundedGroupingStrategy.DEFAULT_NUM_REGION_GROUPS * 2);
@@ -73,7 +72,7 @@ public class TestBoundedRegionGroupingStrategyUsingWPETool
     assertEquals(0, errCode);
   }
 
-  @Test
+  @TestTemplate
   public void testBoundsGreaterThanDefault() throws Exception {
     final int temp = CONF.getInt(BoundedGroupingStrategy.NUM_REGION_GROUPS,
       BoundedGroupingStrategy.DEFAULT_NUM_REGION_GROUPS);
@@ -89,7 +88,7 @@ public class TestBoundedRegionGroupingStrategyUsingWPETool
     }
   }
 
-  @Test
+  @TestTemplate
   public void testMoreRegionsThanBoundWithBoundsGreaterThanDefault() throws 
Exception {
     final int temp = CONF.getInt(BoundedGroupingStrategy.NUM_REGION_GROUPS,
       BoundedGroupingStrategy.DEFAULT_NUM_REGION_GROUPS);
diff --git 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogProviderWithConcurrentWrites.java
 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogProviderWithConcurrentWrites.java
index 37efaa9f9dd..5fb93bc0bfc 100644
--- 
a/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogProviderWithConcurrentWrites.java
+++ 
b/hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogProviderWithConcurrentWrites.java
@@ -17,24 +17,20 @@
  */
 package org.apache.hadoop.hbase.wal;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RegionServerTests;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TestName;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,23 +39,17 @@ import org.slf4j.LoggerFactory;
  * was created as part of refactoring for hbase-diagnostics module creation in 
HBASE-28432 to break
  * cyclic dependency.
  */
-@Category({ RegionServerTests.class, MediumTests.class })
+@Tag(RegionServerTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestFSHLogProviderWithConcurrentWrites {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestFSHLogProviderWithConcurrentWrites.class);
-
   private static final Logger LOG =
     LoggerFactory.getLogger(TestFSHLogProviderWithConcurrentWrites.class);
 
   private static FileSystem fs;
   private final static HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();
 
-  @Rule
-  public final TestName currentTest = new TestName();
-
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     FileStatus[] entries = fs.listStatus(new Path("/"));
     for (FileStatus dir : entries) {
@@ -67,7 +57,7 @@ public class TestFSHLogProviderWithConcurrentWrites {
     }
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     // Make block sizes small.
     TEST_UTIL.getConfiguration().setInt("dfs.blocksize", 1024 * 1024);
@@ -87,7 +77,7 @@ public class TestFSHLogProviderWithConcurrentWrites {
     fs = TEST_UTIL.getDFSCluster().getFileSystem();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     TEST_UTIL.shutdownMiniCluster();
   }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategy.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategy.java
index f2571851f71..909ede5d837 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategy.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestBoundedRegionGroupingStrategy.java
@@ -17,17 +17,17 @@
  */
 package org.apache.hadoop.hbase.wal;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.ThreadLocalRandom;
+import java.util.stream.Stream;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.Path;
-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.client.RegionInfoBuilder;
@@ -35,28 +35,21 @@ import 
org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RegionServerTests;
 import org.apache.hadoop.hbase.util.CommonFSUtils;
 import org.apache.hadoop.hdfs.DistributedFileSystem;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-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.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.params.provider.Arguments;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@RunWith(Parameterized.class)
-@Category({ RegionServerTests.class, MediumTests.class })
+@Tag(RegionServerTests.TAG)
+@Tag(MediumTests.TAG)
+@HBaseParameterizedTestTemplate
 public class TestBoundedRegionGroupingStrategy {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBoundedRegionGroupingStrategy.class);
-
   private static final Logger LOG =
     LoggerFactory.getLogger(TestBoundedRegionGroupingStrategy.class);
 
@@ -65,20 +58,22 @@ public class TestBoundedRegionGroupingStrategy {
   protected static Configuration CONF;
   protected static DistributedFileSystem FS;
 
-  @Parameter
   public String walProvider;
 
-  @Parameters(name = "{index}: delegate-provider={0}")
-  public static Iterable<Object[]> data() {
-    return Arrays.asList(new Object[] { "defaultProvider" }, new Object[] { 
"asyncfs" });
+  public TestBoundedRegionGroupingStrategy(String walProvider) {
+    this.walProvider = walProvider;
+  }
+
+  public static Stream<Arguments> parameters() {
+    return Stream.of(Arguments.of("defaultProvider"), Arguments.of("asyncfs"));
   }
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     CONF.set(RegionGroupingProvider.DELEGATE_PROVIDER, walProvider);
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     FileStatus[] entries = FS.listStatus(new Path("/"));
     for (FileStatus dir : entries) {
@@ -86,7 +81,7 @@ public class TestBoundedRegionGroupingStrategy {
     }
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() throws Exception {
     CONF = TEST_UTIL.getConfiguration();
     // Make block sizes small.
@@ -110,7 +105,7 @@ public class TestBoundedRegionGroupingStrategy {
     FS = TEST_UTIL.getDFSCluster().getFileSystem();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass() throws Exception {
     TEST_UTIL.shutdownMiniCluster();
   }
@@ -118,7 +113,7 @@ public class TestBoundedRegionGroupingStrategy {
   /**
    * Ensure that we can use Set.add to deduplicate WALs
    */
-  @Test
+  @TestTemplate
   public void setMembershipDedups() throws IOException {
     final int temp = CONF.getInt(BoundedGroupingStrategy.NUM_REGION_GROUPS,
       BoundedGroupingStrategy.DEFAULT_NUM_REGION_GROUPS);
@@ -140,8 +135,9 @@ public class TestBoundedRegionGroupingStrategy {
           count++;
         }
       }
-      assertEquals("received back a different number of WALs that are not 
equal() to each other "
-        + "than the bound we placed.", temp * 4, count);
+      assertEquals(temp * 4, count,
+        "received back a different number of WALs that are not equal() to each 
other "
+          + "than the bound we placed.");
     } finally {
       if (wals != null) {
         wals.close();

Reply via email to