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 4ba1c366a3e HBASE-29869 Upgrade hbase-balancer to use junit5 (#7716)
4ba1c366a3e is described below

commit 4ba1c366a3e23b6a511178fbeda41fb32c703621
Author: Liu Xiao <[email protected]>
AuthorDate: Tue Feb 10 10:20:03 2026 +0800

    HBASE-29869 Upgrade hbase-balancer to use junit5 (#7716)
    
    Signed-off-by: Duo Zhang <[email protected]>
---
 hbase-balancer/pom.xml                             |   5 -
 .../favored/TestFavoredNodeAssignmentHelper.java   | 131 ++++++++++-----------
 .../favored/TestStartcodeAgnosticServerName.java   |  25 ++--
 .../apache/hadoop/hbase/master/TestRegionPlan.java |  48 ++++----
 .../hbase/master/balancer/BalancerTestBase.java    |  18 +--
 .../balancer/StochasticBalancerTestBase.java       |  16 +--
 .../balancer/StochasticBalancerTestBase2.java      |   8 +-
 .../master/balancer/TestBalancerConditionals.java  |  38 +++---
 .../master/balancer/TestBaseLoadBalancer.java      |  90 +++++++-------
 .../hbase/master/balancer/TestDoubleArrayCost.java |  15 +--
 ...terBalancingConditionalReplicaDistribution.java |  17 +--
 ...estLargeClusterBalancingMetaTableIsolation.java |  18 +--
 ...tLargeClusterBalancingSystemTableIsolation.java |  18 +--
 ...ancingTableIsolationAndReplicaDistribution.java |  17 +--
 .../TestRegionHDFSBlockLocationFinder.java         |  33 +++---
 .../hbase/master/balancer/TestServerAndLoad.java   |  18 +--
 .../master/balancer/TestSimpleLoadBalancer.java    |  39 +++---
 .../balancer/TestStochasticLoadBalancer.java       |  52 ++++----
 .../TestStochasticLoadBalancerBalanceCluster.java  |  19 ++-
 ...estStochasticLoadBalancerHeterogeneousCost.java |  21 ++--
 ...ochasticLoadBalancerHeterogeneousCostRules.java |  35 +++---
 .../TestStochasticLoadBalancerLargeCluster.java    |  13 +-
 .../TestStochasticLoadBalancerMidCluster.java      |  13 +-
 .../TestStochasticLoadBalancerRegionReplica.java   |  19 ++-
 ...icLoadBalancerRegionReplicaHighReplication.java |  13 +-
 ...asticLoadBalancerRegionReplicaLargeCluster.java |  13 +-
 ...chasticLoadBalancerRegionReplicaMidCluster.java |  13 +-
 ...egionReplicaReplicationGreaterThanNumNodes.java |  13 +-
 ...ochasticLoadBalancerRegionReplicaSameHosts.java |  13 +-
 ...ochasticLoadBalancerRegionReplicaWithRacks.java |  18 +--
 .../TestStochasticLoadBalancerSmallCluster.java    |  13 +-
 .../TestStoreFileTableSkewCostFunction.java        |  25 ++--
 .../balancer/TestUnattainableBalancerCostGoal.java |  17 +--
 33 files changed, 360 insertions(+), 504 deletions(-)

diff --git a/hbase-balancer/pom.xml b/hbase-balancer/pom.xml
index bd7fd01794d..42f883c5833 100644
--- a/hbase-balancer/pom.xml
+++ b/hbase-balancer/pom.xml
@@ -93,11 +93,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.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/favored/TestFavoredNodeAssignmentHelper.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/favored/TestFavoredNodeAssignmentHelper.java
index 1caea76a82f..3f2ec034f02 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/favored/TestFavoredNodeAssignmentHelper.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/favored/TestFavoredNodeAssignmentHelper.java
@@ -17,11 +17,12 @@
  */
 package org.apache.hadoop.hbase.favored;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.when;
 
@@ -33,7 +34,6 @@ import java.util.Map;
 import java.util.NavigableMap;
 import java.util.Set;
 import java.util.TreeMap;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
@@ -45,33 +45,28 @@ import 
org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 import org.apache.hadoop.hbase.util.Triple;
-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.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
 import org.mockito.Mockito;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 import org.apache.hbase.thirdparty.com.google.common.collect.Sets;
 
-@Category({ MasterTests.class, MediumTests.class })
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestFavoredNodeAssignmentHelper {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestFavoredNodeAssignmentHelper.class);
-
-  private static List<ServerName> servers = new ArrayList<>();
-  private static Map<String, List<ServerName>> rackToServers = new HashMap<>();
-  private static RackManager rackManager = Mockito.mock(RackManager.class);
+  private static final List<ServerName> servers = new ArrayList<>();
+  private static final Map<String, List<ServerName>> rackToServers = new 
HashMap<>();
+  private static final RackManager rackManager = 
Mockito.mock(RackManager.class);
 
   // Some tests have randomness, so we run them multiple times
   private static final int MAX_ATTEMPTS = 100;
 
-  @Rule
-  public TestName name = new TestName();
+  private static String methodName;
 
   private static String getRack(int index) {
     if (index < 10) {
@@ -85,8 +80,8 @@ public class TestFavoredNodeAssignmentHelper {
     }
   }
 
-  @BeforeClass
-  public static void setupBeforeClass() throws Exception {
+  @BeforeAll
+  public static void setupBeforeAll() throws Exception {
     // Set up some server -> rack mappings
     // Have three racks in the cluster with 10 hosts each.
     when(rackManager.getRack(any(ServerName.class))).then(invocation -> {
@@ -108,6 +103,11 @@ public class TestFavoredNodeAssignmentHelper {
     }
   }
 
+  @BeforeEach
+  public void setupEach(TestInfo testInfo) {
+    methodName = testInfo.getTestMethod().get().getName();
+  }
+
   // The tests decide which racks to work with, and how many machines to
   // work with from any given rack
   // Return a random 'count' number of servers from 'rack'
@@ -181,9 +181,9 @@ public class TestFavoredNodeAssignmentHelper {
       ServerName[] secondaryAndTertiaryServers = 
secondaryAndTertiaryMap.get(region);
       assertNotNull(secondaryAndTertiaryServers);
       assertTrue(primaryRSMap.containsKey(region));
-      
assertTrue(!secondaryAndTertiaryServers[0].equals(primaryRSMap.get(region)));
-      
assertTrue(!secondaryAndTertiaryServers[1].equals(primaryRSMap.get(region)));
-      
assertTrue(!secondaryAndTertiaryServers[0].equals(secondaryAndTertiaryServers[1]));
+      assertNotEquals(secondaryAndTertiaryServers[0], 
primaryRSMap.get(region));
+      assertNotEquals(secondaryAndTertiaryServers[1], 
primaryRSMap.get(region));
+      assertNotEquals(secondaryAndTertiaryServers[0], 
secondaryAndTertiaryServers[1]);
     }
   }
 
@@ -203,7 +203,7 @@ public class TestFavoredNodeAssignmentHelper {
     Map<RegionInfo, ServerName[]> secondaryAndTertiaryMap =
       helper.placeSecondaryAndTertiaryRS(primaryRSMap);
     // no secondary/tertiary placement in case of a single RegionServer
-    assertTrue(secondaryAndTertiaryMap.get(regions.get(0)) == null);
+    assertNull(secondaryAndTertiaryMap.get(regions.get(0)));
   }
 
   @Test
@@ -220,10 +220,10 @@ public class TestFavoredNodeAssignmentHelper {
     FavoredNodeAssignmentHelper helper = primaryRSMapAndHelper.getSecond();
     Map<RegionInfo, ServerName> primaryRSMap = 
primaryRSMapAndHelper.getFirst();
 
-    assertTrue(primaryRSMap.size() == 60000);
+    assertEquals(60000, primaryRSMap.size());
     Map<RegionInfo, ServerName[]> secondaryAndTertiaryMap =
       helper.placeSecondaryAndTertiaryRS(primaryRSMap);
-    assertTrue(secondaryAndTertiaryMap.size() == 60000);
+    assertEquals(60000, secondaryAndTertiaryMap.size());
     // for every region, the primary should be on one rack and the 
secondary/tertiary
     // on another (we create a lot of regions just to increase probability of 
failure)
     for (Map.Entry<RegionInfo, ServerName[]> entry : 
secondaryAndTertiaryMap.entrySet()) {
@@ -251,12 +251,12 @@ public class TestFavoredNodeAssignmentHelper {
     FavoredNodeAssignmentHelper helper = primaryRSMapAndHelper.getSecond();
     Map<RegionInfo, ServerName> primaryRSMap = 
primaryRSMapAndHelper.getFirst();
     List<RegionInfo> regions = primaryRSMapAndHelper.getThird();
-    assertTrue(primaryRSMap.size() == 6);
+    assertEquals(6, primaryRSMap.size());
     Map<RegionInfo, ServerName[]> secondaryAndTertiaryMap =
       helper.placeSecondaryAndTertiaryRS(primaryRSMap);
     for (RegionInfo region : regions) {
       // not enough secondary/tertiary room to place the regions
-      assertTrue(secondaryAndTertiaryMap.get(region) == null);
+      assertNull(secondaryAndTertiaryMap.get(region));
     }
   }
 
@@ -276,10 +276,10 @@ public class TestFavoredNodeAssignmentHelper {
     FavoredNodeAssignmentHelper helper = primaryRSMapAndHelper.getSecond();
     Map<RegionInfo, ServerName> primaryRSMap = 
primaryRSMapAndHelper.getFirst();
     List<RegionInfo> regions = primaryRSMapAndHelper.getThird();
-    assertTrue(primaryRSMap.size() == 6);
+    assertEquals(6, primaryRSMap.size());
     Map<RegionInfo, ServerName[]> secondaryAndTertiaryMap =
       helper.placeSecondaryAndTertiaryRS(primaryRSMap);
-    assertTrue(secondaryAndTertiaryMap.size() == regions.size());
+    assertEquals(secondaryAndTertiaryMap.size(), regions.size());
     for (RegionInfo region : regions) {
       ServerName s = primaryRSMap.get(region);
       ServerName secondaryRS = secondaryAndTertiaryMap.get(region)[0];
@@ -301,7 +301,7 @@ public class TestFavoredNodeAssignmentHelper {
     // create regions
     List<RegionInfo> regions = new ArrayList<>(regionCount);
     for (int i = 0; i < regionCount; i++) {
-      
regions.add(RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
+      regions.add(RegionInfoBuilder.newBuilder(TableName.valueOf(methodName))
         .setStartKey(Bytes.toBytes(i)).setEndKey(Bytes.toBytes(i + 
1)).build());
     }
     // place the regions
@@ -367,18 +367,15 @@ public class TestFavoredNodeAssignmentHelper {
     regionMap.put(regionsOnRack1, 1);
     regionMap.put(regionsOnRack2, 2);
     regionMap.put(regionsOnRack3, 3);
-    assertEquals(
+    assertEquals(rackMap.get(firstRackSize).intValue(), 
regionMap.get(regionsOnRack1).intValue(),
       printProportions(firstRackSize, secondRackSize, thirdRackSize, 
regionsOnRack1, regionsOnRack2,
-        regionsOnRack3),
-      rackMap.get(firstRackSize).intValue(), 
regionMap.get(regionsOnRack1).intValue());
-    assertEquals(
+        regionsOnRack3));
+    assertEquals(rackMap.get(secondRackSize).intValue(), 
regionMap.get(regionsOnRack2).intValue(),
       printProportions(firstRackSize, secondRackSize, thirdRackSize, 
regionsOnRack1, regionsOnRack2,
-        regionsOnRack3),
-      rackMap.get(secondRackSize).intValue(), 
regionMap.get(regionsOnRack2).intValue());
-    assertEquals(
+        regionsOnRack3));
+    assertEquals(rackMap.get(thirdRackSize).intValue(), 
regionMap.get(regionsOnRack3).intValue(),
       printProportions(firstRackSize, secondRackSize, thirdRackSize, 
regionsOnRack1, regionsOnRack2,
-        regionsOnRack3),
-      rackMap.get(thirdRackSize).intValue(), 
regionMap.get(regionsOnRack3).intValue());
+        regionsOnRack3));
   }
 
   private String printProportions(int firstRackSize, int secondRackSize, int 
thirdRackSize,
@@ -399,13 +396,13 @@ public class TestFavoredNodeAssignmentHelper {
 
     List<RegionInfo> regions = new ArrayList<>(20);
     for (int i = 0; i < 20; i++) {
-      
regions.add(RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
+      regions.add(RegionInfoBuilder.newBuilder(TableName.valueOf(methodName))
         .setStartKey(Bytes.toBytes(i)).setEndKey(Bytes.toBytes(i + 
1)).build());
     }
     Map<ServerName, List<RegionInfo>> assignmentMap = new HashMap<ServerName, 
List<RegionInfo>>();
     Map<RegionInfo, ServerName> primaryRSMap = new HashMap<RegionInfo, 
ServerName>();
     helper.placePrimaryRSAsRoundRobin(assignmentMap, primaryRSMap, regions);
-    assertTrue(primaryRSMap.size() == regions.size());
+    assertEquals(primaryRSMap.size(), regions.size());
     Map<RegionInfo, ServerName[]> secondaryAndTertiary =
       helper.placeSecondaryAndTertiaryRS(primaryRSMap);
     assertEquals(regions.size(), secondaryAndTertiary.size());
@@ -459,7 +456,7 @@ public class TestFavoredNodeAssignmentHelper {
     // Check we don't get a bad node on any number of attempts
     for (int attempts = 0; attempts < MAX_ATTEMPTS; attempts++) {
       ServerName sn = helper.getOneRandomServer(rack, Sets.newHashSet());
-      assertTrue("Server:" + sn + " does not belong to list: " + servers, 
servers.contains(sn));
+      assertTrue(servers.contains(sn), "Server:" + sn + " does not belong to 
list: " + servers);
     }
 
     // Check skipServers multiple times when an invalid server is specified
@@ -467,7 +464,7 @@ public class TestFavoredNodeAssignmentHelper {
       Sets.newHashSet(ServerName.valueOf("invalidnode:1234", 
ServerName.NON_STARTCODE));
     for (int attempts = 0; attempts < MAX_ATTEMPTS; attempts++) {
       ServerName sn = helper.getOneRandomServer(rack, skipServers);
-      assertTrue("Server:" + sn + " does not belong to list: " + servers, 
servers.contains(sn));
+      assertTrue(servers.contains(sn), "Server:" + sn + " does not belong to 
list: " + servers);
     }
 
     // Check skipRack multiple times when an valid servers are specified
@@ -475,8 +472,8 @@ public class TestFavoredNodeAssignmentHelper {
     skipServers = Sets.newHashSet(skipSN);
     for (int attempts = 0; attempts < MAX_ATTEMPTS; attempts++) {
       ServerName sn = helper.getOneRandomServer(rack, skipServers);
-      assertNotEquals("Skip server should not be selected ", 
skipSN.getAddress(), sn.getAddress());
-      assertTrue("Server:" + sn + " does not belong to list: " + servers, 
servers.contains(sn));
+      assertNotEquals(skipSN.getAddress(), sn.getAddress(), "Skip server 
should not be selected ");
+      assertTrue(servers.contains(sn), "Server:" + sn + " does not belong to 
list: " + servers);
     }
   }
 
@@ -497,8 +494,8 @@ public class TestFavoredNodeAssignmentHelper {
     for (int attempts = 0; attempts < MAX_ATTEMPTS; attempts++) {
       for (String rack : rackList) {
         ServerName sn = helper.getOneRandomServer(rack, Sets.newHashSet());
-        assertTrue("Server:" + sn + " does not belong to rack servers: " + 
rackToServers.get(rack),
-          rackToServers.get(rack).contains(sn));
+        assertTrue(rackToServers.get(rack).contains(sn),
+          "Server:" + sn + " does not belong to rack servers: " + 
rackToServers.get(rack));
       }
     }
 
@@ -508,8 +505,8 @@ public class TestFavoredNodeAssignmentHelper {
     for (int attempts = 0; attempts < MAX_ATTEMPTS; attempts++) {
       for (String rack : rackList) {
         ServerName sn = helper.getOneRandomServer(rack, skipServers);
-        assertTrue("Server:" + sn + " does not belong to rack servers: " + 
rackToServers.get(rack),
-          rackToServers.get(rack).contains(sn));
+        assertTrue(rackToServers.get(rack).contains(sn),
+          "Server:" + sn + " does not belong to rack servers: " + 
rackToServers.get(rack));
       }
     }
 
@@ -521,9 +518,9 @@ public class TestFavoredNodeAssignmentHelper {
     for (int attempts = 0; attempts < MAX_ATTEMPTS; attempts++) {
       for (String rack : rackList) {
         ServerName sn = helper.getOneRandomServer(rack, skipServers);
-        assertFalse("Skip server should not be selected ", 
skipServers.contains(sn));
-        assertTrue("Server:" + sn + " does not belong to rack servers: " + 
rackToServers.get(rack),
-          rackToServers.get(rack).contains(sn));
+        assertFalse(skipServers.contains(sn), "Skip server should not be 
selected ");
+        assertTrue(rackToServers.get(rack).contains(sn),
+          "Server:" + sn + " does not belong to rack servers: " + 
rackToServers.get(rack));
       }
     }
   }
@@ -541,7 +538,7 @@ public class TestFavoredNodeAssignmentHelper {
     helper.initialize();
     assertTrue(helper.canPlaceFavoredNodes());
 
-    RegionInfo region = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
+    RegionInfo region = 
RegionInfoBuilder.newBuilder(TableName.valueOf(methodName))
       
.setStartKey(HConstants.EMPTY_START_ROW).setEndKey(HConstants.EMPTY_END_ROW).build();
 
     for (int maxattempts = 0; maxattempts < MAX_ATTEMPTS; maxattempts++) {
@@ -576,7 +573,7 @@ public class TestFavoredNodeAssignmentHelper {
     for (int attempts = 0; attempts < MAX_ATTEMPTS; attempts++) {
       ServerName genSN = helper.generateMissingFavoredNode(fn, skipServers);
       checkDuplicateFN(fn, genSN);
-      assertNotEquals("Generated FN should not match excluded one", 
snRack1SN3, genSN);
+      assertNotEquals(snRack1SN3, genSN, "Generated FN should not match 
excluded one");
     }
   }
 
@@ -619,22 +616,22 @@ public class TestFavoredNodeAssignmentHelper {
       ServerName genSN = helper.generateMissingFavoredNode(fn, skipServers);
       checkDuplicateFN(fn, genSN);
       checkFNRacks(fn, genSN);
-      assertNotEquals("Generated FN should not match excluded one", 
snRack2SN2, genSN);
+      assertNotEquals(snRack2SN2, genSN, "Generated FN should not match 
excluded one");
     }
   }
 
   private void checkDuplicateFN(List<ServerName> fnList, ServerName genFN) {
     Set<ServerName> favoredNodes = Sets.newHashSet(fnList);
-    assertNotNull("Generated FN can't be null", genFN);
+    assertNotNull(genFN, "Generated FN can't be null");
     favoredNodes.add(genFN);
-    assertEquals("Did not find expected number of favored nodes",
-      FavoredNodeAssignmentHelper.FAVORED_NODES_NUM, favoredNodes.size());
+    assertEquals(FavoredNodeAssignmentHelper.FAVORED_NODES_NUM, 
favoredNodes.size(),
+      "Did not find expected number of favored nodes");
   }
 
   private void checkDuplicateFN(List<ServerName> fnList) {
     Set<ServerName> favoredNodes = Sets.newHashSet(fnList);
-    assertEquals("Did not find expected number of favored nodes",
-      FavoredNodeAssignmentHelper.FAVORED_NODES_NUM, favoredNodes.size());
+    assertEquals(FavoredNodeAssignmentHelper.FAVORED_NODES_NUM, 
favoredNodes.size(),
+      "Did not find expected number of favored nodes");
   }
 
   private void checkFNRacks(List<ServerName> fnList, ServerName genFN) {
@@ -644,7 +641,7 @@ public class TestFavoredNodeAssignmentHelper {
     for (ServerName sn : favoredNodes) {
       racks.add(rackManager.getRack(sn));
     }
-    assertTrue("FN should be spread atleast across 2 racks", racks.size() >= 
2);
+    assertTrue(racks.size() >= 2, "FN should be spread atleast across 2 
racks");
   }
 
   private void checkFNRacks(List<ServerName> fnList) {
@@ -653,6 +650,6 @@ public class TestFavoredNodeAssignmentHelper {
     for (ServerName sn : favoredNodes) {
       racks.add(rackManager.getRack(sn));
     }
-    assertTrue("FN should be spread atleast across 2 racks", racks.size() >= 
2);
+    assertTrue(racks.size() >= 2, "FN should be spread atleast across 2 
racks");
   }
 }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/favored/TestStartcodeAgnosticServerName.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/favored/TestStartcodeAgnosticServerName.java
index 095495729f2..ee8addc1145 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/favored/TestStartcodeAgnosticServerName.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/favored/TestStartcodeAgnosticServerName.java
@@ -17,24 +17,19 @@
  */
 package org.apache.hadoop.hbase.favored;
 
-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 org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 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 TestStartcodeAgnosticServerName {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStartcodeAgnosticServerName.class);
-
   @Test
   public void testStartCodeServerName() {
     ServerName sn = ServerName.valueOf("www.example.org", 1234, 5678);
@@ -42,15 +37,15 @@ public class TestStartcodeAgnosticServerName {
       new StartcodeAgnosticServerName("www.example.org", 1234, 5678);
 
     assertTrue(ServerName.isSameAddress(sn, snStartCode));
-    assertTrue(snStartCode.equals(sn));
-    assertTrue(sn.equals(snStartCode));
+    assertEquals(snStartCode, sn);
+    assertEquals(sn, snStartCode);
     assertEquals(0, snStartCode.compareTo(sn));
 
     StartcodeAgnosticServerName snStartCodeFNPort =
       new StartcodeAgnosticServerName("www.example.org", 1234, 
ServerName.NON_STARTCODE);
     assertTrue(ServerName.isSameAddress(snStartCodeFNPort, snStartCode));
-    assertTrue(snStartCode.equals(snStartCodeFNPort));
-    assertTrue(snStartCodeFNPort.equals(snStartCode));
+    assertEquals(snStartCode, snStartCodeFNPort);
+    assertEquals(snStartCodeFNPort, snStartCode);
     assertEquals(0, snStartCode.compareTo(snStartCodeFNPort));
   }
 }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/TestRegionPlan.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/TestRegionPlan.java
index c65198b825b..f4b37efe3c8 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/TestRegionPlan.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/TestRegionPlan.java
@@ -17,39 +17,37 @@
  */
 package org.apache.hadoop.hbase.master;
 
-import static junit.framework.TestCase.assertFalse;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.client.RegionInfoBuilder;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-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.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
 
-@Category({ MasterTests.class, SmallTests.class })
+@Tag(MasterTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestRegionPlan {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRegionPlan.class);
-
   private final ServerName SRC = ServerName.valueOf("source", 1234, 2345);
   private final ServerName DEST = ServerName.valueOf("dest", 1234, 2345);
-  @Rule
-  public TestName name = new TestName();
+
+  private String methodName;
+
+  @BeforeEach
+  public void setUp(TestInfo testInfo) {
+    methodName = testInfo.getTestMethod().get().getName();
+  }
 
   @Test
   public void testCompareTo() {
-    RegionInfo hri = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName())).build();
+    RegionInfo hri = 
RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).build();
     RegionPlan a = new RegionPlan(hri, null, null);
     RegionPlan b = new RegionPlan(hri, null, null);
     assertEquals(0, a.compareTo(b));
@@ -72,24 +70,24 @@ public class TestRegionPlan {
 
   @Test
   public void testEqualsWithNulls() {
-    RegionInfo hri = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName())).build();
+    RegionInfo hri = 
RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).build();
     RegionPlan a = new RegionPlan(hri, null, null);
     RegionPlan b = new RegionPlan(hri, null, null);
-    assertTrue(a.equals(b));
+    assertEquals(a, b);
     a = new RegionPlan(hri, SRC, null);
     b = new RegionPlan(hri, null, null);
-    assertFalse(a.equals(b));
+    assertNotEquals(a, b);
     a = new RegionPlan(hri, SRC, null);
     b = new RegionPlan(hri, SRC, null);
-    assertTrue(a.equals(b));
+    assertEquals(a, b);
     a = new RegionPlan(hri, SRC, null);
     b = new RegionPlan(hri, SRC, DEST);
-    assertFalse(a.equals(b));
+    assertNotEquals(a, b);
   }
 
   @Test
   public void testEquals() {
-    RegionInfo hri = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName())).build();
+    RegionInfo hri = 
RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).build();
 
     // Identity equality
     RegionPlan plan = new RegionPlan(hri, SRC, DEST);
@@ -98,7 +96,7 @@ public class TestRegionPlan {
 
     // HRI is used for equality
     RegionInfo other =
-      RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName() + 
"other")).build();
+      RegionInfoBuilder.newBuilder(TableName.valueOf(methodName + 
"other")).build();
     assertNotEquals(plan.hashCode(), new RegionPlan(other, SRC, 
DEST).hashCode());
     assertNotEquals(plan, new RegionPlan(other, SRC, DEST));
   }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java
index 54729f88b70..d2d7174d021 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java
@@ -17,7 +17,8 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -45,7 +46,6 @@ import org.apache.hadoop.hbase.master.RackManager;
 import org.apache.hadoop.hbase.master.RegionPlan;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.net.DNSToSwitchMapping;
-import org.junit.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -171,11 +171,11 @@ public class BalancerTestBase {
     int max = numRegions % numServers == 0 ? min : min + 1;
 
     for (ServerAndLoad server : servers) {
-      assertTrue("All servers should have a positive load. " + server, 
server.getLoad() >= 0);
-      assertTrue("All servers should have load no more than " + max + ". " + 
server,
-        server.getLoad() <= max);
-      assertTrue("All servers should have load no less than " + min + ". " + 
server,
-        server.getLoad() >= min);
+      assertTrue(server.getLoad() >= 0, "All servers should have a positive 
load. " + server);
+      assertTrue(server.getLoad() <= max,
+        "All servers should have load no more than " + max + ". " + server);
+      assertTrue(server.getLoad() >= min,
+        "All servers should have load no less than " + min + ". " + server);
     }
   }
 
@@ -237,7 +237,7 @@ public class BalancerTestBase {
       for (RegionInfo info : entry.getValue()) {
         RegionInfo primaryInfo = 
RegionReplicaUtil.getRegionInfoForDefaultReplica(info);
         if (!infos.add(primaryInfo)) {
-          Assert.fail("Two or more region replicas are hosted on the same host 
after balance");
+          fail("Two or more region replicas are hosted on the same host after 
balance");
         }
       }
     }
@@ -257,7 +257,7 @@ public class BalancerTestBase {
       for (RegionInfo info : entry.getValue()) {
         RegionInfo primaryInfo = 
RegionReplicaUtil.getRegionInfoForDefaultReplica(info);
         if (!infos.add(primaryInfo)) {
-          Assert.fail("Two or more region replicas are hosted on the same rack 
after balance");
+          fail("Two or more region replicas are hosted on the same rack after 
balance");
         }
       }
     }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/StochasticBalancerTestBase.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/StochasticBalancerTestBase.java
index 9578f212efb..02630bc0dc0 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/StochasticBalancerTestBase.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/StochasticBalancerTestBase.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.time.Duration;
 import java.util.List;
@@ -30,7 +30,7 @@ import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.master.RackManager;
 import org.apache.hadoop.hbase.master.RegionPlan;
 import org.apache.hadoop.net.DNSToSwitchMapping;
-import org.junit.BeforeClass;
+import org.junit.jupiter.api.BeforeAll;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,7 +44,7 @@ public class StochasticBalancerTestBase extends 
BalancerTestBase {
   protected static DummyMetricsStochasticBalancer 
dummyMetricsStochasticBalancer =
     new DummyMetricsStochasticBalancer();
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeAllTests() throws Exception {
     conf = HBaseConfiguration.create();
     conf.setClass("hbase.util.ip.to.rack.determiner", MockMapping.class, 
DNSToSwitchMapping.class);
@@ -84,7 +84,7 @@ public class StochasticBalancerTestBase extends 
BalancerTestBase {
   protected void testWithClusterWithIteration(Map<ServerName, 
List<RegionInfo>> serverMap,
     RackManager rackManager, boolean assertFullyBalanced, boolean 
assertFullyBalancedForReplicas) {
     List<ServerAndLoad> list = convertToList(serverMap);
-    LOG.info("Mock Cluster : " + printMock(list) + " " + printStats(list));
+    LOG.info("Mock Cluster : {} {}", printMock(list), printStats(list));
 
     loadBalancer.setRackManager(rackManager);
     // Run the balancer.
@@ -106,7 +106,7 @@ public class StochasticBalancerTestBase extends 
BalancerTestBase {
       balancedCluster = reconcile(list, plans, serverMap);
 
       // Print out the cluster loads to make debugging easier.
-      LOG.info("Mock after balance: " + printMock(balancedCluster));
+      LOG.info("Mock after balance: {}", printMock(balancedCluster));
 
       LoadOfAllTable = (Map) mockClusterServersWithTables(serverMap);
       plans = loadBalancer.balanceCluster(LoadOfAllTable);
@@ -116,8 +116,8 @@ public class StochasticBalancerTestBase extends 
BalancerTestBase {
     LOG.info("Mock Final balance: " + printMock(balancedCluster));
 
     if (assertFullyBalanced) {
-      assertNull("Given a requirement to be fully balanced, second attempt at 
plans should "
-        + "produce none.", plans);
+      assertNull(plans, "Given a requirement to be fully balanced, second 
attempt at plans should "
+        + "produce none.");
     }
     if (assertFullyBalancedForReplicas) {
       assertRegionReplicaPlacement(serverMap, rackManager);
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/StochasticBalancerTestBase2.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/StochasticBalancerTestBase2.java
index 9bab75b5125..1dd62245078 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/StochasticBalancerTestBase2.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/StochasticBalancerTestBase2.java
@@ -17,12 +17,12 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import org.junit.After;
-import org.junit.Before;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 public class StochasticBalancerTestBase2 extends StochasticBalancerTestBase {
 
-  @Before
+  @BeforeEach
   public void before() {
     conf.setLong(StochasticLoadBalancer.MAX_STEPS_KEY, 2000000L);
     conf.setFloat("hbase.master.balancer.stochastic.localityCost", 0);
@@ -31,7 +31,7 @@ public class StochasticBalancerTestBase2 extends 
StochasticBalancerTestBase {
     loadBalancer.onConfigurationChange(conf);
   }
 
-  @After
+  @AfterEach
   public void after() {
     // reset config to make sure balancer run
     loadBalancer.onConfigurationChange(conf);
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBalancerConditionals.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBalancerConditionals.java
index 4dc40cda548..ee37412914d 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBalancerConditionals.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBalancerConditionals.java
@@ -17,29 +17,24 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-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 org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ SmallTests.class, MasterTests.class })
+@Tag(MasterTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestBalancerConditionals extends BalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBalancerConditionals.class);
-
   private BalancerConditionals balancerConditionals;
   private BalancerClusterState mockCluster;
 
-  @Before
+  @BeforeEach
   public void setUp() {
     balancerConditionals = BalancerConditionals.create();
     mockCluster = mockCluster(new int[] { 0, 1, 2 });
@@ -51,8 +46,8 @@ public class TestBalancerConditionals extends 
BalancerTestBase {
     balancerConditionals.setConf(conf);
     balancerConditionals.loadClusterState(mockCluster);
 
-    assertEquals("No conditionals should be loaded by default", 0,
-      balancerConditionals.getConditionalClasses().size());
+    assertEquals(0, balancerConditionals.getConditionalClasses().size(),
+      "No conditionals should be loaded by default");
   }
 
   @Test
@@ -64,8 +59,8 @@ public class TestBalancerConditionals extends 
BalancerTestBase {
     balancerConditionals.setConf(conf);
     balancerConditionals.loadClusterState(mockCluster);
 
-    assertTrue("Custom conditionals should be loaded",
-      balancerConditionals.isConditionalBalancingEnabled());
+    assertTrue(balancerConditionals.isConditionalBalancingEnabled(),
+      "Custom conditionals should be loaded");
   }
 
   @Test
@@ -76,8 +71,8 @@ public class TestBalancerConditionals extends 
BalancerTestBase {
     balancerConditionals.setConf(conf);
     balancerConditionals.loadClusterState(mockCluster);
 
-    assertEquals("Invalid classes should not be loaded as conditionals", 0,
-      balancerConditionals.getConditionalClasses().size());
+    assertEquals(0, balancerConditionals.getConditionalClasses().size(),
+      "Invalid classes should not be loaded as conditionals");
   }
 
   @Test
@@ -88,8 +83,7 @@ public class TestBalancerConditionals extends 
BalancerTestBase {
     balancerConditionals.setConf(conf);
     balancerConditionals.loadClusterState(mockCluster);
 
-    assertTrue("MetaTableIsolationConditional should be active",
-      balancerConditionals.isTableIsolationEnabled());
+    assertTrue(balancerConditionals.isTableIsolationEnabled(),
+      "MetaTableIsolationConditional should be active");
   }
-
 }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java
index d9df27994ac..31bf3d1ed9f 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java
@@ -17,9 +17,10 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -36,7 +37,6 @@ import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.ServerMetrics;
 import org.apache.hadoop.hbase.ServerName;
@@ -51,30 +51,26 @@ import 
org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.net.DNSToSwitchMapping;
-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.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
 
-@Category({ MasterTests.class, MediumTests.class })
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestBaseLoadBalancer extends BalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestBaseLoadBalancer.class);
-
   private static LoadBalancer loadBalancer;
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBaseLoadBalancer.class);
   private static final ServerName master = ServerName.valueOf("fake-master", 
0, 1L);
   private static RackManager rackManager;
   private static final int NUM_SERVERS = 15;
-  private static ServerName[] servers = new ServerName[NUM_SERVERS];
+  private static final ServerName[] servers = new ServerName[NUM_SERVERS];
 
   int[][] regionsAndServersMocks = new int[][] {
     // { num regions, num servers }
@@ -83,10 +79,9 @@ public class TestBaseLoadBalancer extends BalancerTestBase {
     new int[] { 1, 3 }, new int[] { 2, 3 }, new int[] { 3, 3 }, new int[] { 
25, 3 },
     new int[] { 2, 10 }, new int[] { 2, 100 }, new int[] { 12, 10 }, new int[] 
{ 12, 100 }, };
 
-  @Rule
-  public TestName name = new TestName();
+  private String methodName;
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeAllTests() throws Exception {
     Configuration conf = HBaseConfiguration.create();
     conf.setClass("hbase.util.ip.to.rack.determiner", MockMapping.class, 
DNSToSwitchMapping.class);
@@ -109,6 +104,11 @@ public class TestBaseLoadBalancer extends BalancerTestBase 
{
     }
   }
 
+  @BeforeEach
+  public void setUpBeforeEach(TestInfo testInfo) throws Exception {
+    methodName = testInfo.getTestMethod().get().getName();
+  }
+
   public static class MockBalancer extends BaseLoadBalancer {
 
     @Override
@@ -136,7 +136,7 @@ public class TestBaseLoadBalancer extends BalancerTestBase {
     }
     assertEquals(hris.size(), totalRegion);
     for (int[] mock : regionsAndServersMocks) {
-      LOG.debug("testBulkAssignment with " + mock[0] + " regions and " + 
mock[1] + " servers");
+      LOG.debug("testBulkAssignment with {} regions and {} servers", mock[0], 
mock[1]);
       List<RegionInfo> regions = randomRegions(mock[0]);
       List<ServerAndLoad> servers = randomServers(mock[1], 0);
       List<ServerName> list = getListOfServerNames(servers);
@@ -197,7 +197,7 @@ public class TestBaseLoadBalancer extends BalancerTestBase {
   @Test
   public void testRandomAssignment() throws Exception {
     for (int i = 1; i != 5; ++i) {
-      LOG.info("run testRandomAssignment() with idle servers:" + i);
+      LOG.info("run testRandomAssignment() with idle servers:{}", i);
       testRandomAssignment(i);
     }
   }
@@ -222,14 +222,14 @@ public class TestBaseLoadBalancer extends 
BalancerTestBase {
         return idleServers;
       }
     });
-    RegionInfo hri1 = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
-      
.setStartKey(Bytes.toBytes("key1")).setEndKey(Bytes.toBytes("key2")).setSplit(false)
-      .setRegionId(100).build();
+    RegionInfo hri1 =
+      
RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).setStartKey(Bytes.toBytes("key1"))
+        
.setEndKey(Bytes.toBytes("key2")).setSplit(false).setRegionId(100).build();
     assertNull(balancer.randomAssignment(hri1, Collections.emptyList()));
     assertNull(balancer.randomAssignment(hri1, null));
     for (int i = 0; i != 3; ++i) {
       ServerName sn = balancer.randomAssignment(hri1, allServers);
-      assertTrue("actual:" + sn + ", except:" + idleServers, 
idleServers.contains(sn));
+      assertTrue(idleServers.contains(sn), "actual:" + sn + ", except:" + 
idleServers);
     }
   }
 
@@ -244,15 +244,15 @@ public class TestBaseLoadBalancer extends 
BalancerTestBase {
     List<RegionInfo> list1 = new ArrayList<>();
     List<RegionInfo> list2 = new ArrayList<>();
     // create a region (region1)
-    RegionInfo hri1 = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
-      
.setStartKey(Bytes.toBytes("key1")).setEndKey(Bytes.toBytes("key2")).setSplit(false)
-      .setRegionId(100).build();
+    RegionInfo hri1 =
+      
RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).setStartKey(Bytes.toBytes("key1"))
+        
.setEndKey(Bytes.toBytes("key2")).setSplit(false).setRegionId(100).build();
     // create a replica of the region (replica_of_region1)
     RegionInfo hri2 = RegionReplicaUtil.getRegionInfoForReplica(hri1, 1);
     // create a second region (region2)
-    RegionInfo hri3 = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
-      
.setStartKey(Bytes.toBytes("key2")).setEndKey(Bytes.toBytes("key3")).setSplit(false)
-      .setRegionId(101).build();
+    RegionInfo hri3 =
+      
RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).setStartKey(Bytes.toBytes("key2"))
+        
.setEndKey(Bytes.toBytes("key3")).setSplit(false).setRegionId(101).build();
     list0.add(hri1); // only region1
     list1.add(hri2); // only replica_of_region1
     list2.add(hri3); // only region2
@@ -270,13 +270,13 @@ public class TestBaseLoadBalancer extends 
BalancerTestBase {
     assertTrue(cluster.wouldLowerAvailability(hri1, servers[1]));
     // check whether a move of region1 from servers[0] to servers[2] would 
lower
     // the availability of region1
-    assertTrue(!cluster.wouldLowerAvailability(hri1, servers[2]));
+    assertFalse(cluster.wouldLowerAvailability(hri1, servers[2]));
     // check whether a move of replica_of_region1 from servers[0] to 
servers[2] would lower
     // the availability of replica_of_region1
-    assertTrue(!cluster.wouldLowerAvailability(hri2, servers[2]));
+    assertFalse(cluster.wouldLowerAvailability(hri2, servers[2]));
     // check whether a move of region2 from servers[0] to servers[1] would 
lower
     // the availability of region2
-    assertTrue(!cluster.wouldLowerAvailability(hri3, servers[1]));
+    assertFalse(cluster.wouldLowerAvailability(hri3, servers[1]));
 
     // now lets have servers[1] host replica_of_region2
     list1.add(RegionReplicaUtil.getRegionInfoForReplica(hri3, 1));
@@ -304,7 +304,7 @@ public class TestBaseLoadBalancer extends BalancerTestBase {
     cluster = new BalancerClusterState(clusterState, null, null, null);
     // now repeat check whether a move of region1 from servers[0] to 
servers[6] would
     // lower the availability
-    assertTrue(!cluster.wouldLowerAvailability(hri1, servers[6]));
+    assertFalse(cluster.wouldLowerAvailability(hri1, servers[6]));
   }
 
   @Test
@@ -313,15 +313,15 @@ public class TestBaseLoadBalancer extends 
BalancerTestBase {
     List<RegionInfo> list1 = new ArrayList<>();
     List<RegionInfo> list2 = new ArrayList<>();
     // create a region (region1)
-    RegionInfo hri1 = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
-      
.setStartKey(Bytes.toBytes("key1")).setEndKey(Bytes.toBytes("key2")).setSplit(false)
-      .setRegionId(100).build();
+    RegionInfo hri1 =
+      
RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).setStartKey(Bytes.toBytes("key1"))
+        
.setEndKey(Bytes.toBytes("key2")).setSplit(false).setRegionId(100).build();
     // create a replica of the region (replica_of_region1)
     RegionInfo hri2 = RegionReplicaUtil.getRegionInfoForReplica(hri1, 1);
     // create a second region (region2)
-    RegionInfo hri3 = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
-      
.setStartKey(Bytes.toBytes("key2")).setEndKey(Bytes.toBytes("key3")).setSplit(false)
-      .setRegionId(101).build();
+    RegionInfo hri3 =
+      
RegionInfoBuilder.newBuilder(TableName.valueOf(methodName)).setStartKey(Bytes.toBytes("key2"))
+        
.setEndKey(Bytes.toBytes("key3")).setSplit(false).setRegionId(101).build();
     list0.add(hri1); // only region1
     list1.add(hri2); // only replica_of_region1
     list2.add(hri3); // only region2
@@ -335,7 +335,7 @@ public class TestBaseLoadBalancer extends BalancerTestBase {
     // map (linkedhashmap is important).
     BalancerClusterState cluster = new BalancerClusterState(clusterState, 
null, null, rackManager);
     // check whether moving region1 from servers[1] to servers[2] would lower 
availability
-    assertTrue(!cluster.wouldLowerAvailability(hri1, servers[2]));
+    assertFalse(cluster.wouldLowerAvailability(hri1, servers[2]));
 
     // now move region1 from servers[0] to servers[2]
     cluster.doAction(new MoveRegionAction(0, 0, 2));
@@ -356,7 +356,7 @@ public class TestBaseLoadBalancer extends BalancerTestBase {
     cluster = new BalancerClusterState(clusterState, null, null, rackManager);
     // check whether a move of replica_of_region2 from servers[12],rack3 to 
servers[0],rack1 would
     // lower the availability
-    assertTrue(!cluster.wouldLowerAvailability(hri4, servers[0]));
+    assertFalse(cluster.wouldLowerAvailability(hri4, servers[0]));
     // now move region2 from servers[6],rack2 to servers[0],rack1
     cluster.doAction(new MoveRegionAction(2, 2, 0));
     // now repeat check if replica_of_region2 from servers[12],rack3 to 
servers[0],rack1 would
@@ -384,8 +384,8 @@ public class TestBaseLoadBalancer extends BalancerTestBase {
     Set<ServerName> onlineServerSet = new TreeSet<>(servers);
     Set<RegionInfo> assignedRegions = new TreeSet<>(RegionInfo.COMPARATOR);
     for (Map.Entry<ServerName, List<RegionInfo>> a : assignment.entrySet()) {
-      assertTrue("Region assigned to server that was not listed as online",
-        onlineServerSet.contains(a.getKey()));
+      assertTrue(onlineServerSet.contains(a.getKey()),
+        "Region assigned to server that was not listed as online");
       for (RegionInfo r : a.getValue())
         assignedRegions.add(r);
     }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestDoubleArrayCost.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestDoubleArrayCost.java
index e557b22d831..cf3215dd66d 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestDoubleArrayCost.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestDoubleArrayCost.java
@@ -17,22 +17,17 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 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({ MasterTests.class, SmallTests.class })
+@Tag(MasterTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestDoubleArrayCost {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestDoubleArrayCost.class);
-
   @Test
   public void testComputeCost() {
     DoubleArrayCost cost = new DoubleArrayCost();
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingConditionalReplicaDistribution.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingConditionalReplicaDistribution.java
index 4266c9a49b5..8dc73d19dfb 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingConditionalReplicaDistribution.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingConditionalReplicaDistribution.java
@@ -25,7 +25,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.RegionInfo;
@@ -36,20 +35,16 @@ import 
org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.net.DNSToSwitchMapping;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category({ MediumTests.class, MasterTests.class })
+@Tag(MediumTests.TAG)
+@Tag(MasterTests.TAG)
 public class TestLargeClusterBalancingConditionalReplicaDistribution {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestLargeClusterBalancingConditionalReplicaDistribution.class);
-
   private static final Logger LOG =
     
LoggerFactory.getLogger(TestLargeClusterBalancingConditionalReplicaDistribution.class);
 
@@ -61,7 +56,7 @@ public class 
TestLargeClusterBalancingConditionalReplicaDistribution {
   private static final ServerName[] servers = new ServerName[NUM_SERVERS];
   private static final Map<ServerName, List<RegionInfo>> serverToRegions = new 
HashMap<>();
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     // Initialize servers
     for (int i = 0; i < NUM_SERVERS; i++) {
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingMetaTableIsolation.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingMetaTableIsolation.java
index e4d2e168e2b..b2f39cf5711 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingMetaTableIsolation.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingMetaTableIsolation.java
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.RegionInfo;
@@ -35,20 +34,16 @@ import 
org.apache.hadoop.hbase.master.balancer.BalancerTestBase.MockMapping;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.net.DNSToSwitchMapping;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category({ MediumTests.class, MasterTests.class })
+@Tag(MediumTests.TAG)
+@Tag(MasterTests.TAG)
 public class TestLargeClusterBalancingMetaTableIsolation {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestLargeClusterBalancingMetaTableIsolation.class);
-
   private static final Logger LOG =
     LoggerFactory.getLogger(TestLargeClusterBalancingMetaTableIsolation.class);
 
@@ -60,7 +55,7 @@ public class TestLargeClusterBalancingMetaTableIsolation {
   private static final ServerName[] servers = new ServerName[NUM_SERVERS];
   private static final Map<ServerName, List<RegionInfo>> serverToRegions = new 
HashMap<>();
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     // Initialize servers
     for (int i = 0; i < NUM_SERVERS; i++) {
@@ -100,5 +95,4 @@ public class TestLargeClusterBalancingMetaTableIsolation {
   private boolean isMetaTableIsolated(BalancerClusterState cluster) {
     return isTableIsolated(cluster, TableName.META_TABLE_NAME, "Meta");
   }
-
 }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingSystemTableIsolation.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingSystemTableIsolation.java
index 565e0bcef86..434b7f9b2b6 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingSystemTableIsolation.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingSystemTableIsolation.java
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.RegionInfo;
@@ -35,20 +34,16 @@ import 
org.apache.hadoop.hbase.master.balancer.BalancerTestBase.MockMapping;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.net.DNSToSwitchMapping;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category({ MediumTests.class, MasterTests.class })
+@Tag(MediumTests.TAG)
+@Tag(MasterTests.TAG)
 public class TestLargeClusterBalancingSystemTableIsolation {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestLargeClusterBalancingSystemTableIsolation.class);
-
   private static final Logger LOG =
     
LoggerFactory.getLogger(TestLargeClusterBalancingSystemTableIsolation.class);
 
@@ -61,7 +56,7 @@ public class TestLargeClusterBalancingSystemTableIsolation {
   private static final ServerName[] servers = new ServerName[NUM_SERVERS];
   private static final Map<ServerName, List<RegionInfo>> serverToRegions = new 
HashMap<>();
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     // Initialize servers
     for (int i = 0; i < NUM_SERVERS; i++) {
@@ -101,5 +96,4 @@ public class TestLargeClusterBalancingSystemTableIsolation {
   private boolean isSystemTableIsolated(BalancerClusterState cluster) {
     return isTableIsolated(cluster, SYSTEM_TABLE_NAME, "System");
   }
-
 }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
index 1b54b06a5c9..df1274f4d53 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
@@ -27,7 +27,6 @@ import java.util.Map;
 import java.util.Random;
 import java.util.Set;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.RegionInfo;
@@ -36,20 +35,16 @@ import 
org.apache.hadoop.hbase.master.balancer.BalancerTestBase.MockMapping;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.net.DNSToSwitchMapping;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category({ MasterTests.class, LargeTests.class })
+@Tag(LargeTests.TAG)
+@Tag(MasterTests.TAG)
 public class TestLargeClusterBalancingTableIsolationAndReplicaDistribution {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule
-    
.forClass(TestLargeClusterBalancingTableIsolationAndReplicaDistribution.class);
-
   private static final Logger LOG =
     
LoggerFactory.getLogger(TestLargeClusterBalancingTableIsolationAndReplicaDistribution.class);
   private static final TableName SYSTEM_TABLE_NAME = 
TableName.valueOf("hbase:system");
@@ -62,7 +57,7 @@ public class 
TestLargeClusterBalancingTableIsolationAndReplicaDistribution {
   private static final ServerName[] servers = new ServerName[NUM_SERVERS];
   private static final Map<ServerName, List<RegionInfo>> serverToRegions = new 
HashMap<>();
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     // Initialize servers
     for (int i = 0; i < NUM_SERVERS; i++) {
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRegionHDFSBlockLocationFinder.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRegionHDFSBlockLocationFinder.java
index 1f5cdd484b8..b6c5f90f7ef 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRegionHDFSBlockLocationFinder.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRegionHDFSBlockLocationFinder.java
@@ -17,12 +17,12 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -35,7 +35,6 @@ import java.util.Random;
 import java.util.TreeMap;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ClusterMetrics;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HDFSBlocksDistribution;
 import org.apache.hadoop.hbase.HDFSBlocksDistribution.HostAndWeight;
@@ -50,19 +49,15 @@ import 
org.apache.hadoop.hbase.client.TableDescriptorBuilder;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.hbase.util.Bytes;
-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.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ MasterTests.class, SmallTests.class })
+@Tag(MasterTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestRegionHDFSBlockLocationFinder {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestRegionHDFSBlockLocationFinder.class);
-
   private static final Random RNG = new Random(); // This test depends on 
Random#setSeed
   private static TableDescriptor TD;
   private static List<RegionInfo> REGIONS;
@@ -80,7 +75,7 @@ public class TestRegionHDFSBlockLocationFinder {
     return distribution;
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setUpBeforeClass() {
     TD = 
TableDescriptorBuilder.newBuilder(TableName.valueOf("RegionLocationFinder")).build();
     int numRegions = 100;
@@ -94,7 +89,7 @@ public class TestRegionHDFSBlockLocationFinder {
     }
   }
 
-  @Before
+  @BeforeEach
   public void setUp() {
     finder = new RegionHDFSBlockLocationFinder();
     finder.setClusterInfoProvider(new DummyClusterInfoProvider(null) {
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestServerAndLoad.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestServerAndLoad.java
index 9568edad74c..3a479cfad0d 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestServerAndLoad.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestServerAndLoad.java
@@ -17,24 +17,19 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 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({ MasterTests.class, SmallTests.class })
+@Tag(MasterTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestServerAndLoad {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestServerAndLoad.class);
-
   @Test
   public void test() {
     ServerName server = ServerName.valueOf("host", 12345, 112244);
@@ -51,5 +46,4 @@ public class TestServerAndLoad {
     assertNotEquals(sal.hashCode(), new ServerAndLoad(other, 
startcode).hashCode());
     assertNotEquals(sal, new ServerAndLoad(other, startcode));
   }
-
 }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestSimpleLoadBalancer.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestSimpleLoadBalancer.java
index bd07db37fb1..f48dfe29c71 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestSimpleLoadBalancer.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestSimpleLoadBalancer.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-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.util.ArrayList;
 import java.util.HashMap;
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
@@ -35,30 +34,27 @@ import org.apache.hadoop.hbase.master.RegionPlan;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
 import org.apache.hadoop.net.DNSToSwitchMapping;
-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.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
  * Test the load balancer that is created by default.
  */
-@Category({ MasterTests.class, SmallTests.class })
+@Tag(MasterTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestSimpleLoadBalancer extends BalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestSimpleLoadBalancer.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestSimpleLoadBalancer.class);
 
   private static SimpleLoadBalancer loadBalancer;
+  private String methodName;
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeAllTests() throws Exception {
     Configuration conf = HBaseConfiguration.create();
     conf.setClass("hbase.util.ip.to.rack.determiner", MockMapping.class, 
DNSToSwitchMapping.class);
@@ -68,10 +64,12 @@ public class TestSimpleLoadBalancer extends 
BalancerTestBase {
     loadBalancer.initialize();
   }
 
-  int[] mockUniformCluster = new int[] { 5, 5, 5, 5, 5, 0 };
+  @BeforeEach
+  public void beforeEach(TestInfo testInfo) {
+    methodName = testInfo.getTestMethod().get().getName();
+  }
 
-  @Rule
-  public TestName name = new TestName();
+  int[] mockUniformCluster = new int[] { 5, 5, 5, 5, 5, 0 };
 
   /**
    * Test the load balancing algorithm. Invariant is that all servers should 
be hosting either
@@ -83,7 +81,7 @@ public class TestSimpleLoadBalancer extends BalancerTestBase {
     for (int[] mockCluster : clusterStateMocks) {
       Map<ServerName, List<RegionInfo>> clusterServers = 
mockClusterServers(mockCluster, 30);
       List<ServerAndLoad> clusterList = convertToList(clusterServers);
-      clusterLoad.put(TableName.valueOf(name.getMethodName()), clusterServers);
+      clusterLoad.put(TableName.valueOf(methodName), clusterServers);
       HashMap<TableName, TreeMap<ServerName, List<RegionInfo>>> result =
         mockClusterServersWithTables(clusterServers);
       loadBalancer.setClusterLoad(clusterLoad);
@@ -130,7 +128,7 @@ public class TestSimpleLoadBalancer extends 
BalancerTestBase {
     Map<ServerName, List<RegionInfo>> clusterServers =
       mockUniformClusterServers(mockUniformCluster);
     List<ServerAndLoad> clusterList = convertToList(clusterServers);
-    clusterLoad.put(TableName.valueOf(name.getMethodName()), clusterServers);
+    clusterLoad.put(TableName.valueOf(methodName), clusterServers);
     // use overall can achieve both table and cluster level balance
     HashMap<TableName, TreeMap<ServerName, List<RegionInfo>>> LoadOfAllTable =
       mockClusterServersWithTables(clusterServers);
@@ -178,5 +176,4 @@ public class TestSimpleLoadBalancer extends 
BalancerTestBase {
       assertEquals(6, serverAndLoad.getLoad());
     }
   }
-
 }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
index 35744d97301..14f682b4b2c 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
@@ -17,11 +17,11 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+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.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -36,7 +36,6 @@ import java.util.Set;
 import java.util.TreeMap;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ClusterMetrics;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.RegionMetrics;
@@ -49,33 +48,29 @@ import org.apache.hadoop.hbase.master.RegionPlan;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.util.Bytes;
-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.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
 import 
org.apache.hbase.thirdparty.org.apache.commons.collections4.CollectionUtils;
 
-@Category({ MasterTests.class, MediumTests.class })
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestStochasticLoadBalancer extends StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStochasticLoadBalancer.class);
-
   private static final String REGION_KEY = "testRegion";
 
   // Mapping of locality test -> expected locality
   private float[] expectedLocalities = { 1.0f, 0.0f, 0.50f, 0.25f, 1.0f };
   private static Configuration storedConfiguration;
 
-  @BeforeClass
+  @BeforeAll
   public static void saveInitialConfiguration() {
     storedConfiguration = new Configuration(conf);
   }
 
-  @Before
+  @BeforeEach
   public void beforeEachTest() {
     conf = new Configuration(storedConfiguration);
     loadBalancer.onConfigurationChange(conf);
@@ -256,9 +251,10 @@ public class TestStochasticLoadBalancer extends 
StochasticBalancerTestBase {
       loadBalancer.onConfigurationChange(conf);
       dummyMetricsStochasticBalancer.clearDummyMetrics();
       loadBalancer.updateBalancerLoadInfo(LoadOfAllTable);
-      assertTrue("Metrics should be recorded!",
+      assertTrue(
         dummyMetricsStochasticBalancer.getDummyCostsMap() != null
-          && !dummyMetricsStochasticBalancer.getDummyCostsMap().isEmpty());
+          && !dummyMetricsStochasticBalancer.getDummyCostsMap().isEmpty(),
+        "Metrics should be recorded!");
 
       String metricRecordKey;
       if (isByTable) {
@@ -286,9 +282,9 @@ public class TestStochasticLoadBalancer extends 
StochasticBalancerTestBase {
     List<RegionPlan> plans =
       loadBalancer.balanceCluster((Map) mockClusterServersWithTables(servers));
 
-    assertTrue("Balance plan should not be empty!", plans != null && 
!plans.isEmpty());
-    assertTrue("There should be metrics record in MetricsStochasticBalancer",
-      !dummyMetricsStochasticBalancer.getDummyCostsMap().isEmpty());
+    assertTrue(plans != null && !plans.isEmpty(), "Balance plan should not be 
empty!");
+    assertTrue(!dummyMetricsStochasticBalancer.getDummyCostsMap().isEmpty(),
+      "There should be metrics record in MetricsStochasticBalancer");
 
     double overallCostOfCluster = loadBalancer.computeCost(clusterState, 
Double.MAX_VALUE);
     double overallCostInMetrics = 
dummyMetricsStochasticBalancer.getDummyCostsMap().get(
@@ -308,9 +304,9 @@ public class TestStochasticLoadBalancer extends 
StochasticBalancerTestBase {
     List<RegionPlan> plans =
       loadBalancer.balanceCluster((Map) mockClusterServersWithTables(servers));
 
-    assertTrue("Balance plan should be empty!", plans == null || 
plans.isEmpty());
-    assertTrue("There should be metrics record in MetricsStochasticBalancer!",
-      !dummyMetricsStochasticBalancer.getDummyCostsMap().isEmpty());
+    assertTrue(plans == null || plans.isEmpty(), "Balance plan should be 
empty!");
+    assertFalse(dummyMetricsStochasticBalancer.getDummyCostsMap().isEmpty(),
+      "There should be metrics record in MetricsStochasticBalancer!");
 
     double overallCostOfCluster = loadBalancer.computeCost(clusterState, 
Double.MAX_VALUE);
     double overallCostInMetrics = 
dummyMetricsStochasticBalancer.getDummyCostsMap().get(
@@ -619,8 +615,8 @@ public class TestStochasticLoadBalancer extends 
StochasticBalancerTestBase {
       MemStoreSizeCostFunction.class.getSimpleName(), 
StoreFileCostFunction.class.getSimpleName());
 
     List<String> actual = Arrays.asList(loadBalancer.getCostFunctionNames());
-    assertTrue("ExpectedCostFunctions: " + expected + " ActualCostFunctions: " 
+ actual,
-      CollectionUtils.isEqualCollection(expected, actual));
+    assertTrue(CollectionUtils.isEqualCollection(expected, actual),
+      "ExpectedCostFunctions: " + expected + " ActualCostFunctions: " + 
actual);
   }
 
   private boolean needsBalanceIdleRegion(int[] cluster) {
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerBalanceCluster.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerBalanceCluster.java
index 50d1b0e84cf..b133bc5b246 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerBalanceCluster.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerBalanceCluster.java
@@ -17,31 +17,26 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 import java.time.Duration;
 import java.util.List;
 import java.util.Map;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.master.RegionPlan;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
-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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Category({ MasterTests.class, LargeTests.class })
+@Tag(MasterTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestStochasticLoadBalancerBalanceCluster extends 
StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestStochasticLoadBalancerBalanceCluster.class);
-
   private static final Logger LOG =
     LoggerFactory.getLogger(TestStochasticLoadBalancerBalanceCluster.class);
 
@@ -57,12 +52,12 @@ public class TestStochasticLoadBalancerBalanceCluster 
extends StochasticBalancer
     for (int[] mockCluster : clusterStateMocks) {
       Map<ServerName, List<RegionInfo>> servers = 
mockClusterServers(mockCluster);
       List<ServerAndLoad> list = convertToList(servers);
-      LOG.info("Mock Cluster : " + printMock(list) + " " + printStats(list));
+      LOG.info("Mock Cluster : {} {}", printMock(list), printStats(list));
       Map<TableName, Map<ServerName, List<RegionInfo>>> LoadOfAllTable =
         (Map) mockClusterServersWithTables(servers);
       List<RegionPlan> plans = loadBalancer.balanceCluster(LoadOfAllTable);
       List<ServerAndLoad> balancedCluster = reconcile(list, plans, servers);
-      LOG.info("Mock Balance : " + printMock(balancedCluster));
+      LOG.info("Mock Balance : {}", printMock(balancedCluster));
       assertClusterAsBalanced(balancedCluster);
       LoadOfAllTable = (Map) mockClusterServersWithTables(servers);
       List<RegionPlan> secondPlans = 
loadBalancer.balanceCluster(LoadOfAllTable);
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCost.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCost.java
index 5909bfb7ff3..ed57bf13d97 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCost.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCost.java
@@ -19,8 +19,8 @@ package org.apache.hadoop.hbase.master.balancer;
 
 import static 
org.apache.hadoop.hbase.master.balancer.HeterogeneousCostRulesTestHelper.DEFAULT_RULES_FILE_NAME;
 import static 
org.apache.hadoop.hbase.master.balancer.HeterogeneousCostRulesTestHelper.createRulesFile;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.util.ArrayDeque;
@@ -33,7 +33,6 @@ import java.util.Random;
 import java.util.TreeMap;
 import java.util.concurrent.ThreadLocalRandom;
 import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseCommonTestingUtil;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.ServerName;
@@ -42,22 +41,18 @@ import org.apache.hadoop.hbase.client.RegionReplicaUtil;
 import org.apache.hadoop.hbase.master.RegionPlan;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-@Category({ MasterTests.class, MediumTests.class })
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestStochasticLoadBalancerHeterogeneousCost extends 
StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestStochasticLoadBalancerHeterogeneousCost.class);
-
   private static final HBaseCommonTestingUtil HTU = new 
HBaseCommonTestingUtil();
   private static String RULES_FILE;
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeAllTests() throws IOException {
     conf = HTU.getConfiguration();
     conf.setFloat("hbase.master.balancer.stochastic.regionCountCost", 0);
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCostRules.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCostRules.java
index 2df1aa83a0d..c6a67a74c70 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCostRules.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCostRules.java
@@ -20,32 +20,24 @@ package org.apache.hadoop.hbase.master.balancer;
 import static 
org.apache.hadoop.hbase.master.balancer.HeterogeneousCostRulesTestHelper.DEFAULT_RULES_FILE_NAME;
 import static 
org.apache.hadoop.hbase.master.balancer.HeterogeneousCostRulesTestHelper.cleanup;
 import static 
org.apache.hadoop.hbase.master.balancer.HeterogeneousCostRulesTestHelper.createRulesFile;
-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.Collections;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseCommonTestingUtil;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
-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;
-
-@Category({ MasterTests.class, MediumTests.class })
+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.junit.jupiter.api.TestInfo;
+
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestStochasticLoadBalancerHeterogeneousCostRules extends 
StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestStochasticLoadBalancerHeterogeneousCostRules.class);
-  @Rule
-  public TestName name = new TestName();
-
   private HeterogeneousRegionCountCostFunction costFunction;
   private static final HBaseCommonTestingUtil HTU = new 
HBaseCommonTestingUtil();
 
@@ -55,17 +47,18 @@ public class 
TestStochasticLoadBalancerHeterogeneousCostRules extends Stochastic
    */
   private String rulesFilename;
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeClass() throws IOException {
     // Ensure test dir is created
     
HTU.getDataTestDir().getFileSystem(HTU.getConfiguration()).mkdirs(HTU.getDataTestDir());
   }
 
-  @Before
-  public void before() throws IOException {
+  @BeforeEach
+  public void before(TestInfo testInfo) throws IOException {
     // New rules file name per test.
     this.rulesFilename =
-      HTU.getDataTestDir(this.name.getMethodName() + "." + 
DEFAULT_RULES_FILE_NAME).toString();
+      HTU.getDataTestDir(testInfo.getTestMethod().get().getName() + "." + 
DEFAULT_RULES_FILE_NAME)
+        .toString();
     // Set the created rules filename into the configuration.
     HTU.getConfiguration().set(
       
HeterogeneousRegionCountCostFunction.HBASE_MASTER_BALANCER_HETEROGENEOUS_RULES_FILE,
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerLargeCluster.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerLargeCluster.java
index 6fc9e0be75a..8675e5ced90 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerLargeCluster.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerLargeCluster.java
@@ -18,20 +18,15 @@
 package org.apache.hadoop.hbase.master.balancer;
 
 import java.time.Duration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
-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({ MasterTests.class, LargeTests.class })
+@Tag(MasterTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestStochasticLoadBalancerLargeCluster extends 
StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStochasticLoadBalancerLargeCluster.class);
-
   @Test
   public void testLargeCluster() {
     int numNodes = 1000;
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerMidCluster.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerMidCluster.java
index e7b3dd3fd8a..5ba5c555026 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerMidCluster.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerMidCluster.java
@@ -18,20 +18,15 @@
 package org.apache.hadoop.hbase.master.balancer;
 
 import java.time.Duration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
-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({ MasterTests.class, LargeTests.class })
+@Tag(MasterTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestStochasticLoadBalancerMidCluster extends 
StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStochasticLoadBalancerMidCluster.class);
-
   @Test
   public void testMidCluster() {
     int numNodes = 100;
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplica.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplica.java
index 37870ee127b..97f548e1383 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplica.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplica.java
@@ -17,9 +17,9 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -28,7 +28,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.ServerName;
@@ -37,19 +36,15 @@ import org.apache.hadoop.hbase.client.RegionReplicaUtil;
 import org.apache.hadoop.hbase.master.RackManager;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
-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.common.collect.ImmutableList;
 
-@Category({ MasterTests.class, LargeTests.class })
+@Tag(MasterTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestStochasticLoadBalancerRegionReplica extends 
StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStochasticLoadBalancerRegionReplica.class);
-
   @Test
   public void testReplicaCost() {
     Configuration conf = HBaseConfiguration.create();
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaHighReplication.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaHighReplication.java
index 448609bc981..1e06c06f48e 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaHighReplication.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaHighReplication.java
@@ -18,21 +18,16 @@
 package org.apache.hadoop.hbase.master.balancer;
 
 import java.time.Duration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
-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({ MasterTests.class, MediumTests.class })
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestStochasticLoadBalancerRegionReplicaHighReplication
   extends StochasticBalancerTestBase2 {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestStochasticLoadBalancerRegionReplicaHighReplication.class);
-
   @Test
   public void testRegionReplicasOnMidClusterHighReplication() {
     conf.setLong(StochasticLoadBalancer.MAX_STEPS_KEY, 4000000L);
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaLargeCluster.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaLargeCluster.java
index fe2236e170b..2969cb8f0d0 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaLargeCluster.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaLargeCluster.java
@@ -18,21 +18,16 @@
 package org.apache.hadoop.hbase.master.balancer;
 
 import java.time.Duration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
-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({ MasterTests.class, LargeTests.class })
+@Tag(MasterTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestStochasticLoadBalancerRegionReplicaLargeCluster
   extends StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestStochasticLoadBalancerRegionReplicaLargeCluster.class);
-
   @Test
   public void testRegionReplicasOnLargeCluster() {
     // With default values for moveCost and tableSkewCost, the balancer makes 
much slower progress.
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaMidCluster.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaMidCluster.java
index 44e5d983aaa..bab53f78047 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaMidCluster.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaMidCluster.java
@@ -17,20 +17,15 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
-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({ MasterTests.class, LargeTests.class })
+@Tag(MasterTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestStochasticLoadBalancerRegionReplicaMidCluster extends 
StochasticBalancerTestBase2 {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestStochasticLoadBalancerRegionReplicaMidCluster.class);
-
   @Test
   public void testRegionReplicasOnMidCluster() {
     int numNodes = 200;
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaReplicationGreaterThanNumNodes.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaReplicationGreaterThanNumNodes.java
index b37349e8add..5d0f453e2c4 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaReplicationGreaterThanNumNodes.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaReplicationGreaterThanNumNodes.java
@@ -18,21 +18,16 @@
 package org.apache.hadoop.hbase.master.balancer;
 
 import java.time.Duration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
-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({ MasterTests.class, LargeTests.class })
+@Tag(MasterTests.TAG)
+@Tag(LargeTests.TAG)
 public class 
TestStochasticLoadBalancerRegionReplicaReplicationGreaterThanNumNodes
   extends StochasticBalancerTestBase2 {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule
-    
.forClass(TestStochasticLoadBalancerRegionReplicaReplicationGreaterThanNumNodes.class);
-
   @Test
   public void 
testRegionReplicationOnMidClusterReplicationGreaterThanNumNodes() {
     loadBalancer.onConfigurationChange(conf);
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaSameHosts.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaSameHosts.java
index 3ddb0943527..0e1e8a1e52c 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaSameHosts.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaSameHosts.java
@@ -21,22 +21,17 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
-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({ MasterTests.class, MediumTests.class })
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestStochasticLoadBalancerRegionReplicaSameHosts extends 
StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestStochasticLoadBalancerRegionReplicaSameHosts.class);
-
   @Test
   public void testRegionReplicationOnMidClusterSameHosts() {
     conf.setLong(StochasticLoadBalancer.MAX_STEPS_KEY, 2000000L);
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaWithRacks.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaWithRacks.java
index bc7ddef3648..9d1841d045c 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaWithRacks.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerRegionReplicaWithRacks.java
@@ -21,27 +21,22 @@ import java.time.Duration;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.master.RackManager;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
-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({ MasterTests.class, LargeTests.class })
+@Tag(MasterTests.TAG)
+@Tag(LargeTests.TAG)
 public class TestStochasticLoadBalancerRegionReplicaWithRacks extends 
StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    
HBaseClassTestRule.forClass(TestStochasticLoadBalancerRegionReplicaWithRacks.class);
-
   private static class ForTestRackManager extends RackManager {
 
     int numRacks;
-    Map<String, Integer> serverIndexes = new HashMap<String, Integer>();
+    Map<String, Integer> serverIndexes = new HashMap<>();
     int numServers = 0;
 
     public ForTestRackManager(int numRacks) {
@@ -65,13 +60,12 @@ public class 
TestStochasticLoadBalancerRegionReplicaWithRacks extends Stochastic
     setMaxRunTime(Duration.ofSeconds(5));
     loadBalancer.onConfigurationChange(conf);
     int numNodes = 5;
-    int numRegions = numNodes * 1;
     int replication = 3; // 3 replicas per region
     int numRegionsPerServer = 1;
     int numTables = 1;
     int numRacks = 3; // all replicas should be on a different rack
     Map<ServerName, List<RegionInfo>> serverMap =
-      createServerMap(numNodes, numRegions, numRegionsPerServer, replication, 
numTables);
+      createServerMap(numNodes, numNodes, numRegionsPerServer, replication, 
numTables);
     RackManager rm = new ForTestRackManager(numRacks);
     testWithClusterWithIteration(serverMap, rm, true, true);
   }
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerSmallCluster.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerSmallCluster.java
index bd934db759b..92b00cd3294 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerSmallCluster.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerSmallCluster.java
@@ -17,20 +17,15 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
-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({ MasterTests.class, MediumTests.class })
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestStochasticLoadBalancerSmallCluster extends 
StochasticBalancerTestBase {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStochasticLoadBalancerSmallCluster.class);
-
   @Test
   public void testSmallCluster() {
     int numNodes = 10;
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStoreFileTableSkewCostFunction.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStoreFileTableSkewCostFunction.java
index 619a055c650..1b9aca931b4 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStoreFileTableSkewCostFunction.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStoreFileTableSkewCostFunction.java
@@ -18,8 +18,8 @@
 package org.apache.hadoop.hbase.master.balancer;
 
 import static 
org.apache.hadoop.hbase.master.balancer.CandidateGeneratorTestUtil.createMockBalancerClusterState;
-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 static org.mockito.Mockito.when;
 
 import java.util.ArrayDeque;
@@ -30,7 +30,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Random;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.RegionMetrics;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.Size;
@@ -39,18 +38,14 @@ import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.client.RegionInfoBuilder;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 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;
 import org.mockito.Mockito;
 
-@Category({ MasterTests.class, SmallTests.class })
+@Tag(MasterTests.TAG)
+@Tag(SmallTests.TAG)
 public class TestStoreFileTableSkewCostFunction {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestStoreFileTableSkewCostFunction.class);
-
   private static final TableName DEFAULT_TABLE = 
TableName.valueOf("testTable");
   private static final Map<Long, Integer> REGION_TO_STORE_FILE_SIZE_MB = new 
HashMap<>();
 
@@ -80,7 +75,7 @@ public class TestStoreFileTableSkewCostFunction {
     double cost = costFunction.cost();
 
     // Expect zero cost since all regions (from the same table) are balanced.
-    assertEquals("Uniform distribution should yield zero cost", 0.0, cost, 
1e-6);
+    assertEquals(0.0, cost, 1e-6, "Uniform distribution should yield zero 
cost");
   }
 
   /**
@@ -110,7 +105,7 @@ public class TestStoreFileTableSkewCostFunction {
     double cost = costFunction.cost();
 
     // Expect a positive cost because the distribution is skewed.
-    assertTrue("Skewed distribution should yield a positive cost", cost > 0.0);
+    assertTrue(cost > 0.0, "Skewed distribution should yield a positive cost");
   }
 
   /**
@@ -129,7 +124,7 @@ public class TestStoreFileTableSkewCostFunction {
     double cost = costFunction.cost();
 
     // Expect zero cost when there is no load.
-    assertEquals("Empty distribution should yield zero cost", 0.0, cost, 1e-6);
+    assertEquals(0.0, cost, 1e-6, "Empty distribution should yield zero cost");
   }
 
   /**
@@ -164,7 +159,7 @@ public class TestStoreFileTableSkewCostFunction {
     double cost = costFunction.cost();
 
     // Expect a positive cost because the skew is computed per table.
-    assertTrue("Multiple table distribution should yield a positive cost", 
cost > 0.0);
+    assertTrue(cost > 0.0, "Multiple table distribution should yield a 
positive cost");
   }
 
   /**
diff --git 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestUnattainableBalancerCostGoal.java
 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestUnattainableBalancerCostGoal.java
index ffa2b4a7821..37cefa78b8f 100644
--- 
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestUnattainableBalancerCostGoal.java
+++ 
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestUnattainableBalancerCostGoal.java
@@ -26,17 +26,15 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.client.RegionInfoBuilder;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,13 +44,10 @@ import org.slf4j.LoggerFactory;
  * wasteful. This test ensures that the balancer will not get stuck in a loop 
of continuously moving
  * regions.
  */
-@Category({ MasterTests.class, MediumTests.class })
+@Tag(MasterTests.TAG)
+@Tag(MediumTests.TAG)
 public class TestUnattainableBalancerCostGoal {
 
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestUnattainableBalancerCostGoal.class);
-
   private static final Logger LOG = 
LoggerFactory.getLogger(TestUnattainableBalancerCostGoal.class);
 
   private static final TableName SYSTEM_TABLE_NAME = 
TableName.valueOf("hbase:system");
@@ -65,7 +60,7 @@ public class TestUnattainableBalancerCostGoal {
   private static final ServerName[] servers = new ServerName[NUM_SERVERS];
   private static final Map<ServerName, List<RegionInfo>> serverToRegions = new 
HashMap<>();
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     // Initialize servers
     for (int i = 0; i < NUM_SERVERS; i++) {

Reply via email to