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

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


The following commit(s) were added to refs/heads/master by this push:
     new e44de2662 RATIS-1976. Migrate ratis-test tests to Junit 5 - Part 1 
(#1038)
e44de2662 is described below

commit e44de26623a6b65d9d66eb782df70ffd98fab364
Author: Nandakumar Vadivelu <[email protected]>
AuthorDate: Thu Feb 1 22:27:19 2024 +0530

    RATIS-1976. Migrate ratis-test tests to Junit 5 - Part 1 (#1038)
---
 .../ratis/InstallSnapshotFromLeaderTests.java      |  31 +++--
 .../java/org/apache/ratis/RetryCacheTests.java     |  22 ++--
 .../ratis/server/impl/LeaderElectionTests.java     | 132 ++++++++++-----------
 ratis-test/pom.xml                                 |  10 ++
 .../apache/ratis/client/TestClientProtoUtils.java  |   6 +-
 .../java/org/apache/ratis/conf/TestConfUtils.java  |   2 +-
 .../org/apache/ratis/conf/TestRaftProperties.java  |  45 +++----
 .../datastream/DataStreamAsyncClusterTests.java    |  12 +-
 .../ratis/datastream/DataStreamBaseTest.java       |  12 +-
 .../ratis/datastream/DataStreamClusterTests.java   |  14 +--
 .../ratis/datastream/DataStreamTestUtils.java      |  48 ++++----
 ...usterWithRpcTypeGrpcAndDataStreamTypeNetty.java |   1 -
 .../ratis/datastream/TestDataStreamDisabled.java   |  10 +-
 ...amSslWithRpcTypeGrpcAndDataStreamTypeNetty.java |  10 +-
 ...ettyDataStreamChainTopologyWithGrpcCluster.java |   4 +-
 ...NettyDataStreamStarTopologyWithGrpcCluster.java |   4 +-
 .../datastream/TestNettyDataStreamWithMock.java    |  10 +-
 .../TestNettyDataStreamWithNettyCluster.java       |   5 +-
 .../org/apache/ratis/grpc/TestGrpcFactory.java     |   8 +-
 .../apache/ratis/grpc/TestGrpcMessageMetrics.java  |   6 +-
 .../ratis/grpc/TestLeaderElectionWithGrpc.java     |   2 +-
 .../ratis/grpc/TestLeaderInstallSnapshot.java      |  23 ++--
 .../apache/ratis/grpc/TestLogAppenderWithGrpc.java |  35 +++---
 .../ratis/grpc/TestRaftOutputStreamWithGrpc.java   |   6 +-
 .../apache/ratis/grpc/TestRaftServerWithGrpc.java  |  94 ++++++++-------
 .../ratis/grpc/TestRaftSnapshotWithGrpc.java       |   8 +-
 .../org/apache/ratis/grpc/TestRaftWithGrpc.java    |  42 ++++---
 .../apache/ratis/grpc/TestRetryCacheWithGrpc.java  |  14 ++-
 .../ratis/grpc/server/TestGrpcServerMetrics.java   |  26 ++--
 .../ratis/grpc/util/GrpcZeroCopyTestServer.java    |  10 +-
 .../apache/ratis/grpc/util/TestGrpcZeroCopy.java   |  16 +--
 .../grpc/util/TestStreamObserverWithTimeout.java   |  10 +-
 .../ratis/netty/TestLeaderElectionWithNetty.java   |   2 +-
 33 files changed, 348 insertions(+), 332 deletions(-)

diff --git 
a/ratis-server/src/test/java/org/apache/ratis/InstallSnapshotFromLeaderTests.java
 
b/ratis-server/src/test/java/org/apache/ratis/InstallSnapshotFromLeaderTests.java
index 15dafb88c..9d6a2f183 100644
--- 
a/ratis-server/src/test/java/org/apache/ratis/InstallSnapshotFromLeaderTests.java
+++ 
b/ratis-server/src/test/java/org/apache/ratis/InstallSnapshotFromLeaderTests.java
@@ -39,8 +39,7 @@ import org.apache.ratis.util.FileUtils;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.LifeCycle;
 import org.apache.ratis.util.SizeInBytes;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -74,14 +73,12 @@ public abstract class 
InstallSnapshotFromLeaderTests<CLUSTER extends MiniRaftClu
   private static final int SNAPSHOT_TRIGGER_THRESHOLD = 64;
   private static final int PURGE_GAP = 8;
 
-  @Test
   public void testMultiFileInstallSnapshot() throws Exception {
     getProperties().setClass(MiniRaftCluster.STATEMACHINE_CLASS_KEY,
         StateMachineWithMultiNestedSnapshotFile.class, StateMachine.class);
     runWithNewCluster(1, this::testMultiFileInstallSnapshot);
   }
 
-  @Test
   public void testSeparateSnapshotInstallPath() throws Exception {
     getProperties().setClass(MiniRaftCluster.STATEMACHINE_CLASS_KEY,
         StateMachineWithSeparatedSnapshotPath.class, StateMachine.class);
@@ -98,14 +95,14 @@ public abstract class 
InstallSnapshotFromLeaderTests<CLUSTER extends MiniRaftClu
         for (; i < SNAPSHOT_TRIGGER_THRESHOLD * 2 - 1; i++) {
           RaftClientReply
               reply = client.io().send(new RaftTestUtil.SimpleMessage("m" + 
i));
-          Assert.assertTrue(reply.isSuccess());
+          Assertions.assertTrue(reply.isSuccess());
         }
 
         client.getSnapshotManagementApi(leaderId).create(3000);
       }
 
       final SnapshotInfo snapshot = 
cluster.getLeader().getStateMachine().getLatestSnapshot();
-      Assert.assertEquals(3, snapshot.getFiles().size());
+      Assertions.assertEquals(3, snapshot.getFiles().size());
 
       // add two more peers
       final MiniRaftCluster.PeerChanges change = cluster.addNewPeers(2, true,
@@ -121,8 +118,8 @@ public abstract class 
InstallSnapshotFromLeaderTests<CLUSTER extends MiniRaftClu
       JavaUtils.attempt(() -> {
         for (RaftServer.Division follower : cluster.getFollowers()) {
           final SnapshotInfo info = 
follower.getStateMachine().getLatestSnapshot();
-          Assert.assertNotNull(info);
-          Assert.assertEquals(3, info.getFiles().size());
+          Assertions.assertNotNull(info);
+          Assertions.assertEquals(3, info.getFiles().size());
         }
       }, 10, ONE_SECOND, "check snapshot", LOG);
     } finally {
@@ -182,8 +179,8 @@ public abstract class 
InstallSnapshotFromLeaderTests<CLUSTER extends MiniRaftClu
         return RaftLog.INVALID_LOG_INDEX;
       }
 
-      Assert.assertTrue(file1.exists());
-      Assert.assertTrue(file2.exists());
+      Assertions.assertTrue(file1.exists());
+      Assertions.assertTrue(file2.exists());
       return super.takeSnapshot();
     }
 
@@ -199,7 +196,7 @@ public abstract class 
InstallSnapshotFromLeaderTests<CLUSTER extends MiniRaftClu
       files.add(new FileInfo(
           file2.toPath(),
           null));
-      Assert.assertEquals(2, files.size());
+      Assertions.assertEquals(2, files.size());
 
       SnapshotInfo info = super.getLatestSnapshot();
       if (info == null) {
@@ -224,8 +221,8 @@ public abstract class 
InstallSnapshotFromLeaderTests<CLUSTER extends MiniRaftClu
       this.snapshotDir = new File(root, "snapshot");
       this.tmpDir = new File(root, "tmp");
       FileUtils.deleteFully(root);
-      Assert.assertTrue(this.snapshotDir.mkdirs());
-      Assert.assertTrue(this.tmpDir.mkdirs());
+      Assertions.assertTrue(this.snapshotDir.mkdirs());
+      Assertions.assertTrue(this.tmpDir.mkdirs());
       this.root.deleteOnExit();
     }
 
@@ -246,13 +243,13 @@ public abstract class 
InstallSnapshotFromLeaderTests<CLUSTER extends MiniRaftClu
       try {
         FileUtils.deleteFully(snapshotRealDir);
         FileUtils.deleteFully(snapshotTmpDir);
-        Assert.assertTrue(snapshotTmpDir.mkdirs());
+        Assertions.assertTrue(snapshotTmpDir.mkdirs());
         final File snapshotFile1 = new File(snapshotTmpDir, "deer");
         final File snapshotFile2 = new File(snapshotTmpDir, "loves");
         final File snapshotFile3 = new File(snapshotTmpDir, "vegetable");
-        Assert.assertTrue(snapshotFile1.createNewFile());
-        Assert.assertTrue(snapshotFile2.createNewFile());
-        Assert.assertTrue(snapshotFile3.createNewFile());
+        Assertions.assertTrue(snapshotFile1.createNewFile());
+        Assertions.assertTrue(snapshotFile2.createNewFile());
+        Assertions.assertTrue(snapshotFile3.createNewFile());
         FileUtils.move(snapshotTmpDir, snapshotRealDir);
       } catch (IOException ioe) {
         LOG.error("create snapshot data file failed", ioe);
diff --git a/ratis-server/src/test/java/org/apache/ratis/RetryCacheTests.java 
b/ratis-server/src/test/java/org/apache/ratis/RetryCacheTests.java
index 18561ee65..f81ac9556 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RetryCacheTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RetryCacheTests.java
@@ -35,8 +35,8 @@ import org.apache.ratis.server.raftlog.RaftLogIOException;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Slf4jUtils;
 import org.apache.ratis.util.TimeDuration;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 import org.slf4j.event.Level;
 
 import java.util.Arrays;
@@ -84,9 +84,9 @@ public abstract class RetryCacheTests<CLUSTER extends 
MiniRaftCluster>
   }
 
   public static void assertReply(RaftClientReply reply, RaftClient client, 
long callId) {
-    Assert.assertEquals(client.getId(), reply.getClientId());
-    Assert.assertEquals(callId, reply.getCallId());
-    Assert.assertTrue(reply.isSuccess());
+    Assertions.assertEquals(client.getId(), reply.getClientId());
+    Assertions.assertEquals(callId, reply.getCallId());
+    Assertions.assertTrue(reply.isSuccess());
   }
 
   public void assertServer(MiniRaftCluster cluster, ClientId clientId, long 
callId, long oldLastApplied) throws Exception {
@@ -97,10 +97,10 @@ public abstract class RetryCacheTests<CLUSTER extends 
MiniRaftCluster>
       if (server.getInfo().getLastAppliedIndex() < leaderApplied) {
         Thread.sleep(1000);
       }
-      Assert.assertEquals(2, server.getRetryCache().getStatistics().size());
-      Assert.assertNotNull(RetryCacheTestUtil.get(server, clientId, callId));
+      Assertions.assertEquals(2, 
server.getRetryCache().getStatistics().size());
+      Assertions.assertNotNull(RetryCacheTestUtil.get(server, clientId, 
callId));
       // make sure there is only one log entry committed
-      Assert.assertEquals(1, count(server.getRaftLog(), oldLastApplied + 1));
+      Assertions.assertEquals(1, count(server.getRaftLog(), oldLastApplied + 
1));
     }
   }
 
@@ -145,10 +145,10 @@ public abstract class RetryCacheTests<CLUSTER extends 
MiniRaftCluster>
 
       final RaftPeerId newLeaderId = JavaUtils.attemptRepeatedly(() -> {
         final RaftPeerId id = RaftTestUtil.waitForLeader(cluster).getId();
-        Assert.assertNotEquals(leaderId, id);
+        Assertions.assertNotEquals(leaderId, id);
         return id;
       }, 10, TimeDuration.valueOf(100, TimeUnit.MILLISECONDS), "wait for a 
leader different than " + leaderId, LOG);
-      Assert.assertNotEquals(leaderId, newLeaderId);
+      Assertions.assertNotEquals(leaderId, newLeaderId);
       // same clientId and callId in the request
       r = cluster.newRaftClientRequest(client.getId(), newLeaderId,
               callId, new SimpleMessage("message"));
@@ -164,7 +164,7 @@ public abstract class RetryCacheTests<CLUSTER extends 
MiniRaftCluster>
       }
 
       // check the new leader and make sure the retry did not get committed
-      Assert.assertEquals(0, count(cluster.getLeader().getRaftLog(), 
oldLastApplied + 1));
+      Assertions.assertEquals(0, count(cluster.getLeader().getRaftLog(), 
oldLastApplied + 1));
     }
   }
 }
diff --git 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/LeaderElectionTests.java
 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/LeaderElectionTests.java
index 6def81c47..fbb909ac9 100644
--- 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/LeaderElectionTests.java
+++ 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/LeaderElectionTests.java
@@ -44,8 +44,8 @@ import org.apache.ratis.util.Slf4jUtils;
 import org.apache.ratis.util.TimeDuration;
 import org.apache.ratis.util.Timestamp;
 import org.apache.ratis.util.function.CheckedBiConsumer;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 
 import java.io.IOException;
@@ -138,18 +138,18 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
 
   void runTestLeaderNotCountListenerForMajority(CLUSTER cluster) throws 
Exception {
     final RaftServer.Division leader = waitForLeader(cluster);
-    Assert.assertEquals(2, 
((RaftConfigurationImpl)cluster.getLeader().getRaftConf()).getMajorityCount());
+    Assertions.assertEquals(2, 
((RaftConfigurationImpl)cluster.getLeader().getRaftConf()).getMajorityCount());
     try (RaftClient client = cluster.createClient(leader.getId())) {
       client.io().send(new RaftTestUtil.SimpleMessage("message"));
       List<RaftPeer> listeners = cluster.getListeners()
           
.stream().map(RaftServer.Division::getPeer).collect(Collectors.toList());
-      Assert.assertEquals(2, listeners.size());
+      Assertions.assertEquals(2, listeners.size());
       RaftClientReply reply = 
client.admin().setConfiguration(cluster.getPeers());
-      Assert.assertTrue(reply.isSuccess());
+      Assertions.assertTrue(reply.isSuccess());
       Collection<RaftPeer> peer = 
leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.LISTENER);
-      Assert.assertEquals(0, peer.size());
+      Assertions.assertEquals(0, peer.size());
     }
-    Assert.assertEquals(3, 
((RaftConfigurationImpl)cluster.getLeader().getRaftConf()).getMajorityCount());
+    Assertions.assertEquals(3, 
((RaftConfigurationImpl)cluster.getLeader().getRaftConf()).getMajorityCount());
   }
 
   @Test
@@ -167,7 +167,7 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
       isolate(cluster, listenerId);
       maxTimeout.sleep();
       maxTimeout.sleep();
-      Assert.assertEquals(RaftProtos.RaftPeerRole.LISTENER, 
listener.getInfo().getCurrentRole());
+      Assertions.assertEquals(RaftProtos.RaftPeerRole.LISTENER, 
listener.getInfo().getCurrentRole());
     } finally {
       deIsolate(cluster, listener.getId());
     }
@@ -183,18 +183,18 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
         client.io().send(new RaftTestUtil.SimpleMessage("message"));
 
         List<RaftServer.Division> followers = cluster.getFollowers();
-        Assert.assertEquals(2, followers.size());
+        Assertions.assertEquals(2, followers.size());
         RaftServer.Division newLeader = followers.get(0);
 
         RaftClientReply reply = 
client.admin().transferLeadership(newLeader.getId(), 20000);
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
 
         final RaftServer.Division currLeader = waitForLeader(cluster);
-        Assert.assertEquals(newLeader.getId(), currLeader.getId());
+        Assertions.assertEquals(newLeader.getId(), currLeader.getId());
 
         reply = client.io().send(new RaftTestUtil.SimpleMessage("message"));
-        Assert.assertEquals(newLeader.getId().toString(), 
reply.getReplierId());
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertEquals(newLeader.getId().toString(), 
reply.getReplierId());
+        Assertions.assertTrue(reply.isSuccess());
       }
 
       cluster.shutdown();
@@ -211,24 +211,24 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
         client.io().send(new RaftTestUtil.SimpleMessage("message"));
 
         List<RaftServer.Division> followers = cluster.getFollowers();
-        Assert.assertEquals(2, followers.size());
+        Assertions.assertEquals(2, followers.size());
         RaftServer.Division newLeader = followers.get(0);
 
         List<RaftPeer> peers = cluster.getPeers();
         List<RaftPeer> peersWithNewPriority = getPeersWithPriority(peers, 
newLeader.getPeer());
         RaftClientReply reply = 
client.admin().setConfiguration(peersWithNewPriority.toArray(new RaftPeer[0]));
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
 
         // Wait the old leader to step down.
         // TODO: make it more deterministic.
         TimeDuration.valueOf(1, TimeUnit.SECONDS).sleep();
 
         final RaftServer.Division currLeader = waitForLeader(cluster);
-        Assert.assertEquals(newLeader.getId(), currLeader.getId());
+        Assertions.assertEquals(newLeader.getId(), currLeader.getId());
 
         reply = client.io().send(new RaftTestUtil.SimpleMessage("message"));
-        Assert.assertEquals(newLeader.getId().toString(), 
reply.getReplierId());
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertEquals(newLeader.getId().toString(), 
reply.getReplierId());
+        Assertions.assertTrue(reply.isSuccess());
       }
 
       cluster.shutdown();
@@ -243,7 +243,7 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
       final RaftServer.Division leader = waitForLeader(cluster);
       try (RaftClient client = cluster.createClient(leader.getId())) {
         List<RaftServer.Division> followers = cluster.getFollowers();
-        Assert.assertEquals(followers.size(), 2);
+        Assertions.assertEquals(followers.size(), 2);
         RaftServer.Division newLeader = followers.get(0);
 
         // isolate new leader, so that transfer leadership will timeout
@@ -259,9 +259,9 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
               client.admin().transferLeadership(newLeader.getId(), timeoutMs);
             } catch (TransferLeadershipException e) {
               long cost = System.currentTimeMillis() - start;
-              Assert.assertTrue(cost > timeoutMs);
-              Assert.assertTrue(e.getMessage().contains("Failed to transfer 
leadership to"));
-              
Assert.assertTrue(e.getMessage().contains(TransferLeadership.Result.Type.TIMED_OUT.toString()));
+              Assertions.assertTrue(cost > timeoutMs);
+              Assertions.assertTrue(e.getMessage().contains("Failed to 
transfer leadership to"));
+              
Assertions.assertTrue(e.getMessage().contains(TransferLeadership.Result.Type.TIMED_OUT.toString()));
             }
 
             return true;
@@ -275,17 +275,17 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
           try {
             client.io().send(new RaftTestUtil.SimpleMessage("message"));
           } catch (LeaderSteppingDownException e) {
-            Assert.assertTrue(e.getMessage().contains("is stepping down"));
+            Assertions.assertTrue(e.getMessage().contains("is stepping down"));
           }
           return null;
         }, 5, TimeDuration.ONE_SECOND, "check leader steppingDown", 
RaftServer.LOG);
 
-        Assert.assertTrue(transferTimeoutFuture.get());
+        Assertions.assertTrue(transferTimeoutFuture.get());
 
         // after transfer timeout, leader should accept request
         RaftClientReply reply = client.io().send(new 
RaftTestUtil.SimpleMessage("message"));
-        Assert.assertEquals(leader.getId().toString(), reply.getReplierId());
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertEquals(leader.getId().toString(), 
reply.getReplierId());
+        Assertions.assertTrue(reply.isSuccess());
 
         deIsolate(cluster, newLeader.getId());
       }
@@ -323,7 +323,7 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
     LOG.info(cluster.printServers());
 
     final RaftServer.Division leader = cluster.getLeader();
-    Assert.assertEquals(newLeader, leader.getId().toString());
+    Assertions.assertEquals(newLeader, leader.getId().toString());
   }
 
   @Test
@@ -352,7 +352,7 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
             .orElseThrow(() -> new IllegalStateException("No leader yet")),
         10, ONE_SECOND, "getLeaderId", LOG);
     LOG.info(cluster.printServers());
-    Assert.assertEquals(leader.getId(), lastServerLeaderId);
+    Assertions.assertEquals(leader.getId(), lastServerLeaderId);
     cluster.shutdown();
   }
 
@@ -366,8 +366,8 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
         Thread.sleep(1000);
         isolate(cluster, leader.getId());
         RaftClientReply reply = client.io().send(new 
RaftTestUtil.SimpleMessage("message"));
-        Assert.assertNotEquals(reply.getReplierId(), 
leader.getId().toString());
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertNotEquals(reply.getReplierId(), 
leader.getId().toString());
+        Assertions.assertTrue(reply.isSuccess());
       } finally {
         deIsolate(cluster, leader.getId());
       }
@@ -398,15 +398,15 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
       try (RaftClient client = cluster.createClient(leader.getId())) {
         client.io().send(new RaftTestUtil.SimpleMessage("message"));
         List<RaftPeer> servers = cluster.getPeers();
-        Assert.assertEquals(servers.size(), 3);
+        Assertions.assertEquals(servers.size(), 3);
         MiniRaftCluster.PeerChanges changes = cluster.addNewPeers(1,
             true, false, RaftProtos.RaftPeerRole.LISTENER);
         RaftClientReply reply = client.admin().setConfiguration(servers, 
Arrays.asList(changes.newPeers));
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
         Collection<RaftPeer> listener =
             leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.LISTENER);
-        Assert.assertEquals(1, listener.size());
-        Assert.assertEquals(changes.newPeers[0].getId(), new 
ArrayList<>(listener).get(0).getId());
+        Assertions.assertEquals(1, listener.size());
+        Assertions.assertEquals(changes.newPeers[0].getId(), new 
ArrayList<>(listener).get(0).getId());
       }
       cluster.shutdown();
     }
@@ -420,18 +420,18 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
       try (RaftClient client = cluster.createClient(leader.getId())) {
         client.io().send(new RaftTestUtil.SimpleMessage("message"));
         List<RaftPeer> servers = cluster.getPeers();
-        Assert.assertEquals(4, servers.size());
+        Assertions.assertEquals(4, servers.size());
         List<RaftPeer> listener = new ArrayList<>(
             
leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.LISTENER));
-        Assert.assertEquals(1, listener.size());
+        Assertions.assertEquals(1, listener.size());
         MiniRaftCluster.PeerChanges changes = cluster.addNewPeers(1, true, 
false);
         ArrayList<RaftPeer> newPeers = new 
ArrayList<>(Arrays.asList(changes.newPeers));
         
newPeers.addAll(leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.FOLLOWER));
         RaftClientReply reply = client.admin().setConfiguration(newPeers, 
listener);
-        Assert.assertTrue(reply.isSuccess());
-        Assert.assertEquals(4,
+        Assertions.assertTrue(reply.isSuccess());
+        Assertions.assertEquals(4,
             
leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.FOLLOWER).size());
-        Assert.assertEquals(1,
+        Assertions.assertEquals(1,
             
leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.LISTENER).size());
       }
       cluster.shutdown();
@@ -445,13 +445,13 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
       final RaftServer.Division leader = waitForLeader(cluster);
       try (RaftClient client = cluster.createClient(leader.getId())) {
         client.io().send(new RaftTestUtil.SimpleMessage("message"));
-        Assert.assertEquals(1, cluster.getListeners().size());
+        Assertions.assertEquals(1, cluster.getListeners().size());
         List<RaftPeer> servers = 
cluster.getFollowers().stream().map(RaftServer.Division::getPeer).collect(
             Collectors.toList());
         servers.add(leader.getPeer());
         RaftClientReply reply = client.admin().setConfiguration(servers);
-        Assert.assertTrue(reply.isSuccess());
-        Assert.assertEquals(0, 
leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.LISTENER).size());
+        Assertions.assertTrue(reply.isSuccess());
+        Assertions.assertEquals(0, 
leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.LISTENER).size());
       }
       cluster.shutdown();
     }
@@ -466,15 +466,15 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
         client.io().send(new RaftTestUtil.SimpleMessage("message"));
         List<RaftPeer> followers = cluster.getFollowers().stream().map(
             RaftServer.Division::getPeer).collect(Collectors.toList());
-        Assert.assertEquals(2, followers.size());
+        Assertions.assertEquals(2, followers.size());
         List<RaftPeer> listeners = new ArrayList<>();
         listeners.add(followers.get(1));
         followers.remove(1);
         RaftClientReply reply = client.admin().setConfiguration(followers, 
listeners);
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
         Collection<RaftPeer> peer = 
leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.LISTENER);
-        Assert.assertEquals(1, peer.size());
-        Assert.assertEquals(listeners.get(0).getId(), new 
ArrayList<>(peer).get(0).getId());
+        Assertions.assertEquals(1, peer.size());
+        Assertions.assertEquals(listeners.get(0).getId(), new 
ArrayList<>(peer).get(0).getId());
       }
       cluster.shutdown();
     }
@@ -489,11 +489,11 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
         client.io().send(new RaftTestUtil.SimpleMessage("message"));
         List<RaftPeer> listeners = cluster.getListeners()
             
.stream().map(RaftServer.Division::getPeer).collect(Collectors.toList());
-        Assert.assertEquals(listeners.size(), 1);
+        Assertions.assertEquals(listeners.size(), 1);
         RaftClientReply reply = 
client.admin().setConfiguration(cluster.getPeers());
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
         Collection<RaftPeer> peer = 
leader.getRaftConf().getAllPeers(RaftProtos.RaftPeerRole.LISTENER);
-        Assert.assertEquals(0, peer.size());
+        Assertions.assertEquals(0, peer.size());
       }
       cluster.shutdown();
     }
@@ -573,7 +573,7 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
         isolate(cluster, follower.getId());
         // send message so that the isolated follower's log lag the others
         RaftClientReply reply = client.io().send(new 
RaftTestUtil.SimpleMessage("message"));
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
 
         final long savedTerm = leader.getInfo().getCurrentTerm();
         LOG.info("Wait follower {} timeout and trigger pre-vote", 
follower.getId());
@@ -588,7 +588,7 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
         assertEquals(savedTerm, leader.getInfo().getCurrentTerm());
 
         reply = client.io().send(new RaftTestUtil.SimpleMessage("message"));
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
       }
 
       cluster.shutdown();
@@ -608,7 +608,7 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
     final RaftProtos.RequestVoteRequestProto r = 
ServerProtoUtils.toRequestVoteRequestProto(
         leader.getMemberId(), listener.getId(),  
leader.getRaftLog().getLastEntryTermIndex().getTerm() + 1, lastEntry, true);
     RaftProtos.RequestVoteReplyProto listenerReply = 
listener.getRaftServer().requestVote(r);
-    Assert.assertFalse(listenerReply.getServerReply().getSuccess());
+    Assertions.assertFalse(listenerReply.getServerReply().getSuccess());
   }
 
 
@@ -622,23 +622,23 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
     final RaftServer.Division leader = RaftTestUtil.waitForLeader(cluster);
     final RaftPeerId leaderId = leader.getId();
     final List<RaftServer.Division> followers = cluster.getFollowers();
-    Assert.assertTrue(followers.size() >= 1);
+    Assertions.assertTrue(followers.size() >= 1);
     final RaftServerImpl f1 = (RaftServerImpl)followers.get(0);
 
     try (final RaftClient client = cluster.createClient()) {
       pauseLeaderReply = 
client.getLeaderElectionManagementApi(f1.getId()).pause();
-      Assert.assertTrue(pauseLeaderReply.isSuccess());
+      Assertions.assertTrue(pauseLeaderReply.isSuccess());
       client.io().send(new RaftTestUtil.SimpleMessage("message"));
       RaftServer.Division newLeader = followers.get(0);
       List<RaftPeer> peers = cluster.getPeers();
       List<RaftPeer> peersWithNewPriority = getPeersWithPriority(peers, 
newLeader.getPeer());
       RaftClientReply reply = 
client.admin().setConfiguration(peersWithNewPriority.toArray(new RaftPeer[0]));
-      Assert.assertTrue(reply.isSuccess());
-      JavaUtils.attempt(() -> Assert.assertEquals(leaderId, leader.getId()),
+      Assertions.assertTrue(reply.isSuccess());
+      JavaUtils.attempt(() -> Assertions.assertEquals(leaderId, 
leader.getId()),
           20, HUNDRED_MILLIS, "check leader id", LOG);
       final RaftClientReply resumeLeaderReply = 
client.getLeaderElectionManagementApi(f1.getId()).resume();
-      Assert.assertTrue(resumeLeaderReply.isSuccess());
-      JavaUtils.attempt(() -> Assert.assertEquals(f1.getId(), 
cluster.getLeader().getId()),
+      Assertions.assertTrue(resumeLeaderReply.isSuccess());
+      JavaUtils.attempt(() -> Assertions.assertEquals(f1.getId(), 
cluster.getLeader().getId()),
           20, HUNDRED_MILLIS, "check new leader", LOG);
     }
   }
@@ -664,15 +664,15 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
     try (final RaftClient client = cluster.createClient(leader.getId())) {
       client.io().send(new RaftTestUtil.SimpleMessage("message"));
 
-      Assert.assertTrue(leader.getInfo().isLeader());
-      Assert.assertTrue(leader.getInfo().isLeaderReady());
+      Assertions.assertTrue(leader.getInfo().isLeader());
+      Assertions.assertTrue(leader.getInfo().isLeaderReady());
       RaftServerTestUtil.assertLeaderLease(leader, true);
 
       isolate(cluster, leader.getId());
       Thread.sleep(leaseTimeoutMs);
 
-      Assert.assertTrue(leader.getInfo().isLeader());
-      Assert.assertTrue(leader.getInfo().isLeaderReady());
+      Assertions.assertTrue(leader.getInfo().isLeader());
+      Assertions.assertTrue(leader.getInfo().isLeaderReady());
       RaftServerTestUtil.assertLeaderLease(leader, false);
     } finally {
       deIsolate(cluster, leader.getId());
@@ -692,8 +692,8 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
     try (final RaftClient client = cluster.createClient(leader.getId())) {
       client.io().send(new RaftTestUtil.SimpleMessage("message"));
 
-      Assert.assertTrue(leader.getInfo().isLeader());
-      Assert.assertTrue(leader.getInfo().isLeaderReady());
+      Assertions.assertTrue(leader.getInfo().isLeader());
+      Assertions.assertTrue(leader.getInfo().isLeaderReady());
       RaftServerTestUtil.assertLeaderLease(leader, true);
 
       final List<RaftServer.Division> followers = cluster.getFollowers();
@@ -714,8 +714,8 @@ public abstract class LeaderElectionTests<CLUSTER extends 
MiniRaftCluster>
 
       Thread.sleep(leaseTimeoutMs);
 
-      Assert.assertTrue(leader.getInfo().isLeader());
-      Assert.assertTrue(leader.getInfo().isLeaderReady());
+      Assertions.assertTrue(leader.getInfo().isLeader());
+      Assertions.assertTrue(leader.getInfo().isLeaderReady());
       RaftServerTestUtil.assertLeaderLease(leader, false);
 
     } finally {
diff --git a/ratis-test/pom.xml b/ratis-test/pom.xml
index 2021e06ad..5990ae057 100644
--- a/ratis-test/pom.xml
+++ b/ratis-test/pom.xml
@@ -136,11 +136,21 @@
       <artifactId>junit</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter-api</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-params</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/client/TestClientProtoUtils.java 
b/ratis-test/src/test/java/org/apache/ratis/client/TestClientProtoUtils.java
index 9d8532053..56bf94a84 100644
--- a/ratis-test/src/test/java/org/apache/ratis/client/TestClientProtoUtils.java
+++ b/ratis-test/src/test/java/org/apache/ratis/client/TestClientProtoUtils.java
@@ -29,8 +29,8 @@ import 
org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.util.SizeInBytes;
 import org.apache.ratis.util.TimeDuration;
 import org.apache.ratis.util.Timestamp;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
@@ -71,7 +71,7 @@ public class TestClientProtoUtils extends BaseTest {
       final RaftClientRequest computed = 
ClientProtoUtils.toRaftClientRequest(proto);
       final TimeDuration r = startTime.elapsedTime().subtract(p);
 
-      Assert.assertEquals(request.getMessage().getContent(), 
computed.getMessage().getContent());
+      Assertions.assertEquals(request.getMessage().getContent(), 
computed.getMessage().getContent());
       toProto = toProto.add(p);
       toRequest = toRequest.add(r);
 
diff --git a/ratis-test/src/test/java/org/apache/ratis/conf/TestConfUtils.java 
b/ratis-test/src/test/java/org/apache/ratis/conf/TestConfUtils.java
index 1600da18d..67c02cd5f 100644
--- a/ratis-test/src/test/java/org/apache/ratis/conf/TestConfUtils.java
+++ b/ratis-test/src/test/java/org/apache/ratis/conf/TestConfUtils.java
@@ -23,7 +23,7 @@ import org.apache.ratis.client.RaftClientConfigKeys;
 import org.apache.ratis.grpc.GrpcConfigKeys;
 import org.apache.ratis.netty.NettyConfigKeys;
 import org.apache.ratis.server.RaftServerConfigKeys;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class TestConfUtils  extends BaseTest {
   @Test
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/conf/TestRaftProperties.java 
b/ratis-test/src/test/java/org/apache/ratis/conf/TestRaftProperties.java
index c65d00f43..29bfc321d 100644
--- a/ratis-test/src/test/java/org/apache/ratis/conf/TestRaftProperties.java
+++ b/ratis-test/src/test/java/org/apache/ratis/conf/TestRaftProperties.java
@@ -17,8 +17,10 @@
  */
 package org.apache.ratis.conf;
 
-import org.junit.Assert;
-import org.junit.Test;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 
 public class TestRaftProperties {
   enum Type {APPEND_ENTRIES}
@@ -29,71 +31,72 @@ public class TestRaftProperties {
   static final String KEY = "key";
 
   static void setUnderscoreValue(RaftProperties p, String valueWithUnderscore) 
{
-    Assert.assertTrue(valueWithUnderscore.contains("_"));
+    Assertions.assertTrue(valueWithUnderscore.contains("_"));
     p.set(KEY, valueWithUnderscore);
   }
 
   static void setNonUnderscoreValue(RaftProperties p, String 
valueWithoutUnderscore) {
-    Assert.assertFalse(valueWithoutUnderscore.contains("_"));
+    Assertions.assertFalse(valueWithoutUnderscore.contains("_"));
     p.set(KEY, valueWithoutUnderscore);
   }
 
-  @Test(timeout = 1000)
+  @Test
+  @Timeout(value = 1000)
   public void testUnderscore() {
     final RaftProperties p = new RaftProperties();
 
     { // boolean
-      Assert.assertNull(p.getBoolean(KEY, null));
+      Assertions.assertNull(p.getBoolean(KEY, null));
       setNonUnderscoreValue(p, "true");
-      Assert.assertTrue(p.getBoolean(KEY, null));
+      Assertions.assertTrue(p.getBoolean(KEY, null));
       setNonUnderscoreValue(p, "false");
-      Assert.assertFalse(p.getBoolean(KEY, null));
+      Assertions.assertFalse(p.getBoolean(KEY, null));
       setUnderscoreValue(p, "fa_lse");
-      Assert.assertNull(p.getBoolean(KEY, null));
+      Assertions.assertNull(p.getBoolean(KEY, null));
       p.unset(KEY);
     }
 
     { //int
       final Integer expected = 1000000;
-      Assert.assertNull(p.getInt(KEY, null));
+      Assertions.assertNull(p.getInt(KEY, null));
       setUnderscoreValue(p, "1_000_000");
-      Assert.assertEquals(expected, p.getInt(KEY, null));
+      Assertions.assertEquals(expected, p.getInt(KEY, null));
       setNonUnderscoreValue(p, "1000000");
-      Assert.assertEquals(expected, p.getInt(KEY, null));
+      Assertions.assertEquals(expected, p.getInt(KEY, null));
       p.unset(KEY);
     }
 
     { // long
       final Long expected = 1_000_000_000_000L;
-      Assert.assertNull(p.getLong(KEY, null));
+      Assertions.assertNull(p.getLong(KEY, null));
       setUnderscoreValue(p, "1_000_000_000_000");
-      Assert.assertEquals(expected, p.getLong(KEY, null));
+      Assertions.assertEquals(expected, p.getLong(KEY, null));
       setNonUnderscoreValue(p, "1000000000000");
-      Assert.assertEquals(expected, p.getLong(KEY, null));
+      Assertions.assertEquals(expected, p.getLong(KEY, null));
       p.unset(KEY);
     }
 
     { // File
       final String expected = "1_000_000";
-      Assert.assertNull(p.getFile(KEY, null));
+      Assertions.assertNull(p.getFile(KEY, null));
       setUnderscoreValue(p, expected);
-      Assert.assertEquals(expected, p.getFile(KEY, null).getName());
+      Assertions.assertEquals(expected, p.getFile(KEY, null).getName());
       p.unset(KEY);
     }
 
     { // class
       final Type expected = Type.APPEND_ENTRIES;
-      Assert.assertNull(p.getEnum(KEY, Type.class, null));
+      Assertions.assertNull(p.getEnum(KEY, Type.class, null));
       setUnderscoreValue(p, expected.name());
-      Assert.assertEquals(expected, p.getEnum(KEY, Type.class, null));
+      Assertions.assertEquals(expected, p.getEnum(KEY, Type.class, null));
       p.unset(KEY);
     }
 
     { // enum
       final Class<Request_Vote> expected = Request_Vote.class;
-      Assert.assertNull(p.getClass(KEY, null));
+      Assertions.assertNull(p.getClass(KEY, null));
       setUnderscoreValue(p, expected.getName());
-      Assert.assertEquals(expected, p.getClass(KEY, null));
+      Assertions.assertEquals(expected, p.getClass(KEY, null));
       p.unset(KEY);
     }
   }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamAsyncClusterTests.java
 
b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamAsyncClusterTests.java
index 8c315070e..2fcf500e2 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamAsyncClusterTests.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamAsyncClusterTests.java
@@ -34,8 +34,8 @@ import org.apache.ratis.util.CollectionUtils;
 import org.apache.ratis.util.Slf4jUtils;
 import org.apache.ratis.util.TimeDuration;
 import org.apache.ratis.util.function.CheckedBiFunction;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 import org.slf4j.event.Level;
 
 import java.io.IOException;
@@ -130,14 +130,14 @@ public abstract class DataStreamAsyncClusterTests<CLUSTER 
extends MiniRaftCluste
     // wait for all servers to catch up
     try (RaftClient client = cluster.createClient()) {
       RaftClientReply reply = client.async().watch(maxIndex, 
ReplicationLevel.ALL).join();
-      Assert.assertTrue(reply.isSuccess());
+      Assertions.assertTrue(reply.isSuccess());
     }
     // assert all streams are linked
     for (RaftServer proxy : cluster.getServers()) {
       final RaftServer.Division impl = proxy.getDivision(cluster.getGroupId());
       final MultiDataStreamStateMachine stateMachine = 
(MultiDataStreamStateMachine) impl.getStateMachine();
       for (SingleDataStream s : stateMachine.getStreams()) {
-        Assert.assertFalse(s.getDataChannel().isOpen());
+        Assertions.assertFalse(s.getDataChannel().isOpen());
         DataStreamTestUtils.assertLogEntry(impl, s);
       }
     }
@@ -150,7 +150,7 @@ public abstract class DataStreamAsyncClusterTests<CLUSTER 
extends MiniRaftCluste
       futures.add(CompletableFuture.supplyAsync(
           () -> runTestDataStream(cluster, numStreams, bufferSize, bufferNum, 
stepDownLeader), executor));
     }
-    Assert.assertEquals(numClients, futures.size());
+    Assertions.assertEquals(numClients, futures.size());
     return futures.stream()
         .map(CompletableFuture::join)
         .max(Long::compareTo)
@@ -174,7 +174,7 @@ public abstract class DataStreamAsyncClusterTests<CLUSTER 
extends MiniRaftCluste
         futures.add(CompletableFuture.supplyAsync(() -> 
DataStreamTestUtils.writeAndCloseAndAssertReplies(
             servers, leader, out, bufferSize, bufferNum, client.getId(), 
stepDownLeader).join(), executor));
       }
-      Assert.assertEquals(numStreams, futures.size());
+      Assertions.assertEquals(numStreams, futures.size());
       return futures.stream()
           .map(CompletableFuture::join)
           .map(RaftClientReply::getLogIndex)
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamBaseTest.java 
b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamBaseTest.java
index 3f241a8b9..70e26af24 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamBaseTest.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamBaseTest.java
@@ -34,7 +34,7 @@ import org.apache.ratis.server.RaftConfiguration;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.impl.RaftServerTestUtil;
 import org.apache.ratis.util.CollectionUtils;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -132,10 +132,10 @@ abstract class DataStreamBaseTest extends BaseTest {
           .stream(null, 
DataStreamTestUtils.getRoutingTableChainTopology(peers, 
getPrimaryServer().getPeer()));
       if (headerException != null) {
         final DataStreamReply headerReply = out.getHeaderFuture().join();
-        Assert.assertFalse(headerReply.isSuccess());
+        Assertions.assertFalse(headerReply.isSuccess());
         final RaftClientReply clientReply = ClientProtoUtils.toRaftClientReply(
             ((DataStreamReplyByteBuffer)headerReply).slice());
-        
Assert.assertTrue(clientReply.getException().getMessage().contains(headerException.getMessage()));
+        
Assertions.assertTrue(clientReply.getException().getMessage().contains(headerException.getMessage()));
         return;
       }
 
@@ -143,11 +143,11 @@ abstract class DataStreamBaseTest extends BaseTest {
           CollectionUtils.as(servers, Server::getRaftServer), null, out, 
bufferSize, bufferNum,
           client.getId(), false).join();
       if (expectedException != null) {
-        Assert.assertFalse(clientReply.isSuccess());
-        Assert.assertTrue(clientReply.getException().getMessage().contains(
+        Assertions.assertFalse(clientReply.isSuccess());
+        Assertions.assertTrue(clientReply.getException().getMessage().contains(
             expectedException.getMessage()));
       } else {
-        Assert.assertTrue(clientReply.isSuccess());
+        Assertions.assertTrue(clientReply.isSuccess());
       }
     }
   }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamClusterTests.java
 
b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamClusterTests.java
index 352d98e65..f99ff5623 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamClusterTests.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamClusterTests.java
@@ -36,8 +36,8 @@ import org.apache.ratis.util.CollectionUtils;
 import org.apache.ratis.util.FileUtils;
 import org.apache.ratis.util.Timestamp;
 import org.apache.ratis.util.function.CheckedConsumer;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.nio.channels.FileChannel;
@@ -115,9 +115,9 @@ public abstract class DataStreamClusterTests<CLUSTER 
extends MiniRaftCluster> ex
       }
     }
 
-    Assert.assertNotNull(
-        "Cannot find peer other than the primary", notPrimary);
-    Assert.assertNotEquals(primaryServer, notPrimary);
+    Assertions.assertNotNull(notPrimary,
+        "Cannot find peer other than the primary");
+    Assertions.assertNotEquals(primaryServer, notPrimary);
 
     try (RaftClient client = cluster.createClient(primaryServer)) {
       RoutingTable routingTableWithWrongPrimary =
@@ -156,7 +156,7 @@ public abstract class DataStreamClusterTests<CLUSTER 
extends MiniRaftCluster> ex
       public void accept(DataStreamOutputImpl out) throws Exception {
         try (FileChannel in = FileUtils.newFileChannel(f, 
StandardOpenOption.READ)) {
           final long transferred = in.transferTo(0, size, 
out.getWritableByteChannel());
-          Assert.assertEquals(size, transferred);
+          Assertions.assertEquals(size, transferred);
         }
       }
 
@@ -196,7 +196,7 @@ public abstract class DataStreamClusterTests<CLUSTER 
extends MiniRaftCluster> ex
       final RaftServer.Division impl = proxy.getDivision(cluster.getGroupId());
       final MultiDataStreamStateMachine stateMachine = 
(MultiDataStreamStateMachine) impl.getStateMachine();
       final SingleDataStream s = stateMachine.getSingleDataStream(request);
-      Assert.assertFalse(s.getDataChannel().isOpen());
+      Assertions.assertFalse(s.getDataChannel().isOpen());
       DataStreamTestUtils.assertLogEntry(impl, s);
     }
   }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamTestUtils.java 
b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamTestUtils.java
index 738cb0359..e4a930f1d 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamTestUtils.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/DataStreamTestUtils.java
@@ -49,7 +49,7 @@ import 
org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.util.CollectionUtils;
 import org.apache.ratis.util.FileUtils;
 import org.apache.ratis.util.JavaUtils;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -87,7 +87,7 @@ public interface DataStreamTestUtils {
       buffer.put(pos2byte(offset + j));
     }
     buffer.flip();
-    Assert.assertEquals(length, buffer.remaining());
+    Assertions.assertEquals(length, buffer.remaining());
     return buffer;
   }
 
@@ -117,7 +117,7 @@ public interface DataStreamTestUtils {
     FileUtils.createDirectories(f.getParentFile());
     try(FileChannel out = FileUtils.newFileChannel(f, 
StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
       final long transferred = out.transferFrom(source, 0, size);
-      Assert.assertEquals(size, transferred);
+      Assertions.assertEquals(size, transferred);
     }
   }
 
@@ -253,7 +253,7 @@ public interface DataStreamTestUtils {
       }
       final int remaining = src.remaining();
       for (; src.remaining() > 0; ) {
-        Assert.assertEquals(pos2byte(bytesWritten), src.get());
+        Assertions.assertEquals(pos2byte(bytesWritten), src.get());
         bytesWritten += 1;
       }
       return remaining;
@@ -302,9 +302,9 @@ public interface DataStreamTestUtils {
   }
 
   static void assertSuccessReply(Type expectedType, long expectedBytesWritten, 
DataStreamReply reply) {
-    Assert.assertTrue(reply.isSuccess());
-    Assert.assertEquals(expectedBytesWritten, reply.getBytesWritten());
-    Assert.assertEquals(expectedType, reply.getType());
+    Assertions.assertTrue(reply.isSuccess());
+    Assertions.assertEquals(expectedBytesWritten, reply.getBytesWritten());
+    Assertions.assertEquals(expectedType, reply.getType());
   }
 
   static CompletableFuture<RaftClientReply> writeAndCloseAndAssertReplies(
@@ -328,26 +328,26 @@ public interface DataStreamTestUtils {
   static void assertHeader(RaftServer server, RaftClientRequest header, int 
dataSize, boolean stepDownLeader)
       throws Exception {
     // check header
-    Assert.assertEquals(RaftClientRequest.dataStreamRequestType(), 
header.getType());
+    Assertions.assertEquals(RaftClientRequest.dataStreamRequestType(), 
header.getType());
 
     // check stream
     final MultiDataStreamStateMachine stateMachine = 
(MultiDataStreamStateMachine) 
server.getDivision(header.getRaftGroupId()).getStateMachine();
     final SingleDataStream stream = stateMachine.getSingleDataStream(header);
     final MyDataChannel channel = stream.getDataChannel();
-    Assert.assertEquals(dataSize, channel.getBytesWritten());
-    Assert.assertEquals(dataSize, channel.getForcedPosition());
+    Assertions.assertEquals(dataSize, channel.getBytesWritten());
+    Assertions.assertEquals(dataSize, channel.getForcedPosition());
 
     // check writeRequest
     final RaftClientRequest writeRequest = stream.getWriteRequest();
-    Assert.assertEquals(RaftClientRequest.dataStreamRequestType(), 
writeRequest.getType());
+    Assertions.assertEquals(RaftClientRequest.dataStreamRequestType(), 
writeRequest.getType());
     assertRaftClientMessage(header, null, writeRequest, header.getClientId(), 
stepDownLeader);
   }
 
   static CompletableFuture<RaftClientReply> 
assertCloseReply(DataStreamOutputImpl out, DataStreamReply dataStreamReply,
       long bytesWritten, RaftPeerId leader, ClientId clientId, boolean 
stepDownLeader) {
     // Test close idempotent
-    Assert.assertSame(dataStreamReply, out.closeAsync().join());
-    Assert.assertEquals(dataStreamReply.getClientId(), clientId);
+    Assertions.assertSame(dataStreamReply, out.closeAsync().join());
+    Assertions.assertEquals(dataStreamReply.getClientId(), clientId);
     BaseTest.testFailureCase("writeAsync should fail",
         () -> 
out.writeAsync(DataStreamRequestByteBuffer.EMPTY_BYTE_BUFFER).join(),
         CompletionException.class, (Logger) null, 
AlreadyClosedException.class);
@@ -359,7 +359,7 @@ public interface DataStreamTestUtils {
       if (reply.isSuccess()) {
         final ByteString bytes = reply.getMessage().getContent();
         if (!bytes.equals(MOCK)) {
-          Assert.assertEquals(bytesWritten2ByteString(bytesWritten), bytes);
+          Assertions.assertEquals(bytesWritten2ByteString(bytesWritten), 
bytes);
         }
       }
 
@@ -372,13 +372,13 @@ public interface DataStreamTestUtils {
   static void assertRaftClientMessage(
       RaftClientMessage expected, RaftPeerId expectedServerId, 
RaftClientMessage computed, ClientId expectedClientId,
       boolean stepDownLeader) {
-    Assert.assertNotNull(computed);
-    Assert.assertEquals(expectedClientId, computed.getClientId());
+    Assertions.assertNotNull(computed);
+    Assertions.assertEquals(expectedClientId, computed.getClientId());
     if (!stepDownLeader) {
-      Assert.assertEquals(
+      Assertions.assertEquals(
           
Optional.ofNullable(expectedServerId).orElseGet(expected::getServerId), 
computed.getServerId());
     }
-    Assert.assertEquals(expected.getRaftGroupId(), computed.getRaftGroupId());
+    Assertions.assertEquals(expected.getRaftGroupId(), 
computed.getRaftGroupId());
   }
 
   static LogEntryProto searchLogEntry(ClientInvocationId invocationId, RaftLog 
log) throws Exception {
@@ -394,12 +394,12 @@ public interface DataStreamTestUtils {
   }
 
   static void assertLogEntry(LogEntryProto logEntry, RaftClientRequest 
request) {
-    Assert.assertNotNull(logEntry);
-    Assert.assertTrue(logEntry.hasStateMachineLogEntry());
+    Assertions.assertNotNull(logEntry);
+    Assertions.assertTrue(logEntry.hasStateMachineLogEntry());
     final StateMachineLogEntryProto s = logEntry.getStateMachineLogEntry();
-    Assert.assertEquals(StateMachineLogEntryProto.Type.DATASTREAM, 
s.getType());
-    Assert.assertEquals(request.getCallId(), s.getCallId());
-    Assert.assertEquals(request.getClientId().toByteString(), s.getClientId());
+    Assertions.assertEquals(StateMachineLogEntryProto.Type.DATASTREAM, 
s.getType());
+    Assertions.assertEquals(request.getCallId(), s.getCallId());
+    Assertions.assertEquals(request.getClientId().toByteString(), 
s.getClientId());
   }
 
   static void assertLogEntry(RaftServer.Division division, SingleDataStream 
stream) throws Exception {
@@ -408,6 +408,6 @@ public interface DataStreamTestUtils {
     assertLogEntry(entryFromStream, request);
 
     final LogEntryProto entryFromLog = 
searchLogEntry(ClientInvocationId.valueOf(request), division.getRaftLog());
-    Assert.assertEquals(entryFromStream, entryFromLog);
+    Assertions.assertEquals(entryFromStream, entryFromLog);
   }
 }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/MiniRaftClusterWithRpcTypeGrpcAndDataStreamTypeNetty.java
 
b/ratis-test/src/test/java/org/apache/ratis/datastream/MiniRaftClusterWithRpcTypeGrpcAndDataStreamTypeNetty.java
index 3396ada9b..b9e20fb82 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/MiniRaftClusterWithRpcTypeGrpcAndDataStreamTypeNetty.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/MiniRaftClusterWithRpcTypeGrpcAndDataStreamTypeNetty.java
@@ -17,7 +17,6 @@
  */
 package org.apache.ratis.datastream;
 
-import org.apache.ratis.security.TlsConf;
 import org.apache.ratis.server.impl.MiniRaftCluster;
 import org.apache.ratis.RaftConfigKeys;
 import org.apache.ratis.conf.Parameters;
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestDataStreamDisabled.java
 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestDataStreamDisabled.java
index 168a1b02d..697e74687 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestDataStreamDisabled.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestDataStreamDisabled.java
@@ -26,14 +26,14 @@ import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.protocol.RaftGroup;
 import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftPeer;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class TestDataStreamDisabled extends BaseTest {
   @Test
   public void testDataStreamDisabled() throws Exception {
     final RaftProperties properties = new RaftProperties();
-    Assert.assertEquals(SupportedDataStreamType.DISABLED, 
RaftConfigKeys.DataStream.type(properties, LOG::info));
+    Assertions.assertEquals(SupportedDataStreamType.DISABLED, 
RaftConfigKeys.DataStream.type(properties, LOG::info));
 
     final RaftPeer server = RaftPeer.newBuilder().setId("s0").build();
 
@@ -44,9 +44,9 @@ public class TestDataStreamDisabled extends BaseTest {
             .setProperties(properties)
             .build();
         DataStreamOutput out = client.getDataStreamApi().stream()) {
-      Assert.fail("Unexpected object: " + out);
+      Assertions.fail("Unexpected object: " + out);
     } catch (UnsupportedOperationException e) {
-      Assert.assertTrue(e.getMessage().contains(
+      Assertions.assertTrue(e.getMessage().contains(
           DisabledDataStreamClientFactory.class.getName() + "$1 does not 
support streamAsync"));
     }
   }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestDataStreamSslWithRpcTypeGrpcAndDataStreamTypeNetty.java
 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestDataStreamSslWithRpcTypeGrpcAndDataStreamTypeNetty.java
index 8e423ab29..8e6d892c8 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestDataStreamSslWithRpcTypeGrpcAndDataStreamTypeNetty.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestDataStreamSslWithRpcTypeGrpcAndDataStreamTypeNetty.java
@@ -24,7 +24,7 @@ import org.apache.ratis.security.SecurityTestUtils;
 import org.apache.ratis.security.TlsConf;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Slf4jUtils;
-import org.junit.Ignore;
+import org.junit.jupiter.api.Disabled;
 import org.slf4j.event.Level;
 
 import java.util.function.Supplier;
@@ -55,22 +55,22 @@ public class 
TestDataStreamSslWithRpcTypeGrpcAndDataStreamTypeNetty
     return new 
MiniRaftClusterWithRpcTypeGrpcAndDataStreamTypeNetty.Factory(getParameters());
   }
 
-  @Ignore
+  @Disabled
   @Override
   public void testStreamWrites() {
   }
 
-  @Ignore
+  @Disabled
   @Override
   public void testStreamWithInvalidRoutingTable() {
   }
 
-  @Ignore
+  @Disabled
   @Override
   public void testMultipleStreamsMultipleServers() {
   }
 
-  @Ignore
+  @Disabled
   @Override
   public void testMultipleStreamsMultipleServersStepDownLeader() {
   }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamChainTopologyWithGrpcCluster.java
 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamChainTopologyWithGrpcCluster.java
index 31b28b4c2..778ee8225 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamChainTopologyWithGrpcCluster.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamChainTopologyWithGrpcCluster.java
@@ -22,13 +22,13 @@ import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.netty.NettyConfigKeys;
 import org.apache.ratis.util.SizeInBytes;
 import org.apache.ratis.util.TimeDuration;
-import org.junit.Before;
+import org.junit.jupiter.api.BeforeEach;
 
 public class TestNettyDataStreamChainTopologyWithGrpcCluster
     extends 
DataStreamAsyncClusterTests<MiniRaftClusterWithRpcTypeGrpcAndDataStreamTypeNetty>
     implements MiniRaftClusterWithRpcTypeGrpcAndDataStreamTypeNetty.FactoryGet 
{
 
-  @Before
+  @BeforeEach
   public void setup() {
     final RaftProperties p = getProperties();
     RaftClientConfigKeys.DataStream.setRequestTimeout(p, 
TimeDuration.ONE_MINUTE);
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamStarTopologyWithGrpcCluster.java
 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamStarTopologyWithGrpcCluster.java
index 45247d489..bd80d6b6b 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamStarTopologyWithGrpcCluster.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamStarTopologyWithGrpcCluster.java
@@ -25,7 +25,7 @@ import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.protocol.RoutingTable;
 import org.apache.ratis.util.SizeInBytes;
 import org.apache.ratis.util.TimeDuration;
-import org.junit.Before;
+import org.junit.jupiter.api.BeforeEach;
 
 import java.util.Collection;
 import java.util.List;
@@ -35,7 +35,7 @@ public class TestNettyDataStreamStarTopologyWithGrpcCluster
     extends 
DataStreamAsyncClusterTests<MiniRaftClusterWithRpcTypeGrpcAndDataStreamTypeNetty>
     implements MiniRaftClusterWithRpcTypeGrpcAndDataStreamTypeNetty.FactoryGet 
{
 
-  @Before
+  @BeforeEach
   public void setup() {
     final RaftProperties p = getProperties();
     RaftClientConfigKeys.DataStream.setRequestTimeout(p, 
TimeDuration.ONE_MINUTE);
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamWithMock.java
 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamWithMock.java
index 27a1ee102..503f8cf66 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamWithMock.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamWithMock.java
@@ -36,14 +36,14 @@ import org.apache.ratis.server.DataStreamMap;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.impl.RaftServerTestUtil;
 import org.apache.ratis.util.NetUtils;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-@Ignore
+@Disabled
 public class TestNettyDataStreamWithMock extends DataStreamBaseTest {
   static RaftPeer newRaftPeer(RaftServer server) {
     return RaftPeer.newBuilder()
@@ -53,7 +53,7 @@ public class TestNettyDataStreamWithMock extends 
DataStreamBaseTest {
         .build();
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     properties = new RaftProperties();
     RaftConfigKeys.DataStream.setType(properties, 
SupportedDataStreamType.NETTY);
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamWithNettyCluster.java
 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamWithNettyCluster.java
index 90af31425..1a29d014e 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamWithNettyCluster.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/datastream/TestNettyDataStreamWithNettyCluster.java
@@ -17,9 +17,10 @@
  */
 package org.apache.ratis.datastream;
 
-import org.junit.Ignore;
 
-@Ignore("Ignored by runzhiwang, because NettyClientRpc does not support 
sendRequestAsync")
+import org.junit.jupiter.api.Disabled;
+
+@Disabled("Ignored by runzhiwang, because NettyClientRpc does not support 
sendRequestAsync")
 public class TestNettyDataStreamWithNettyCluster
     extends 
DataStreamClusterTests<MiniRaftClusterWithRpcTypeNettyAndDataStreamTypeNetty>
     implements 
MiniRaftClusterWithRpcTypeNettyAndDataStreamTypeNetty.FactoryGet {
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestGrpcFactory.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestGrpcFactory.java
index 76fbcee5e..99a395d8a 100644
--- a/ratis-test/src/test/java/org/apache/ratis/grpc/TestGrpcFactory.java
+++ b/ratis-test/src/test/java/org/apache/ratis/grpc/TestGrpcFactory.java
@@ -18,16 +18,14 @@
 package org.apache.ratis.grpc;
 
 import org.apache.ratis.BaseTest;
-import org.apache.ratis.util.JavaUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 public class TestGrpcFactory extends BaseTest {
   @Test
   public void testUseCacheForAllThreads() {
     // trigger GrpcFactory static initializer
     final boolean value = 
GrpcFactory.checkPooledByteBufAllocatorUseCacheForAllThreads(LOG::info);
-    Assert.assertFalse(value);
-    LOG.info("value is {}", value);
+    Assertions.assertFalse(value);
   }
 }
\ No newline at end of file
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestGrpcMessageMetrics.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestGrpcMessageMetrics.java
index 2abba7930..aee13223b 100644
--- a/ratis-test/src/test/java/org/apache/ratis/grpc/TestGrpcMessageMetrics.java
+++ b/ratis-test/src/test/java/org/apache/ratis/grpc/TestGrpcMessageMetrics.java
@@ -29,8 +29,8 @@ import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.impl.RaftServerTestUtil;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.TimeDuration;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
@@ -68,6 +68,6 @@ public class TestGrpcMessageMetrics extends BaseTest
     GrpcService service = (GrpcService) 
RaftServerTestUtil.getServerRpc(server);
     RatisMetricRegistry registry = 
service.getServerInterceptor().getMetrics().getRegistry();
     String counter_prefix = serverId + "_" + 
"ratis.grpc.RaftServerProtocolService";
-    Assert.assertTrue(registry.counter(counter_prefix + "_" + "requestVote" + 
"_OK_completed_total").getCount() > 0);
+    Assertions.assertTrue(registry.counter(counter_prefix + "_" + 
"requestVote" + "_OK_completed_total").getCount() > 0);
   }
 }
\ No newline at end of file
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestLeaderElectionWithGrpc.java
 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestLeaderElectionWithGrpc.java
index 7730cb116..ef6bc2a86 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestLeaderElectionWithGrpc.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestLeaderElectionWithGrpc.java
@@ -19,7 +19,7 @@ package org.apache.ratis.grpc;
 
 import org.apache.ratis.server.impl.BlockRequestHandlingInjection;
 import org.apache.ratis.server.impl.LeaderElectionTests;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class TestLeaderElectionWithGrpc
     extends LeaderElectionTests<MiniRaftClusterWithGrpc>
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestLeaderInstallSnapshot.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestLeaderInstallSnapshot.java
index 5f7a40f0f..22c590c9d 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestLeaderInstallSnapshot.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestLeaderInstallSnapshot.java
@@ -18,23 +18,32 @@
 package org.apache.ratis.grpc;
 
 import org.apache.ratis.InstallSnapshotFromLeaderTests;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.util.Arrays;
 import java.util.Collection;
 
-@RunWith(Parameterized.class)
 public class TestLeaderInstallSnapshot
 extends InstallSnapshotFromLeaderTests<MiniRaftClusterWithGrpc>
 implements MiniRaftClusterWithGrpc.FactoryGet {
 
-    public TestLeaderInstallSnapshot(Boolean separateHeartbeat) {
+    public static Collection<Boolean[]> data() {
+        return Arrays.asList((new Boolean[][] {{Boolean.FALSE}, 
{Boolean.TRUE}}));
+    }
+
+    @ParameterizedTest
+    @MethodSource("data")
+    public void testMultiFileInstallSnapshot(Boolean separateHeartbeat) throws 
Exception {
         GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
+        super.testMultiFileInstallSnapshot();
     }
 
-    @Parameterized.Parameters
-    public static Collection<Boolean[]> data() {
-        return Arrays.asList((new Boolean[][] {{Boolean.FALSE}, 
{Boolean.TRUE}}));
+    @ParameterizedTest
+    @MethodSource("data")
+    public void testSeparateSnapshotInstallPath(Boolean separateHeartbeat) 
throws Exception {
+        GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
+        super.testSeparateSnapshotInstallPath();
     }
+
 }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestLogAppenderWithGrpc.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestLogAppenderWithGrpc.java
index c0d102f95..107cd7ba9 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestLogAppenderWithGrpc.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestLogAppenderWithGrpc.java
@@ -33,10 +33,9 @@ import 
org.apache.ratis.statemachine.impl.SimpleStateMachine4Testing;
 import org.apache.ratis.statemachine.StateMachine;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Slf4jUtils;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.slf4j.event.Level;
 
 import java.io.IOException;
@@ -47,7 +46,6 @@ import java.util.concurrent.CompletableFuture;
 
 import static org.apache.ratis.RaftTestUtil.waitForLeader;
 
-@RunWith(Parameterized.class)
 public class TestLogAppenderWithGrpc
     extends LogAppenderTests<MiniRaftClusterWithGrpc>
     implements MiniRaftClusterWithGrpc.FactoryGet {
@@ -55,17 +53,14 @@ public class TestLogAppenderWithGrpc
     Slf4jUtils.setLogLevel(FollowerInfo.LOG, Level.DEBUG);
   }
 
-  public TestLogAppenderWithGrpc(Boolean separateHeartbeat) {
-    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
-  }
-
-  @Parameterized.Parameters
   public static Collection<Boolean[]> data() {
     return Arrays.asList((new Boolean[][] {{Boolean.FALSE}, {Boolean.TRUE}}));
   }
 
-  @Test
-  public void testPendingLimits() throws IOException, InterruptedException {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testPendingLimits(Boolean separateHeartbeat) throws IOException, 
InterruptedException {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     int maxAppends = 10;
     RaftProperties properties = new RaftProperties();
     properties.setClass(MiniRaftCluster.STATEMACHINE_CLASS_KEY,
@@ -94,7 +89,7 @@ public class TestLogAppenderWithGrpc
       JavaUtils.attempt(() -> {
         for (long nextIndex : leader.getInfo().getFollowerNextIndices()) {
           // Verify nextIndex does not progress due to pendingRequests limit
-          Assert.assertEquals(initialNextIndex + maxAppends, nextIndex);
+          Assertions.assertEquals(initialNextIndex + maxAppends, nextIndex);
         }
       }, 10, ONE_SECOND, "matching nextIndex", LOG);
       for (RaftServer.Division server : cluster.getFollowers()) {
@@ -107,8 +102,10 @@ public class TestLogAppenderWithGrpc
     }
   }
 
-  @Test
-  public void testRestartLogAppender() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testRestartLogAppender(Boolean separateHeartbeat) throws 
Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     runWithNewCluster(2, this::runTestRestartLogAppender);
   }
 
@@ -120,7 +117,7 @@ public class TestLogAppenderWithGrpc
     try(RaftClient client = cluster.createClient(leader.getId())) {
       for(int i = 0; i < 10; i++) {
         final RaftClientReply reply = client.io().send(new 
RaftTestUtil.SimpleMessage("m" + ++messageCount));
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
       }
     }
 
@@ -128,7 +125,7 @@ public class TestLogAppenderWithGrpc
     final GrpcServerMetrics leaderMetrics = new 
GrpcServerMetrics(leader.getMemberId().toString());
     final String counter = 
String.format(GrpcServerMetrics.RATIS_GRPC_METRICS_LOG_APPENDER_INCONSISTENCY,
         cluster.getFollowers().iterator().next().getMemberId().getPeerId());
-    Assert.assertEquals(0L, 
leaderMetrics.getRegistry().counter(counter).getCount());
+    Assertions.assertEquals(0L, 
leaderMetrics.getRegistry().counter(counter).getCount());
 
     // restart LogAppender
     RaftServerTestUtil.restartLogAppenders(leader);
@@ -137,7 +134,7 @@ public class TestLogAppenderWithGrpc
     try(RaftClient client = cluster.createClient(leader.getId())) {
       for(int i = 0; i < 10; i++) {
         final RaftClientReply reply = client.io().send(new 
RaftTestUtil.SimpleMessage("m" + ++messageCount));
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
       }
     }
 
@@ -148,7 +145,7 @@ public class TestLogAppenderWithGrpc
       // assert INCONSISTENCY counter >= 1
       // If old LogAppender die before new LogAppender start, INCONSISTENCY 
equal to 1,
       // else INCONSISTENCY greater than 1
-      
Assert.assertTrue(newleaderMetrics.getRegistry().counter(counter).getCount() >= 
1L);
+      
Assertions.assertTrue(newleaderMetrics.getRegistry().counter(counter).getCount()
 >= 1L);
     }
   }
 }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftOutputStreamWithGrpc.java
 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftOutputStreamWithGrpc.java
index fb35d958a..2f1ef3f12 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftOutputStreamWithGrpc.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftOutputStreamWithGrpc.java
@@ -18,12 +18,10 @@
 package org.apache.ratis.grpc;
 
 import org.apache.ratis.OutputStreamBaseTest;
+import org.junit.jupiter.api.Timeout;
 
+@Timeout(value = 100)
 public class TestRaftOutputStreamWithGrpc
     extends OutputStreamBaseTest<MiniRaftClusterWithGrpc>
     implements MiniRaftClusterWithGrpc.FactoryGet {
-  @Override
-  public int getGlobalTimeoutSeconds() {
-    return 100;
-  }
 }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java
index 0af1d87cc..05d772c17 100644
--- a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java
+++ b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java
@@ -26,7 +26,6 @@ import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.protocol.ClientInvocationId;
 import org.apache.ratis.server.RetryCache;
 import org.apache.ratis.util.JavaUtils;
-import org.slf4j.event.Level;
 import org.apache.ratis.conf.Parameters;
 import org.apache.ratis.security.SecurityTestUtils;
 import org.apache.ratis.server.storage.RaftStorage;
@@ -62,12 +61,11 @@ import org.apache.ratis.util.Slf4jUtils;
 import org.apache.ratis.util.ProtoUtils;
 import org.apache.ratis.util.SizeInBytes;
 import org.apache.ratis.util.TimeDuration;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.slf4j.event.Level;
 import javax.net.ssl.KeyManager;
 import javax.net.ssl.TrustManager;
 import java.io.IOException;
@@ -80,30 +78,26 @@ import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
-@RunWith(Parameterized.class)
 public class TestRaftServerWithGrpc extends BaseTest implements 
MiniRaftClusterWithGrpc.FactoryGet {
   {
     Slf4jUtils.setLogLevel(GrpcClientProtocolClient.LOG, Level.TRACE);
   }
 
-  public TestRaftServerWithGrpc(Boolean separateHeartbeat) {
-    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
-  }
-
-  @Parameterized.Parameters
   public static Collection<Boolean[]> data() {
     return Arrays.asList((new Boolean[][] {{Boolean.FALSE}, {Boolean.TRUE}}));
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     final RaftProperties p = getProperties();
     p.setClass(MiniRaftCluster.STATEMACHINE_CLASS_KEY, 
SimpleStateMachine4Testing.class, StateMachine.class);
     RaftClientConfigKeys.Rpc.setRequestTimeout(p, TimeDuration.valueOf(1, 
TimeUnit.SECONDS));
   }
 
-  @Test
-  public void testServerRestartOnException() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testServerRestartOnException(Boolean separateHeartbeat) throws 
Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     runWithNewCluster(1, this::runTestServerRestartOnException);
   }
 
@@ -149,8 +143,10 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
     
cluster.getServerFactory(leaderId).newRaftServerRpc(cluster.getServer(leaderId));
   }
 
-  @Test
-  public void testUnsupportedMethods() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testUnsupportedMethods(Boolean separateHeartbeat) throws 
Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     runWithNewCluster(1, this::runTestUnsupportedMethods);
   }
 
@@ -167,8 +163,10 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
         UnsupportedOperationException.class);
   }
 
-  @Test
-  public void testLeaderRestart() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testLeaderRestart(Boolean separateHeartbeat) throws Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     runWithNewCluster(3, this::runTestLeaderRestart);
   }
 
@@ -178,7 +176,7 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
     try (final RaftClient client = cluster.createClient()) {
       // send a request to make sure leader is ready
       final CompletableFuture<RaftClientReply> f = client.async().send(new 
SimpleMessage("testing"));
-      Assert.assertTrue(f.get().isSuccess());
+      Assertions.assertTrue(f.get().isSuccess());
     }
 
     try (final RaftClient client = cluster.createClient()) {
@@ -189,14 +187,14 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
       {
         // send a request using rpc directly
         final RaftClientRequest request = newRaftClientRequest(client, 
seqNum.incrementAndGet());
-        Assert.assertEquals(client.getId(), request.getClientId());
+        Assertions.assertEquals(client.getId(), request.getClientId());
         final CompletableFuture<RaftClientReply> f = 
rpc.sendRequestAsync(request);
         final RaftClientReply reply = f.get();
-        Assert.assertTrue(reply.isSuccess());
+        Assertions.assertTrue(reply.isSuccess());
         RaftClientTestUtil.handleReply(request, reply, client);
         invocationId = ClientInvocationId.valueOf(request.getClientId(), 
request.getCallId());
         final RetryCache.Entry entry = 
leader.getRetryCache().getIfPresent(invocationId);
-        Assert.assertNotNull(entry);
+        Assertions.assertNotNull(entry);
         LOG.info("cache entry {}", entry);
       }
 
@@ -206,13 +204,13 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
       final RaftClientRequest requestBlocked = newRaftClientRequest(client, 
seqNum.incrementAndGet());
       final CompletableFuture<RaftClientReply> futureBlocked = 
rpc.sendRequestAsync(requestBlocked);
 
-      JavaUtils.attempt(() -> 
Assert.assertNull(leader.getRetryCache().getIfPresent(invocationId)),
+      JavaUtils.attempt(() -> 
Assertions.assertNull(leader.getRetryCache().getIfPresent(invocationId)),
           10, HUNDRED_MILLIS, "invalidate cache entry", LOG);
       LOG.info("cache entry not found for {}", invocationId);
 
       // change leader
       RaftTestUtil.changeLeader(cluster, leader.getId());
-      Assert.assertNotEquals(RaftPeerRole.LEADER, 
leader.getInfo().getCurrentRole());
+      Assertions.assertNotEquals(RaftPeerRole.LEADER, 
leader.getInfo().getCurrentRole());
 
       // the blocked request should fail
       testFailureCase("request should fail", futureBlocked::get,
@@ -229,13 +227,17 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
 
   }
 
-  @Test
-  public void testRaftClientMetrics() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testRaftClientMetrics(Boolean separateHeartbeat) throws 
Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     runWithNewCluster(3, this::testRaftClientRequestMetrics);
   }
 
-  @Test
-  public void testRaftServerMetrics() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testRaftServerMetrics(Boolean separateHeartbeat) throws 
Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     final RaftProperties p = getProperties();
     RaftServerConfigKeys.Write.setElementLimit(p, 10);
     RaftServerConfigKeys.Write.setByteLimit(p, SizeInBytes.valueOf("1MB"));
@@ -252,7 +254,7 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
     try (RaftClient client = cluster.createClient()) {
       // send a request to make sure leader is ready
       final CompletableFuture< RaftClientReply > f = client.async().send(new 
SimpleMessage("testing"));
-      Assert.assertTrue(f.get().isSuccess());
+      Assertions.assertTrue(f.get().isSuccess());
     }
 
     SimpleStateMachine4Testing stateMachine = 
SimpleStateMachine4Testing.get(cluster.getLeader());
@@ -285,14 +287,14 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
       client = cluster.createClient(cluster.getLeader().getId(), 
RetryPolicies.noRetry());
       final SizeInBytes size = SizeInBytes.valueOf("1025kb");
       final ByteString bytes = randomByteString(size.getSizeInt());
-      Assert.assertEquals(size.getSizeInt(), bytes.size());
+      Assertions.assertEquals(size.getSizeInt(), bytes.size());
       client.async().send(new SimpleMessage(size + "-message", bytes));
       clients.add(client);
 
       RaftTestUtil.waitFor(() -> getRaftServerMetrics(cluster.getLeader())
           .getNumRequestsByteSizeLimitHits().getCount() == 1, 300, 5000);
 
-      Assert.assertEquals(2, getRaftServerMetrics(cluster.getLeader())
+      Assertions.assertEquals(2, getRaftServerMetrics(cluster.getLeader())
           .getNumResourceLimitHits().getCount());
     } finally {
       for (RaftClient client : clients) {
@@ -326,36 +328,36 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
 
     try (final RaftClient client = cluster.createClient()) {
       final CompletableFuture<RaftClientReply> f1 = client.async().send(new 
SimpleMessage("testing"));
-      Assert.assertTrue(f1.get().isSuccess());
+      Assertions.assertTrue(f1.get().isSuccess());
       final DefaultTimekeeperImpl write = (DefaultTimekeeperImpl) 
registry.timer(RAFT_CLIENT_WRITE_REQUEST);
-      JavaUtils.attempt(() -> Assert.assertTrue(write.getTimer().getCount() > 
0),
+      JavaUtils.attempt(() -> 
Assertions.assertTrue(write.getTimer().getCount() > 0),
           3, TimeDuration.ONE_SECOND, "writeTimer metrics", LOG);
 
       final CompletableFuture<RaftClientReply> f2 = 
client.async().sendReadOnly(new SimpleMessage("testing"));
-      Assert.assertTrue(f2.get().isSuccess());
+      Assertions.assertTrue(f2.get().isSuccess());
       final DefaultTimekeeperImpl read = (DefaultTimekeeperImpl) 
registry.timer(RAFT_CLIENT_READ_REQUEST);
-      JavaUtils.attempt(() -> Assert.assertTrue(read.getTimer().getCount() > 
0),
+      JavaUtils.attempt(() -> Assertions.assertTrue(read.getTimer().getCount() 
> 0),
           3, TimeDuration.ONE_SECOND, "readTimer metrics", LOG);
 
       final CompletableFuture<RaftClientReply> f3 = 
client.async().sendStaleRead(new SimpleMessage("testing"),
           0, leader.getId());
-      Assert.assertTrue(f3.get().isSuccess());
+      Assertions.assertTrue(f3.get().isSuccess());
       final DefaultTimekeeperImpl staleRead = (DefaultTimekeeperImpl) 
registry.timer(RAFT_CLIENT_STALE_READ_REQUEST);
-      JavaUtils.attempt(() -> 
Assert.assertTrue(staleRead.getTimer().getCount() > 0),
+      JavaUtils.attempt(() -> 
Assertions.assertTrue(staleRead.getTimer().getCount() > 0),
           3, TimeDuration.ONE_SECOND, "staleReadTimer metrics", LOG);
 
       final CompletableFuture<RaftClientReply> f4 = client.async().watch(0, 
RaftProtos.ReplicationLevel.ALL);
-      Assert.assertTrue(f4.get().isSuccess());
+      Assertions.assertTrue(f4.get().isSuccess());
       final DefaultTimekeeperImpl watchAll = (DefaultTimekeeperImpl) 
registry.timer(
           String.format(RAFT_CLIENT_WATCH_REQUEST, "-ALL"));
-      JavaUtils.attempt(() -> Assert.assertTrue(watchAll.getTimer().getCount() 
> 0),
+      JavaUtils.attempt(() -> 
Assertions.assertTrue(watchAll.getTimer().getCount() > 0),
           3, TimeDuration.ONE_SECOND, "watchAllTimer metrics", LOG);
 
       final CompletableFuture<RaftClientReply> f5 = client.async().watch(0, 
RaftProtos.ReplicationLevel.MAJORITY);
-      Assert.assertTrue(f5.get().isSuccess());
+      Assertions.assertTrue(f5.get().isSuccess());
       final DefaultTimekeeperImpl watch = (DefaultTimekeeperImpl) 
registry.timer(
           String.format(RAFT_CLIENT_WATCH_REQUEST, ""));
-      JavaUtils.attempt(() -> Assert.assertTrue(watch.getTimer().getCount() > 
0),
+      JavaUtils.attempt(() -> 
Assertions.assertTrue(watch.getTimer().getCount() > 0),
           3, TimeDuration.ONE_SECOND, "watchTimer metrics", LOG);
     }
   }
@@ -366,8 +368,10 @@ public class TestRaftServerWithGrpc extends BaseTest 
implements MiniRaftClusterW
         RaftClientRequest.writeRequestType(), 
ProtoUtils.toSlidingWindowEntry(seqNum, seqNum == 1L));
   }
 
-  @Test
-  public void testTlsWithKeyAndTrustManager() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testTlsWithKeyAndTrustManager(Boolean separateHeartbeat) throws 
Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     final RaftProperties p = getProperties();
     RaftServerConfigKeys.Write.setElementLimit(p, 10);
     RaftServerConfigKeys.Write.setByteLimit(p, SizeInBytes.valueOf("1MB"));
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftSnapshotWithGrpc.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftSnapshotWithGrpc.java
index 2d8524f26..82318c43e 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftSnapshotWithGrpc.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftSnapshotWithGrpc.java
@@ -26,7 +26,7 @@ import org.apache.ratis.metrics.MetricRegistryInfo;
 import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.statemachine.RaftSnapshotBaseTest;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 
 public class TestRaftSnapshotWithGrpc extends RaftSnapshotBaseTest {
   @Override
@@ -39,10 +39,10 @@ public class TestRaftSnapshotWithGrpc extends 
RaftSnapshotBaseTest {
     MetricRegistryInfo info = new 
MetricRegistryInfo(leader.getMemberId().toString(),
         "ratis_grpc", "log_appender", "Metrics for Ratis Grpc Log Appender");
     Optional<RatisMetricRegistry> metricRegistry = 
MetricRegistries.global().get(info);
-    Assert.assertTrue(metricRegistry.isPresent());
+    Assertions.assertTrue(metricRegistry.isPresent());
     final LongCounter installSnapshotCounter = 
metricRegistry.get().counter("num_install_snapshot");
-    Assert.assertNotNull(installSnapshotCounter);
-    Assert.assertTrue(installSnapshotCounter.getCount() >= 1);
+    Assertions.assertNotNull(installSnapshotCounter);
+    Assertions.assertTrue(installSnapshotCounter.getCount() >= 1);
   }
 
 }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftWithGrpc.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftWithGrpc.java
index 046453d58..b93621137 100644
--- a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftWithGrpc.java
+++ b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftWithGrpc.java
@@ -30,10 +30,9 @@ import 
org.apache.ratis.statemachine.impl.SimpleStateMachine4Testing;
 import org.apache.ratis.statemachine.StateMachine;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.TimeDuration;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -42,7 +41,6 @@ import java.util.concurrent.TimeUnit;
 
 import static org.apache.ratis.RaftTestUtil.waitForLeader;
 
-@RunWith(Parameterized.class)
 public class TestRaftWithGrpc
     extends RaftBasicTests<MiniRaftClusterWithGrpc>
     implements MiniRaftClusterWithGrpc.FactoryGet {
@@ -52,29 +50,29 @@ public class TestRaftWithGrpc
         SimpleStateMachine4Testing.class, StateMachine.class);
   }
 
-  public TestRaftWithGrpc(Boolean separateHeartbeat) {
-    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
-  }
-
-  @Parameterized.Parameters
   public static Collection<Boolean[]> data() {
     return Arrays.asList((new Boolean[][] {{Boolean.FALSE}, {Boolean.TRUE}}));
   }
 
-  @Override
-  @Test
-  public void testWithLoad() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testWithLoad(Boolean separateHeartbeat) throws Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     super.testWithLoad();
     BlockRequestHandlingInjection.getInstance().unblockAll();
   }
 
-  @Test
-  public void testRequestTimeout() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testRequestTimeout(Boolean separateHeartbeat) throws Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     runWithNewCluster(NUM_SERVERS, cluster -> testRequestTimeout(false, 
cluster, LOG));
   }
 
-  @Test
-  public void testUpdateViaHeartbeat() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testUpdateViaHeartbeat(Boolean separateHeartbeat) throws 
Exception {
+    GrpcConfigKeys.Server.setHeartbeatChannel(getProperties(), 
separateHeartbeat);
     runWithNewCluster(NUM_SERVERS, this::runTestUpdateViaHeartbeat);
   }
 
@@ -91,7 +89,7 @@ public class TestRaftWithGrpc
           replyFuture = client.async().send(new 
RaftTestUtil.SimpleMessage("abc"));
       TimeDuration.valueOf(5 , TimeUnit.SECONDS).sleep();
       // replyFuture should not be completed until append request is unblocked.
-      Assert.assertFalse(replyFuture.isDone());
+      Assertions.assertFalse(replyFuture.isDone());
       // unblock append request.
       cluster.getServerAliveStream()
           .filter(impl -> !impl.getInfo().isLeader())
@@ -107,9 +105,9 @@ public class TestRaftWithGrpc
         final LogEntryHeader[] leaderEntries = leaderLog.getEntries(0, 
Long.MAX_VALUE);
 
         final RaftLog followerLog = raftServer.getRaftLog();
-        Assert.assertEquals(leaderNextIndex, followerLog.getNextIndex());
+        Assertions.assertEquals(leaderNextIndex, followerLog.getNextIndex());
         final LogEntryHeader[] serverEntries = followerLog.getEntries(0, 
Long.MAX_VALUE);
-        Assert.assertArrayEquals(serverEntries, leaderEntries);
+        Assertions.assertArrayEquals(serverEntries, leaderEntries);
       }, 10, HUNDRED_MILLIS, "assertRaftLog-" + raftServer.getId(), LOG)));
 
       // Wait for heartbeats from leader to be received by followers
@@ -119,8 +117,8 @@ public class TestRaftWithGrpc
         final long leaderNextIndex = leaderLog.getNextIndex();
         // FollowerInfo in the leader state should have updated next and match 
index.
         final long followerMatchIndex = 
logAppender.getFollower().getMatchIndex();
-        Assert.assertTrue(followerMatchIndex >= leaderNextIndex - 1);
-        Assert.assertEquals(followerMatchIndex + 1, 
logAppender.getFollower().getNextIndex());
+        Assertions.assertTrue(followerMatchIndex >= leaderNextIndex - 1);
+        Assertions.assertEquals(followerMatchIndex + 1, 
logAppender.getFollower().getNextIndex());
       }, 10, HUNDRED_MILLIS, "assertRaftLog-" + logAppender.getFollower(), 
LOG)));
     }
   }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRetryCacheWithGrpc.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRetryCacheWithGrpc.java
index a39a4d1ef..879b9eabd 100644
--- a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRetryCacheWithGrpc.java
+++ b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRetryCacheWithGrpc.java
@@ -37,8 +37,9 @@ import org.apache.ratis.statemachine.StateMachine;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Slf4jUtils;
 import org.apache.ratis.util.TimeDuration;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 import org.slf4j.event.Level;
 
 import java.io.IOException;
@@ -66,7 +67,7 @@ public class TestRetryCacheWithGrpc
   }
 
   static long assertReply(RaftClientReply reply) {
-    Assert.assertTrue(reply.isSuccess());
+    Assertions.assertTrue(reply.isSuccess());
     return reply.getCallId();
   }
 
@@ -90,7 +91,7 @@ public class TestRetryCacheWithGrpc
 
     void assertRetryCacheEntry(RaftClient client, long callId, boolean exist, 
boolean eventually) throws InterruptedException {
       Supplier<RetryCache.Entry> lookup = () -> RetryCacheTestUtil.get(leader, 
client.getId(), callId);
-      Consumer<RetryCache.Entry> assertion = exist ? Assert::assertNotNull : 
Assert::assertNull;
+      Consumer<RetryCache.Entry> assertion = exist ? Assertions::assertNotNull 
: Assertions::assertNull;
       if (eventually) {
         JavaUtils.attempt(() -> assertion.accept(lookup.get()), 100, 
TimeDuration.ONE_MILLISECOND,
             "retry cache entry", null);
@@ -144,7 +145,7 @@ public class TestRetryCacheWithGrpc
         ONE_SECOND.sleep();
         // No calls can be completed.
         for (CompletableFuture<Long> f : asyncCalls) {
-          Assert.assertFalse(f.isDone());
+          Assertions.assertFalse(f.isDone());
         }
         stateMachine.unblockApplyTransaction();
         // No calls can be invalidated.
@@ -170,7 +171,8 @@ public class TestRetryCacheWithGrpc
     }
   }
 
-  @Test(timeout = 10000)
+  @Test
+  @Timeout(value = 10000)
   public void testRetryOnResourceUnavailableException()
       throws InterruptedException, IOException {
     RaftProperties properties = new RaftProperties();
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
 
b/ratis-test/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
index 04f8ded95..1b5773059 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
@@ -38,9 +38,9 @@ import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 
 public class TestGrpcServerMetrics {
@@ -50,7 +50,7 @@ public class TestGrpcServerMetrics {
   private static RaftPeerId raftPeerId;
   private static RaftPeerId followerId;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUp() throws Exception {
     raftGroupId = RaftGroupId.randomId();
     raftPeerId = RaftPeerId.valueOf("TestId");
@@ -74,11 +74,11 @@ public class TestGrpcServerMetrics {
       final String format = RATIS_GRPC_METRICS_LOG_APPENDER_LATENCY + 
GrpcServerMetrics.getHeartbeatSuffix(heartbeat);
       final String name = String.format(format, followerId);
       final DefaultTimekeeperImpl t = (DefaultTimekeeperImpl) 
ratisMetricRegistry.timer(name);
-      Assert.assertEquals(0L, t.getTimer().getSnapshot().getMax());
+      Assertions.assertEquals(0L, t.getTimer().getSnapshot().getMax());
       req.startRequestTimer();
       Thread.sleep(1000L);
       req.stopRequestTimer();
-      Assert.assertTrue(t.getTimer().getSnapshot().getMax() > 1000L);
+      Assertions.assertTrue(t.getTimer().getSnapshot().getMax() > 1000L);
     }
   }
 
@@ -89,7 +89,7 @@ public class TestGrpcServerMetrics {
           RATIS_GRPC_METRICS_REQUESTS_COUNT + GrpcServerMetrics
               .getHeartbeatSuffix(heartbeat)).getCount();
       grpcServerMetrics.onRequestCreate(heartbeat);
-      Assert.assertEquals(reqTotal + 1, ratisMetricRegistry.counter(
+      Assertions.assertEquals(reqTotal + 1, ratisMetricRegistry.counter(
           RATIS_GRPC_METRICS_REQUESTS_COUNT + GrpcServerMetrics
               .getHeartbeatSuffix(heartbeat)).getCount());
     }
@@ -97,9 +97,9 @@ public class TestGrpcServerMetrics {
 
   @Test
   public void testGrpcLogRequestRetry() {
-    Assert.assertEquals(0L, 
ratisMetricRegistry.counter(RATIS_GRPC_METRICS_REQUEST_RETRY_COUNT).getCount());
+    Assertions.assertEquals(0L, 
ratisMetricRegistry.counter(RATIS_GRPC_METRICS_REQUEST_RETRY_COUNT).getCount());
     grpcServerMetrics.onRequestRetry();
-    Assert.assertEquals(1L, 
ratisMetricRegistry.counter(RATIS_GRPC_METRICS_REQUEST_RETRY_COUNT).getCount());
+    Assertions.assertEquals(1L, 
ratisMetricRegistry.counter(RATIS_GRPC_METRICS_REQUEST_RETRY_COUNT).getCount());
   }
 
   @Test
@@ -110,9 +110,9 @@ public class TestGrpcServerMetrics {
         pendingRequest::logRequestsSize);
     final String name = 
String.format(RATIS_GRPC_METRICS_LOG_APPENDER_PENDING_COUNT, raftPeerId);
     final Gauge gauge = ServerMetricsTestUtils.getGaugeWithName(name, 
grpcServerMetrics::getRegistry);
-    Assert.assertEquals(0, gauge.getValue());
+    Assertions.assertEquals(0, gauge.getValue());
     when(pendingRequest.logRequestsSize()).thenReturn(10);
-    Assert.assertEquals(10, gauge.getValue());
+    Assertions.assertEquals(10, gauge.getValue());
   }
 
   @Test
@@ -133,8 +133,8 @@ public class TestGrpcServerMetrics {
 
   private void assertCounterIncremented(String counterVar, Consumer<String> 
incFunction) {
     String counter = String.format(counterVar, raftPeerId.toString());
-    Assert.assertEquals(0L, ratisMetricRegistry.counter(counter).getCount());
+    Assertions.assertEquals(0L, 
ratisMetricRegistry.counter(counter).getCount());
     incFunction.accept(raftPeerId.toString());
-    Assert.assertEquals(1L, ratisMetricRegistry.counter(counter).getCount());
+    Assertions.assertEquals(1L, 
ratisMetricRegistry.counter(counter).getCount());
   }
 }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/util/GrpcZeroCopyTestServer.java
 
b/ratis-test/src/test/java/org/apache/ratis/grpc/util/GrpcZeroCopyTestServer.java
index 21db98d4c..77e234b3e 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/grpc/util/GrpcZeroCopyTestServer.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/grpc/util/GrpcZeroCopyTestServer.java
@@ -32,7 +32,7 @@ import 
org.apache.ratis.thirdparty.io.grpc.ServerServiceDefinition;
 import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
 import org.apache.ratis.util.IOUtils;
 import org.apache.ratis.util.TraditionalBinaryPrefix;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -117,10 +117,10 @@ class GrpcZeroCopyTestServer implements Closeable {
   void assertCounts(int expectNumElements, long expectNumBytes) {
     LOG.info("ZeroCopyCount    = {}", zeroCopyCount);
     LOG.info("nonZeroCopyCount = {}", nonZeroCopyCount);
-    Assert.assertEquals("zeroCopyCount.getNumElements()", expectNumElements, 
zeroCopyCount.getNumElements());
-    Assert.assertEquals("zeroCopyCount.getNumBytes()", expectNumBytes, 
zeroCopyCount.getNumBytes());
-    Assert.assertEquals("nonZeroCopyCount.getNumElements()", 0, 
nonZeroCopyCount.getNumElements());
-    Assert.assertEquals("nonZeroCopyCount.getNumBytes()", 0, 
nonZeroCopyCount.getNumBytes());
+    Assertions.assertEquals(expectNumElements, zeroCopyCount.getNumElements(), 
"zeroCopyCount.getNumElements()");
+    Assertions.assertEquals(expectNumBytes, zeroCopyCount.getNumBytes()," 
zeroCopyCount.getNumBytes()");
+    Assertions.assertEquals(0, nonZeroCopyCount.getNumElements(), 
"nonZeroCopyCount.getNumElements()");
+    Assertions.assertEquals(0, nonZeroCopyCount.getNumBytes(), 
"nonZeroCopyCount.getNumBytes()");
   }
 
   int start() throws IOException {
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/util/TestGrpcZeroCopy.java 
b/ratis-test/src/test/java/org/apache/ratis/grpc/util/TestGrpcZeroCopy.java
index 032a9c1db..a5f61ee26 100644
--- a/ratis-test/src/test/java/org/apache/ratis/grpc/util/TestGrpcZeroCopy.java
+++ b/ratis-test/src/test/java/org/apache/ratis/grpc/util/TestGrpcZeroCopy.java
@@ -26,8 +26,8 @@ import org.apache.ratis.thirdparty.io.netty.buffer.ByteBuf;
 import org.apache.ratis.thirdparty.io.netty.buffer.PooledByteBufAllocator;
 import org.apache.ratis.util.NetUtils;
 import org.apache.ratis.util.TraditionalBinaryPrefix;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -60,8 +60,8 @@ public final class TestGrpcZeroCopy extends BaseTest {
         random.nextBytes(array);
         final ByteString expected = UnsafeByteOperations.unsafeWrap(array, 0, 
remaining);
         final ByteString computed = b.substring(offset, offset + remaining);
-        Assert.assertEquals(expected.size(), computed.size());
-        Assert.assertEquals(expected, computed);
+        Assertions.assertEquals(expected.size(), computed.size());
+        Assertions.assertEquals(expected, computed);
         offset += remaining;
       }
     }
@@ -99,7 +99,7 @@ public final class TestGrpcZeroCopy extends BaseTest {
   /** Test a zero-copy marshaller is available from the versions of gRPC and 
Protobuf. */
   @Test
   public void testReadiness() {
-    Assert.assertTrue(isReady());
+    Assertions.assertTrue(isReady());
   }
 
 
@@ -134,7 +134,7 @@ public final class TestGrpcZeroCopy extends BaseTest {
     for (int i = 0; i < futures.size(); i++) {
       final String expected = GrpcZeroCopyTestServer.toReply(i, 
messages.get(i));
       final String reply = futures.get(i).get();
-      Assert.assertEquals("expected = " + expected + " != reply = " + reply, 
expected, reply);
+      Assertions.assertEquals(expected, reply, "expected = " + expected + " != 
reply = " + reply);
       server.assertCounts(numElements, numBytes);
     }
   }
@@ -159,8 +159,8 @@ public final class TestGrpcZeroCopy extends BaseTest {
       }
 
       final ByteString reply = future.get();
-      Assert.assertEquals(4, reply.size());
-      Assert.assertEquals(size, reply.asReadOnlyByteBuffer().getInt());
+      Assertions.assertEquals(4, reply.size());
+      Assertions.assertEquals(size, reply.asReadOnlyByteBuffer().getInt());
 
       numElements++;
       numBytes += size;
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/grpc/util/TestStreamObserverWithTimeout.java
 
b/ratis-test/src/test/java/org/apache/ratis/grpc/util/TestStreamObserverWithTimeout.java
index d0c936aa4..b279736f3 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/grpc/util/TestStreamObserverWithTimeout.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/grpc/util/TestStreamObserverWithTimeout.java
@@ -25,8 +25,8 @@ import org.apache.ratis.util.Slf4jUtils;
 import org.apache.ratis.util.StringUtils;
 import org.apache.ratis.util.TimeDuration;
 import org.apache.ratis.util.TimeoutTimer;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 import org.slf4j.event.Level;
 
 import java.util.ArrayList;
@@ -106,7 +106,7 @@ public class TestStreamObserverWithTimeout extends BaseTest 
{
         for (; i < slow; i++) {
           final String expected = (i + warmup) + 
GrpcTestServer.GreeterImpl.toReplySuffix(messages.get(i));
           final String reply = futures.get(i).get();
-          Assert.assertEquals(expected, reply);
+          Assertions.assertEquals(expected, reply);
           LOG.info("{}) passed", (i + warmup));
         }
 
@@ -114,10 +114,10 @@ public class TestStreamObserverWithTimeout extends 
BaseTest {
           final CompletableFuture<String> f = futures.get(i);
           try {
             final String reply = f.get();
-            Assert.fail((i + warmup) + ") reply = " + reply + ", "
+            Assertions.fail((i + warmup) + ") reply = " + reply + ", "
                 + StringUtils.completableFuture2String(f, false));
           } catch (ExecutionException e) {
-             LOG.info("GOOD! {}) {}, {}", (i + warmup), 
StringUtils.completableFuture2String(f, true), e);
+             LOG.info("GOOD! {}) {}", (i + warmup), 
StringUtils.completableFuture2String(f, true), e);
           }
         }
       }
diff --git 
a/ratis-test/src/test/java/org/apache/ratis/netty/TestLeaderElectionWithNetty.java
 
b/ratis-test/src/test/java/org/apache/ratis/netty/TestLeaderElectionWithNetty.java
index f84bbb736..f3b760bf2 100644
--- 
a/ratis-test/src/test/java/org/apache/ratis/netty/TestLeaderElectionWithNetty.java
+++ 
b/ratis-test/src/test/java/org/apache/ratis/netty/TestLeaderElectionWithNetty.java
@@ -19,7 +19,7 @@ package org.apache.ratis.netty;
 
 import org.apache.ratis.server.impl.BlockRequestHandlingInjection;
 import org.apache.ratis.server.impl.LeaderElectionTests;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class TestLeaderElectionWithNetty
     extends LeaderElectionTests<MiniRaftClusterWithNetty>

Reply via email to